Полный аудит IAM в 2026 году строят как непрерывный контур: система собирает события аутентификации, авторизации и административных действий, передает их в централизованное хранилище, находит подозрительные шаблоны и сохраняет доказательства для проверки.
Минимальный поток выглядит так: IAM-сервис формирует структурированные события, агент или API-шлюз передает их в ELK Stack либо Grafana Loki, после чего правила корреляции создают алерты. В каждое событие включают время в UTC, идентификатор пользователя, результат операции, источник запроса, ресурс, способ MFA, request ID и признак изменения привилегий.
Для обнаружения брутфорс-атак нужны счетчики неудачных входов, а для поиска доступа с нехарактерных локаций, IP-адрес, страна, автономная система, часовой пояс и история обычных входов пользователя. Отдельный отчетный слой показывает, кто получил доступ, кто изменил права, какие события расследовали и какие меры приняли. Такая схема помогает готовить подтверждения для GDPR и PCI DSS без ручного поиска по разрозненным журналам.
1. Что такое файлы cookie
Cookie, это небольшая запись, которую браузер сохраняет для конкретного сайта. В IAM-портале cookie часто содержит идентификатор сессии или признак прохождения промежуточного шага входа. Сам пароль в cookie хранить нельзя.
Значение сессионной cookie нужно считать секретом уровня bearer-токена. Получив ее, злоумышленник может использовать уже открытую сессию, пока сервер не отзовет токен или пока не закончится его срок жизни. Поэтому значение cookie не попадает в логи браузера, reverse proxy, ELK Stack или Grafana Loki.
Для сессионной cookie задают четыре базовых свойства:
- Secure, браузер отправляет cookie только по защищенному соединению;
- HttpOnly, JavaScript не читает значение через API браузера;
- SameSite, браузер ограничивает отправку cookie в межсайтовых запросах;
- Max-Age или Expires, сервер задает срок жизни записи.
После успешного входа идентификатор сессии нужно менять. Такая ротация закрывает риск фиксации сессии. Идентификатор меняют после повышения привилегий, включения MFA и восстановления доступа. При выходе из учетной записи сервер отзывает сессию, а не полагается только на удаление cookie в браузере.
В аудит попадает факт выдачи, обновления и отзыва сессии. Пример минимального события:
event.category=authentication outcome=success user.id=42 session.action=issued mfa.method=webauthn request.id=7f31
Для расследования этого достаточно, если в отдельном защищенном хранилище можно связать событие с серверной записью сессии. Сам токен в журнале не нужен.
2. Какие cookie использует сайт
Состав cookie зависит от архитектуры IAM-портала. В изолированной административной панели обычно нужны сессионная cookie, временная cookie для MFA и токен защиты межсайтовых запросов. Функция запоминания устройства добавляет отдельный долгоживущий идентификатор, который требует особого контроля.
Перед настройкой аудита составьте реестр cookie для каждого домена, поддомена и пути. Для каждой записи зафиксируйте название, назначение, владельца, срок жизни, область действия, флаги безопасности и событие, после которого запись отзывается.
- Сессионная cookie связывает браузер с серверной сессией. Ее срок бездействия часто задают в пределах 15-30 минут для привилегированных панелей, а абсолютный срок ограничивают 8-12 часами.
- Pre-auth cookie хранит временное состояние между вводом пароля и прохождением второго фактора. Она должна жить несколько минут и терять силу после успешной проверки MFA.
- Cookie доверенного устройства позволяет не запрашивать MFA при каждом входе. Для нее нужны привязка к устройству, ручной отзыв и отдельный журнал выдачи.
- CSRF-cookie участвует в проверке происхождения опасного запроса. Ее значение нельзя путать с идентификатором сессии и нельзя принимать без серверной проверки.
- Аналитическая cookie относится к телеметрии сайта, а не к контролю доступа. Она не должна влиять на решение IAM о допуске пользователя.
В событии IAM фиксируют тип операции и технический идентификатор сессии в обезличенном виде. Полное значение cookie исключают из полей, которые агент отправляет в централизованные логи. Проверьте это отдельно в access log, debug log, трассировке reverse proxy и логах браузерного приложения.
Когда вход проходит через несколько компонентов, каждому звену присваивают собственный request ID. Иначе событие выдачи MFA, успешная авторизация и открытие административной страницы будут выглядеть как несвязанные записи.
3. Перечень используемых файлов cookie
Ниже приведен пример реестра для IAM-портала. Названия условные, поскольку конкретный продукт может использовать другие ключи. Таблица показывает, какие свойства проверять при аудите.
| Тип | Назначение | Риск | Минимальный контроль |
|---|---|---|---|
iam_session | Активная сессия пользователя | Кража дает доступ в пределах прав учетной записи | Secure, HttpOnly, SameSite, ротация после входа, отзыв на сервере |
iam_pre_auth | Состояние незавершенного входа и MFA | Повторное использование незавершенной попытки | TTL 3-5 минут, одноразовость, привязка к браузеру и запросу |
iam_device | Признак доверенного устройства | Обход MFA после компрометации устройства | Короткий список доверенных устройств, отзыв, повторная проверка при смене IP или риска |
csrf_token | Защита изменяющих состояние запросов | Подмена запроса из другого источника | Проверка токена и Origin, отдельная ротация после входа |
analytics_id | Обезличенная статистика посещений | Утечка идентификаторов или лишних параметров | Отдельный домен, минимизация данных, согласие пользователя, запрет передачи логина |
Аудит реестра выполняют при каждом изменении схемы входа. Сверьте фактический ответ сервера с настройками приложения:
Set-Cookie: iam_session=REDACTED; Path=/; Secure; HttpOnly; SameSite=Lax
Поле `Set-Cookie` проверяют в тестовой среде и на рабочем прокси. Частая ошибка возникает, когда приложение выставляет Secure, а reverse proxy считает вход незашифрованным из-за потерянного заголовка о внешнем соединении. В итоге cookie не сохраняется, пользователь получает повторный запрос входа, а в IAM появляются серии неудачных сессий.
Для ELK Stack полезно привести записи к единой схеме ECS или к внутреннему набору полей. Базовый запрос для первичной проверки выглядит так:
event.category:authentication AND outcome:failure AND user.id:*
В Grafana Loki сохраняйте JSON-структуру сообщения и выносите в labels только поля с низкой кардинальностью, например приложение, окружение и тип события. user ID, IP и request ID лучше оставлять внутри JSON, иначе индекс быстро разрастается.
4. Яндекс Метрика
Яндекс Метрика не относится к механизму выдачи прав и не должна получать пароль, access token, содержимое административных форм, email сотрудника или внутренний идентификатор учетной записи. Если аналитика подключена к странице входа или к панели управления, отделите ее от security-аудита.
Для счетчика задайте отдельный набор событий: открытие страницы, ошибка интерфейса, переход к форме восстановления. Не отправляйте туда результат проверки политики доступа, название закрытого ресурса и подробности отказа. Эти данные оставляют в IAM-журнале с контролем доступа.
Cookie аналитики учитывают в реестре отдельно от сессионных cookie. Проверьте согласие пользователя, срок хранения, область домена и отсутствие передачи параметров, по которым можно восстановить личность сотрудника. Для диагностики нагрузки пригодится практический разбор нагрузки Яндекс Метрики, но его рекомендации не заменяют аудит IAM.
При проверке журналов сравните три потока:
- событие входа в IAM;
- запрос браузера к странице после авторизации;
- аналитическое событие, если оно разрешено политикой приватности.
Второй и третий потоки не должны раскрывать значение сессионной cookie. Для этого включите маскирование заголовка Cookie в reverse proxy и запретите отладочный вывод заголовков на рабочем окружении.
5. Как управлять файлами cookie
Управление cookie начинается с матрицы сессий. Для каждой роли укажите допустимый простой, абсолютный срок, необходимость MFA, условия повторной проверки и список событий, которые немедленно отзывают сессию.
- Администратор получает короткий срок бездействия и повторный MFA перед изменением ролей, политик и ключей.
- Оператор получает доступ только к назначенным ресурсам, а его сессия не должна расширять права после изменения группы.
- Сервисная учетная запись не использует браузерную cookie. Для нее применяют короткоживущий токен, секретное хранилище и отдельный аудит.
Проверьте поведение сессии через DevTools и командную строку. Значение cookie в выводе заменяйте на `REDACTED`:
curl -c /tmp/iam.cookies -b /tmp/iam.cookies IAM_ENDPOINT/login
curl -I -b /tmp/iam.cookies IAM_ENDPOINT/admin
Проверка должна подтвердить выдачу новой cookie после входа, отказ по истекшей сессии, отзыв после выхода и запрет доступа к административному пути без нужной роли. Тестируйте каждое состояние отдельно. Иначе успешный ответ из кэша может скрыть ошибку авторизации.
Reverse proxy не должен кэшировать ответы, содержащие Set-Cookie или персональные данные. В access log маскируйте заголовок Cookie, Authorization и параметры восстановления пароля. Для сопоставления запросов используйте request ID. Готовые приемы поиска ошибок, сканирования и подозрительных запросов собраны в материале о практическом анализе логов Nginx и Apache.
При ошибках 401, 403 и 302 сначала сопоставьте браузерную сессию, запись IAM, ответ proxy и решение политики. Отдельный чеклист по cookies, CSRF, Authorization и reverse proxy есть в руководстве о проверке сессий при ошибке аутентификации.
Для изолированного тестового контура можно использовать облачный сервер, например Timeweb Cloud. Размещайте там только обезличенные логи и тестовые учетные записи. Рабочие токены, реальные персональные данные и ключи доступа в учебный стенд не копируют.
6. Правовые основания и сроки
GDPR не задает единый срок хранения всех IAM-логов. Срок связывают с конкретной целью, риском, договорными обязанностями и сроком расследования инцидентов. В политике хранения укажите категории данных, срок, владельца, условия продления и порядок удаления.
IAM-журнал часто содержит персональные данные: имя учетной записи, IP-адрес, географию, сведения об устройстве и историю действий. Ограничьте доступ к логам, ведите аудит чтения и скрывайте поля, которые не нужны для расследования. Сотрудник, который ищет ошибки входа, не всегда должен видеть содержимое административных изменений.
Для PCI DSS 4.0.1 audit logs хранят минимум 12 месяцев, при этом записи минимум за последние 3 месяца должны быть сразу доступны для анализа. До запуска отчета проверьте фактическую глубину хранения в Elasticsearch, Loki и резервных копиях. Индекс с коротким сроком жизни не закрывает требование, если архив нельзя быстро поднять и проверить его целостность.
| Контроль | Что показать аудитору | Проверка |
|---|---|---|
| Успешный и неуспешный вход | События с пользователем, временем, источником и результатом | Выборка за период и сверка с IAM |
| Изменение привилегий | Кто, когда и какую роль изменил, старое и новое значение | Тестовое изменение и запись до/после |
| Доступ к защищенному ресурсу | Ресурс, решение политики, субъект и request ID | Проверка разрешенного и запрещенного сценария |
| Защита журналов | Список владельцев, права чтения, срок хранения и резервная копия | Проверка ролей и тест восстановления |
| Реакция на инцидент | Алерт, время подтверждения, исполнитель и результат расследования | Контрольная тревога и карточка инцидента |
Отчет за период должен содержать границы времени в UTC, перечень подключенных IAM-систем, объем полученных событий, число отброшенных записей, ошибки доставки, срабатывания алертов и список исключений. Для каждого критичного события сохраните исходную запись, хеш или иной контроль целостности, комментарий расследователя и ссылку на внутренний идентификатор инцидента. Внешние URL в отчет не включайте, если они не нужны для доказательства.
Перед проверкой экспортируйте тестовый отчет и ответьте на четыре вопроса: все ли источники передали события, можно ли доказать неизменность записи, видит ли аудитор нужный период и понятно ли, кто закрыл каждую тревогу.
Мы с вами свяжемся
Для IAM-команды этот раздел означает маршрут уведомления. Критичное событие должно попасть к ответственному инженеру, получить подтверждение и перейти в карточку инцидента. Одного сообщения в общий канал недостаточно.
В полезную нагрузку алерта включите:
- уровень серьезности и название правила;
- пользователя, роль и защищенный ресурс;
- время первого и последнего события;
- число повторов и окно агрегации;
- IP, страну, автономную систему и признак новой локации;
- request ID, идентификатор правила и состояние расследования.
Начальные пороги нужно менять после сбора базовой линии. Практичная стартовая настройка выглядит так:
| Сценарий | Стартовое правило | Реакция |
|---|---|---|
| Брутфорс одной учетной записи | 10 неудачных входов за 5 минут | Алерт высокой серьезности, временная блокировка по политике |
| Брутфорс с одного источника | 50 неудачных входов для разных учетных записей за 5 минут | Алерт высокой серьезности, проверка IP и rate limit |
| Успешный вход из нехарактерной локации | Новая страна плюс новый device fingerprint или резкая смена географии | Повторный MFA, проверка пользователем, расследование |
| Изменение роли администратора | Любое изменение вне согласованного окна | Критичный алерт и ручное подтверждение |
| Отключение MFA | Любое действие для привилегированной учетной записи | Критичный алерт, отзыв активных сессий |
Порог по географии не должен блокировать пользователя автоматически при одном отличии страны. Мобильная сеть, корпоративный VPN и прокси дают ложные срабатывания. Для решения используйте несколько признаков: успешность MFA, известное устройство, скорость перемещения, история IP и чувствительность ресурса.
В ELK Stack правила можно строить по нормализованным полям, а для Grafana Loki удобно применять LogQL и передавать результат в Alertmanager. Дедупликация должна объединять повторные события по пользователю, источнику и правилу. У каждого алерта задайте время повторного уведомления, срок эскалации и условие закрытия.
Почему Kraken просит аутентификатор: выбор между безопасностью и доступом
Запрос аутентификатора при входе в Kraken или другой защищенный сервис обычно означает, что сработала политика MFA или проверка риска. Причиной может быть новое устройство, новая локация, истекшая сессия, изменение сетевого маршрута или действие с повышенными правами. Отключать MFA ради быстрого входа нельзя: сначала найдите событие, которое вызвало проверку.
Проверяйте проблему в строгом порядке:
- Сопоставьте время запроса, пользователя, IP, user agent и request ID в IAM-логах.
- Убедитесь, что сервер и устройство синхронизированы по времени. Для TOTP даже заметный сдвиг часов приводит к отказу кода.
- Проверьте, создана ли pre-auth сессия и не истекла ли она за время ввода кода.
- Сравните cookie до и после MFA. После успешного шага должна появиться новая полноценная сессия.
- Проверьте заголовки reverse proxy, путь callback и сохранение Set-Cookie.
- Сверьте решение политики: пользователь должен иметь право на выбранный метод MFA и целевой ресурс.
- Проверьте повторные попытки и блокировку. Ошибка MFA не должна превращаться в бесконечный цикл запросов.
| Симптом | Вероятная причина | Что проверить |
|---|---|---|
| Код принимается, но снова появляется форма MFA | Не сохранилась pre-auth или полноценная cookie | Set-Cookie, Secure, SameSite, путь cookie и настройки proxy |
| Код всегда отклоняется | Сдвиг времени или неверная привязка устройства | NTP, часовой пояс, секрет MFA и запись события отказа |
| Запрос появился после смены сети | Сработала политика нового источника | История IP, география, VPN и риск-сигналы |
| После входа получен 403 | Аутентификация прошла, авторизация не разрешила ресурс | Роль, policy decision, область действия группы и журнал изменения прав |
| Пользователь видит 401 после простоя | Сессия отозвана или истек срок бездействия | TTL, событие отзыва, refresh-механику и серверное состояние сессии |
Итоговая проверка IAM перед переводом в рабочий режим:
- определены источники событий аутентификации, авторизации и администрирования;
- все записи приходят в ELK Stack или Grafana Loki в единой схеме;
- значения cookie, токенов и паролей удаляются из логов;
- настроены правила для брутфорса, новых локаций, MFA и смены ролей;
- алерты доходят до ответственных и имеют процедуру подтверждения;
- логи защищены от изменения и доступны за нужный срок;
- отчет содержит источники, период, исключения, инциденты и доказательства реакции;
- тесты 401, 403, истекшей сессии, отзыва токена и повторного MFA пройдены отдельно;
- политика хранения учитывает GDPR, PCI DSS и фактические требования организации;
- после изменения IAM-конфигурации повторно проверены сбор логов и алерты.
Такой порядок связывает технический контроль с проверяемыми доказательствами. Инженер видит, почему доступ разрешен или отклонен, команда безопасности получает сигнал с контекстом, а аудитор получает воспроизводимый отчет.