Skip to main content

Обзор

Yahont формирует нормализованный структурированный поток событий аудита для действий, важных для безопасности: аутентификации, изменений пользователей и управления доступом, изменений административной конфигурации и доступа к учётным данным. Каждое событие — один объект JSON, поэтому поток можно передать в любой SIEM — Splunk, Microsoft Sentinel, Elastic, Google Chronicle, AWS Security Lake — без разработки интеграции на стороне Yahont. Вы направляете свой сборщик журналов на журналы Yahont, фильтруете поток аудита и разбираете JSON. Имена полей и таксономия действий построены по образцу OCSF (Open Cybersecurity Schema Framework), поэтому события легко сопоставляются с классами событий, которые уже понимает большинство SIEM.

Что фиксируется

Успешный вход, неудачный вход, выход, регистрация, запрос восстановления пароля, сброс пароля и подтверждение адреса электронной почты.
Создание пользователей (приглашения администратором), удаление, деактивация, реактивация, изменение ролей и изменение состава групп пользователей.
Создание, изменение и удаление поставщиков LLM, коннекторов, пар «коннектор — учётные данные», API-ключей и учётных данных, а также события доступа к учётным данным (расшифровки).
Каждое событие фиксирует, кто что сделал, с каким ресурсом, когда, откуда и успешно ли — основу журнала аудита.

Как это работает

События аудита записываются как записи INFO в отдельный логгер onyx.audit. Тело каждой записи — один объект JSON; Yahont сам сериализует событие, поэтому строка аудита одинакова независимо от формата ваших журналов. Отправка событий безопасна при сбоях: она никогда не прерывает запрос пользователя или запуск коннектора, даже если сбор контекста или запись в журнал не удались. События с большим объёмом дедуплицируются в течение короткого (10 минут) окна с помощью Redis. Дедупликация открыта при сбое (fail-open): если Redis недоступен, проверка дедупликации пропускается, а событие всё равно отправляется, поэтому событие аудита никогда не теряется молча из-за проблем с инфраструктурой (в худшем случае вы увидите дубликат). Подсистема всегда включена — нет флага включения и выключения, настройки формата вывода или места назначения, а окно дедупликации фиксировано. Единственная связанная настройка — LOG_FORMAT (ниже), которая определяет вид окружающих записей журнала; тело JSON аудита в любом случае одинаково.
Запускайте Yahont с LOG_FORMAT=json, чтобы все записи журнала, а не только события аудита, были пригодны для машинного разбора, а контекст запроса и тенанта выносился в поля верхнего уровня. Это значительно упрощает фильтрацию и разбор в вашем сборщике.

Схема события

Значения action — стабильный контракт, который только дополняется: по ним безопасно фильтровать и строить панели. Со временем могут добавляться новые действия; существующие не меняют значения.

Пример события

Передача в SIEM

Поскольку события аудита — это просто строки журнала JSON с известным префиксом логгера, подойдёт любой сборщик журналов.
1

Запустите Yahont с журналированием в JSON

Задайте LOG_FORMAT=json, чтобы каждая запись журнала была структурирована и содержала поля logger и message.
2

Передавайте журналы Yahont

Направьте Fluent Bit, Vector, агент CloudWatch, Filebeat или ваш существующий сборщик на stdout контейнера Yahont (или на примонтированные файлы журналов).
3

Выделите и разберите поток аудита

Оставьте только записи, у которых logger начинается с onyx.audit, затем разберите поле message каждой записи как JSON, чтобы получить поля события, описанные выше.
4

Направьте в SIEM

Отправьте разобранные события на конечную точку приёма вашего SIEM. Поля в формате OCSF сопоставляются с классами событий «Аутентификация», «Изменение аккаунта» и «Активность API».

Примеры сборщиков

Фильтруйте по префиксу onyx.audit, чтобы захватить всё. Поток также разделён на дочерние логгеры по классам — onyx.audit.authentication, onyx.audit.account_change, onyx.audit.api_activity и onyx.audit.credential_access — если нужно направлять классы в разные места назначения.

Справочник событий

Каждое значение action, что его вызывает, и поля, наиболее полезные для правил обнаружения в SIEM. actor, tenant_id, request_id, endpoint, source_ip и outcome присутствуют в каждом событии (см. Схему события) и в таблицах ниже опущены.

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

ocsf_class: authentication

Пользователи и управление доступом

ocsf_class: account_change — resource_type равен user (или user_group).

Конфигурация и ресурсы

ocsf_class: api_activity

Доступ к учётным данным

onyx.audit.credential_access События расшифровки учётных данных появились до обобщённой схемы и отправляются в плоском устаревшем наборе полей для обратной совместимости. Они используют то же дерево логгеров onyx.audit и то же поведение «безопасно при сбоях» и «открыто при сбое», но не содержат полей обобщённой схемы: нет action, ocsf_class, outcome, resource_type/resource_id, extra и вложенного объекта actor, а IP клиента называется client_ip (а не source_ip). Разбирайте этот поток отдельно; правила обнаружения, написанные для обобщённой схемы, к нему не подойдут.
Таксономия только дополняется: в будущих релизах могут появляться новые значения action, но существующие никогда не меняют значения, поэтому правила обнаружения и панели, построенные на этих значениях, продолжают работать после обновлений.

Примечания

  • Секреты никогда не записываются в журнал. Объекты actor и контекст extra по замыслу очищаются от значений учётных данных.
  • События доступа к учётным данным (onyx.audit.credential_access) используют отдельный плоский набор полей, отличный от обобщённой схемы, для обратной совместимости — полный список полей см. в разделе Доступ к учётным данным. Они используют то же дерево логгеров и то же поведение безопасности при сбоях.
  • Для развёртываний Yahont Cloud (мультитенантных) пересылка журналов аудита организована иначе, так как вы не управляете конвейером журналов — свяжитесь с нами, чтобы обсудить варианты доставки в SIEM.