Обзор
Для принятых вебхуков Adal поддерживает два режима: постоянное хранение и временная доставка без постоянного хранения.
В режиме постоянного хранения метаданные Request и данные Delivery записываются в региональную базу данных, а тело — в региональное объектное хранилище Cloudflare R2. Request доступен для просмотра, ручного повтора, Replay и других поддерживаемых действий до окончания retention или более раннего удаления Server.
В режиме временной доставки Request не записывается в базу данных или R2. Adal держит его только в памяти Redis, пока доставляет его в Destinations Server, а затем удаляет по правилам, описанным ниже.
Удаление Server немедленно останавливает приём и запускает удаление его Destinations, принятых Requests, сохранённого содержимого, метаданных и истории Delivery. Обычно удаление завершается быстро, но при большом количестве Requests может занять несколько секунд. Данные не сохраняются до ранее запланированных дат удаления.
Здесь описаны оба режима, обработка отклонённых запросов, правила retention и удаление данных.
Что хранит Adal
Состав данных Request, которые хранит Adal, зависит от режима хранения Server. Данные аккаунта и конфигурация Server и Destination хранятся отдельно от принятых Requests.
Запросы вебхуков
В режиме постоянного хранения Adal сохраняет для каждого принятого Request:
полный URI с путём и строкой запроса;
заголовки;
тело;
IP-адрес отправителя;
дату и время получения;
принявший сервер;
попытки доставки и их результаты, включая статус или ошибку, например
200 OKили404 Not Found.
Версия HTTP отдельно не хранится. User-Agent сохраняется в составе заголовков запроса.
В режиме временной доставки те же входящие данные могут временно находиться в памяти для выполнения Deliveries, но не записываются в базу данных или R2 и не сохраняются как история Requests. Ни в одном режиме Adal не хранит заголовки и тела ответов Destination, а также отдельные сведения о TLS и IP прокси.
Серверы
Для каждого сервера Adal хранит:
выбранный регион;
название;
URL приёма;
разрешённые HTTP-методы;
примечания пользователя;
хеш токена Adal CLI.
Исходный токен CLI не хранится. При подключении переданный токен хешируется и сравнивается с хешем.
Получатели
Для каждого получателя Adal хранит:
связь с сервером;
регион связанного сервера;
тип доставки: Direct HTTP или Adal CLI;
указанный пользователем URL;
максимальное число попыток;
интервал доставки;
примечания.
Данные аккаунта
Для каждого аккаунта Adal хранит:
дату регистрации;
адрес электронной почты;
имя пользователя;
хеш пароля при аутентификации по почте и паролю.
Для аккаунта через Google или GitHub сохраняются поставщик идентификации и переданные им данные.
Аутентификация и сессии
Для поддержки сессий Adal хранит refresh-токены в зашифрованном виде.
Временные access-токены действуют пять минут, используются для доступа к данным аккаунта и не хранятся как долгосрочные учётные данные сессии.
Что Adal не хранит
Adal не хранит данные, которые не нужны для приёма, доставки и просмотра вебхуков.
Adal не хранит:
пароли в исходном виде;
токены Adal CLI в исходном виде;
версию HTTP как отдельное поле;
заголовки и тела ответов получателей;
сведения о TLS-соединении;
IP прокси как отдельные метаданные;
User-Agentкак отдельное поле, поскольку он входит в сохранённые заголовки.
Для отклонённых запросов сохраняются только время, HTTP-метод и причина отказа, без URI, заголовков, тела и IP отправителя.
Adal не получает и не хранит полные данные платёжных карт. Платежи обрабатывает платёжный провайдер.
Отклонённые запросы
Adal отклоняет запрос, если он не соответствует требованиям сервера или аккаунта.
Запрос может быть отклонён, если:
HTTP-метод не разрешён;
размер превышает лимит тарифа;
у аккаунта нет кредитов;
сервер удалён или недоступен;
обработке мешает ошибка проверки или сервиса.
Для устранения неполадок сохраняются только:
дата и время отказа;
HTTP-метод;
причина отказа.
URI, заголовки, тело, IP отправителя и данные доставки не сохраняются.
Отклонённые запросы не доставляются, не отправляются повторно и не расходуют кредиты.
Где хранятся данные
Данные Requests обрабатываются в выбранном для Server регионе.
В режиме постоянного хранения метаданные и сведения о Delivery остаются в регионе приёма. Тела находятся в объектном хранилище, ограниченном юрисдикцией этого региона.
Например, метаданные запроса сервера в se1 остаются в Швеции, а тело — в хранилище, ограниченном Западной Европой.
Тела запросов
Постоянно сохраняемые тела Requests хранятся в объектном хранилище Cloudflare R2.
Для регионов используются отдельные бакеты R2:
Швеция и Германия — хранилище в Западной Европе;
Казахстан — хранилище в Азиатско-Тихоокеанском регионе.
У каждого бакета отдельные учётные данные; сервисы имеют доступ только к бакету своего региона.
Метаданные запросов и доставки
В режиме постоянного хранения метаданные находятся в управляемых Adal базах данных в регионе Server.
В том числе:
URI, заголовки, IP отправителя и время получения;
статус и срок хранения;
попытки, статусы и ошибки доставки;
региональные записи получателей и их настройки.
Данные получателя хранятся только в регионе связанного сервера.
Временная доставка в Redis
В режиме временной доставки Adal не записывает принятый Request или его состояние Delivery в региональную базу данных либо Cloudflare R2. Полный Request временно находится в памяти Redis в регионе Server только пока он нужен для автоматических Deliveries и повторных попыток.
Работа с каждым Destination отслеживается независимо. Она завершается, когда Destination возвращает успешный ответ 2xx или исчерпываются настроенные для него попытки. Если Destination A уже получил Request, а для Destination B ещё ожидается попытка или повтор, Request остаётся в памяти для Destination B.
Adal удаляет полный временный Request и его временное состояние Delivery, когда работа завершена для всех Destinations либо раньше истёк временный retention Request. Если срок истёк первым, оставшиеся ожидающие Deliveries и повторы прекращаются. После удаления Request нельзя просмотреть, вручную повторить, использовать для Replay, восстановить или иначе использовать через Adal.
Временные данные Request не записываются в резервные копии и обычные журналы приложения. Ограниченные записи об использовании аккаунта, оплате, безопасности и предотвращении злоупотреблений могут сохраняться, но не содержат URI, заголовки, тело, IP-адрес отправителя, конфигурацию Destination или историю Delivery.
Централизованные записи серверов
Ограниченная часть настроек хранится централизованно, а не в региональной базе запросов.
В том числе:
название сервера;
URL приёма;
хеш токена Adal CLI;
примечания.
Централизованные записи не содержат тела, URI, заголовки, IP отправителя, историю доставки и получателей.
Статистика использования
Adal централизованно собирает ограниченную статистику для расчёта использования и отображения в аккаунте.
Она не содержит тела, URI, заголовки, IP отправителя, идентификаторы и настройки получателей.
Например, может фиксироваться расход одного кредита сервером или общий расход региона за период.
Срок хранения
В режиме постоянного хранения принятые Requests хранятся ограниченный срок, определяемый тарифом и конфигурацией Server.
Срок начинается с момента принятия запроса.
У каждого запроса своя дата удаления, указанная на его странице в панели Adal.
После окончания срока Adal безвозвратно удаляет Request, включая тело, URI, заголовки, IP, историю и записи попыток Delivery.
Такие Requests нельзя восстановить, отправить или доставить повторно.
В режиме временной доставки retention задаёт максимальную продолжительность нахождения Request в памяти, а не гарантированный срок доступности. Adal удаляет Request раньше, как только Deliveries во все Destinations успешно завершились или исчерпали попытки.
Удаление Server
Удаление Server немедленно прекращает приём новых запросов.
Adal использует мягкое удаление для резервирования URL: Server исчезает из панели и больше не работает, но его URL навсегда остаётся зарезервированным и не выдаётся другому аккаунту.
Это не позволяет удалённому URL впоследствии принять вебхуки, предназначенные прежнему владельцу.
При удалении Server:
прекращается приём новых запросов;
все Destinations удаляются безвозвратно;
ожидающие Deliveries отменяются;
ранее принятые Requests и их сохранённое содержимое удаляются безвозвратно;
метаданные Requests, попытки, история Delivery и данные Replay удаляются безвозвратно;
Server исчезает из панели и не используется для новых Deliveries.
Обычно удаление завершается быстро, но при большом количестве Requests может занять несколько секунд. Пока удаление выполняется, Server остаётся неактивным, а его данные нельзя просматривать, доставлять, повторять или использовать для Replay через Сервис.
Удаление Server отменяет запланированные даты удаления его Requests. Adal не продолжает хранить эти Requests до окончания первоначального срока хранения.
Удалённый Server и его данные восстановить нельзя. URL приёма навсегда остаётся зарезервированным и не выдаётся другому аккаунту.
Ограничения размера запроса
Максимальный размер зависит от тарифа. Лимиты указаны на странице тарифов.
Adal рассчитывает размер всего входящего запроса:
размер запроса = размер URI + размер заголовков + размер тела
Ограничение применяется ко всему запросу, а не только к телу.
Если лимит превышен, Adal отклоняет запрос до сохранения содержимого. Он не доставляется и не расходует кредиты.
После повышения тарифа новый лимит действует только для последующих запросов. Ранее отклонённые запросы не сохраняются и не восстанавливаются автоматически.
Безопасность и доступ
Доступ защищён аутентификацией, краткосрочными учётными данными, шифрованием соединений, региональной изоляцией и шифрованием постоянно хранимых чувствительных данных.
Доступ к аккаунту
Каждый аккаунт Adal связан с подтверждённым адресом электронной почты.
При регистрации по почте и паролю необходимо подтвердить адрес до входа в панель.
Аккаунты через Google или GitHub используют данные, предоставленные выбранным провайдером.
Данные доступны только аккаунту — владельцу сервера. Аккаунт не может получить доступ к серверам, запросам, получателям и доставкам другого аккаунта.
Учётные данные и сессии
Adal не хранит пароли и токены Adal CLI в исходном виде.
пароли хранятся как хеши;
токены Adal CLI хешируются и проверяются сравнением хешей;
refresh-токены хранятся в зашифрованном виде;
access-токены действуют пять минут.
Зашифрованные соединения
Все соединения с Adal шифруются при передаче:
панель и API используют HTTPS;
Adal CLI — WSS или gRPC с TLS в зависимости от типа;
внутренние сервисы используют TLS там, где это применимо.
Содержимое запросов и журналы
Операционное журналирование Adal намеренно сведено к минимуму.
Тела, заголовки, URI, IP отправителей и другое содержимое не попадают в обычные журналы. Записываются только операционные и критические ошибки, необходимые для анализа сбоев.
Доступ к региональным хранилищам
Тела хранятся в отдельных региональных бакетах. У каждого региона собственные учётные данные, ограниченные назначенным ему хранилищем.
Региональные сервисы не используют общие учётные данные с доступом ко всем регионам.
Доступ оператора сервиса
В Adal нет внутренней административной панели для просмотра запросов клиентов.
Оператор может иметь прямой доступ к инфраструктуре для обслуживания, защиты и устранения неполадок. Он недоступен другим пользователям и не применяется для рекламы, профилирования или посторонних целей.
Двухфакторная аутентификация для аккаунтов Adal пока недоступна.