## Обзор {#overview}

Adal ограниченное время хранит принятые вебхуки, чтобы их можно было просматривать, доставлять настроенным получателям, отправлять повторно и изучать историю доставки.

У каждого сервера есть регион и срок хранения, определяемый тарифом. Данные принятого запроса хранятся до окончания его индивидуального срока.

Удаление сервера немедленно останавливает приём и удаляет получателей. Ранее принятые запросы сохраняются до запланированной даты удаления.

Здесь описано, что хранит Adal, как обрабатываются отклонённые запросы, как работает срок хранения и что происходит при удалении данных.

## Что хранит Adal {#what-adal-stores}

Adal хранит данные, необходимые для приёма и доставки вебхуков, истории запросов и доступа к аккаунту.

### Запросы вебхуков

Для каждого принятого запроса Adal хранит:

- полный URI с путём и строкой запроса;
- заголовки;
- тело;
- IP-адрес отправителя;
- дату и время получения;
- принявший сервер;
- попытки доставки и их результаты, включая статус или ошибку, например `200 OK` или `404 Not Found`.

Версия HTTP отдельно не хранится. User-Agent сохраняется в составе заголовков запроса.

Adal не хранит заголовки и тела ответов получателей, а также отдельные сведения о TLS и IP прокси.

### Серверы

Для каждого сервера Adal хранит:

- выбранный регион;
- название;
- URL приёма;
- разрешённые HTTP-методы;
- примечания пользователя;
- хеш токена Adal CLI.

Исходный токен CLI не хранится. При подключении переданный токен хешируется и сравнивается с хешем.

### Получатели

Для каждого получателя Adal хранит:

- связь с сервером;
- регион связанного сервера;
- тип доставки: Direct HTTP или Adal CLI;
- указанный пользователем URL;
- максимальное число попыток;
- интервал доставки;
- примечания.

### Данные аккаунта

Для каждого аккаунта Adal хранит:

- дату регистрации;
- адрес электронной почты;
- имя пользователя;
- хеш пароля при аутентификации по почте и паролю.

Для аккаунта через Google или GitHub сохраняются поставщик идентификации и переданные им данные.

### Аутентификация и сессии

Для поддержки сессий Adal хранит refresh-токены в зашифрованном виде.

Временные access-токены действуют пять минут, используются для доступа к данным аккаунта и не хранятся как долгосрочные учётные данные сессии.

## Что Adal не хранит {#what-adal-does-not-store}

Adal не хранит данные, которые не нужны для приёма, доставки и просмотра вебхуков.

Adal не хранит:

- пароли в исходном виде;
- токены Adal CLI в исходном виде;
- версию HTTP как отдельное поле;
- заголовки и тела ответов получателей;
- сведения о TLS-соединении;
- IP прокси как отдельные метаданные;
- `User-Agent` как отдельное поле, поскольку он входит в сохранённые заголовки.

Для отклонённых запросов сохраняются только время, HTTP-метод и причина отказа, без URI, заголовков, тела и IP отправителя.

Adal не получает и не хранит полные данные платёжных карт. Платежи обрабатывает платёжный провайдер.

## Отклонённые запросы {#rejected-requests}

Adal отклоняет запрос, если он не соответствует требованиям сервера или аккаунта.

Запрос может быть отклонён, если:

- HTTP-метод не разрешён;
- размер превышает лимит тарифа;
- у аккаунта нет кредитов;
- сервер удалён или недоступен;
- обработке мешает ошибка проверки или сервиса.

Для устранения неполадок сохраняются только:

- дата и время отказа;
- HTTP-метод;
- причина отказа.

URI, заголовки, тело, IP отправителя и данные доставки не сохраняются.

Отклонённые запросы не доставляются, не отправляются повторно и не расходуют кредиты.

## Где хранятся данные {#where-data-is-stored}

Данные запросов хранятся в выбранном для сервера регионе.

Метаданные и сведения о доставке остаются в регионе приёма. Тела находятся в объектном хранилище, ограниченном юрисдикцией этого региона.

Например, метаданные запроса сервера в `se1` остаются в Швеции, а тело — в хранилище, ограниченном Западной Европой.

### Тела запросов

Тела хранятся в объектном хранилище Cloudflare R2.

Для регионов используются отдельные бакеты R2:

- Швеция и Германия — хранилище в Западной Европе;
- Казахстан — хранилище в Азиатско-Тихоокеанском регионе.

У каждого бакета отдельные учётные данные; сервисы имеют доступ только к бакету своего региона.

### Метаданные запросов и доставки

Метаданные хранятся в управляемых Adal базах данных в регионе сервера.

В том числе:

- URI, заголовки, IP отправителя и время получения;
- статус и срок хранения;
- попытки, статусы и ошибки доставки;
- региональные записи получателей и их настройки.

Данные получателя хранятся только в регионе связанного сервера.

### Централизованные записи серверов

Ограниченная часть настроек хранится централизованно, а не в региональной базе запросов.

В том числе:

- название сервера;
- URL приёма;
- хеш токена Adal CLI;
- примечания.

Централизованные записи не содержат тела, URI, заголовки, IP отправителя, историю доставки и получателей.

### Статистика использования

Adal централизованно собирает ограниченную статистику для расчёта использования и отображения в аккаунте.

Она не содержит тела, URI, заголовки, IP отправителя, идентификаторы и настройки получателей.

Например, может фиксироваться расход одного кредита сервером или общий расход региона за период.

## Срок хранения {#retention-period}

Принятые запросы хранятся ограниченный срок, определяемый тарифом.

Срок начинается с момента принятия запроса.

У каждого запроса своя дата удаления, указанная на его странице в панели Adal.

После окончания срока Adal безвозвратно удаляет запрос, включая тело, URI, заголовки, IP, историю и записи попыток доставки.

Такие запросы нельзя восстановить, отправить или доставить повторно.

## Удаление сервера {#deleting-an-server}

Удаление сервера немедленно прекращает приём новых запросов.

Adal использует мягкое удаление: сервер исчезает из панели и больше не работает, но его URL навсегда остаётся зарезервированным и не выдаётся другому аккаунту.

Это не позволяет удалённому URL впоследствии принять вебхуки, предназначенные прежнему владельцу.

При удалении сервера:

- прекращается приём новых запросов;
- все получатели удаляются безвозвратно;
- ожидающие доставки отменяются;
- попытки и связанные данные доставки удаляются;
- сервер исчезает из панели и не используется для новых доставок.

Сохранённые запросы не удаляются сразу и остаются до окончания индивидуального срока хранения.

Пока запросы хранятся, поддержка Adal может восстановить сервер по обращению. Восстановление возможно только до истечения срока и не возвращает получателей, попытки и безвозвратно удалённые данные.

После окончания срока оставшиеся данные удаляются безвозвратно.

## Ограничения размера запроса {#request-size-limits}

Максимальный размер зависит от тарифа. Лимиты указаны на [странице тарифов](/pricing).

Adal рассчитывает размер всего входящего запроса:

```text
размер запроса = размер URI + размер заголовков + размер тела
```

Ограничение применяется ко всему запросу, а не только к телу.

Если лимит превышен, Adal отклоняет запрос до сохранения содержимого. Он не доставляется и не расходует кредиты.

После повышения тарифа новый лимит действует только для последующих запросов. Ранее отклонённые запросы не сохраняются и не восстанавливаются автоматически.

## Безопасность и доступ {#security-and-access}

Доступ защищён аутентификацией, краткосрочными учётными данными, шифрованием соединений и изоляцией региональных хранилищ.

### Доступ к аккаунту

Каждый аккаунт Adal связан с подтверждённым адресом электронной почты.

При регистрации по почте и паролю необходимо подтвердить адрес до входа в панель.

Аккаунты через Google или GitHub используют данные, предоставленные выбранным провайдером.

Данные доступны только аккаунту — владельцу сервера. Аккаунт не может получить доступ к серверам, запросам, получателям и доставкам другого аккаунта.

### Учётные данные и сессии

Adal не хранит пароли и токены Adal CLI в исходном виде.

- пароли хранятся как хеши;
- токены Adal CLI хешируются и проверяются сравнением хешей;
- refresh-токены хранятся в зашифрованном виде;
- access-токены действуют пять минут.

### Зашифрованные соединения

Все соединения с Adal шифруются при передаче:

- панель и API используют HTTPS;
- Adal CLI — WSS или gRPC с TLS в зависимости от типа;
- внутренние сервисы используют TLS там, где это применимо.

### Содержимое запросов и журналы

Операционное журналирование Adal намеренно сведено к минимуму.

Тела, заголовки, URI, IP отправителей и другое содержимое не попадают в обычные журналы. Записываются только операционные и критические ошибки, необходимые для анализа сбоев.

### Доступ к региональным хранилищам

Тела хранятся в отдельных региональных бакетах. У каждого региона собственные учётные данные, ограниченные назначенным ему хранилищем.

Региональные сервисы не используют общие учётные данные с доступом ко всем регионам.

### Доступ оператора сервиса

В Adal нет внутренней административной панели для просмотра запросов клиентов.

Оператор может иметь прямой доступ к инфраструктуре для обслуживания, защиты и устранения неполадок. Он недоступен другим пользователям и не применяется для рекламы, профилирования или посторонних целей.

Двухфакторная аутентификация для аккаунтов Adal пока недоступна.
