Передача событий безопасности в файл или Kafka#
В Blitz Identity Provider можно настроить регистрацию событий
безопасности в один или несколько приемников. Настройка задается в блоке
настроек blitz.prod.local.idp.audit.
Необходимо задать следующие настройки:
emitters– определяет список приемников записей аудита. По каждому приемнику заполняется блок настроек:type– тип приемника. Возможные значения:audit-store– запись производится в СУБД;log– запись производится в логгер с именемAUDIT.
enabled– необязательная настройка – определяет, включен или нет приемник;include– необязательная настройка – перечисляются типы событий безопасности (см. таблицу ниже), по которым осуществляется запись в приемник. Если настройка не указана, то пишутся все события безопасности;exclude– необязательная настройка – перечисляются типы событий безопасности (см. таблицу ниже), которые не должны записываться в приемник. Если настройка не указана, то никакие события не исключаются. Если настройка указана вместе сinclude, то сначала список событий определяется настройкойinclude, а потом из него исключаются события, указанные вexclude. Рекомендуется не использовать совместно обе настройкиincludeиexclude, а применять только что-то одно;logger– необязательная настройка – указывается только для приемника с типомlog. Позволяет определить имя логгера. Если настройка не задана, то запись производится в логгер с именемAUDIT;name– необязательная настройка – указывается для приемников с типамиlogиkafka. Указывает имя приемника, так как для этих типов приемников можно настроить несколько приемников. Если настройка не задана, то используютсяlogиkafkaв качестве имен приемников;bootstrapServers– обязательная настройка для приемника с типомkafka– указывается список адресов для первоначального подключения к кластеру Kafka;topic– обязательная настройка для приемника с типомkafka– название топика Kafka, в который должно отправляться событие;securityProtocol– необязательная настройка для приемника с типомkafka– в случае использования подключения по SASL может не указываться. При подключении по SSL в настройке должно быть указано значениеSSL. Если в Kafka не настроен TLS, укажите значениеSASL_PLAINTEXT;sasl– необязательный блок настроек для приемника с типомkafka– задает параметры подключения при использовании SASL-аутентификации для подключения к Kafka:jaasConfig– строка подключения, в которой можно использовать параметры подстановки изsecureParams;mechanism– значениеPLAIN;secureParams– блок с параметрами, которые будут зашифрованы в конфигурационном файле при запуске сервера.
Пример блока:
"sasl": { "jaasConfig": "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"alice\" password=\"${pswd}\";", "mechanism": "PLAIN", "secureParams": { "pswd": "Содержимое зашифруется при запуске", } }
ssl– необязательный блок настроек для приемника с типомkafka– задает параметры SSL для подключения к Kafka:enabledProtocols– строки со списком включенных протоколов;keyStore– блок настроек с параметрами доступа к ключевому контейнеру Blitz Identity Provider. Содержит настройкиtype,path,password;trustedStore– блок настроек с параметрами доступа к контейнеру с доверенными сертификатами. Содержит настройкиtype,path,password;keyPassword– необязательная настройка – пароль для доступа к ключу.
Пример блока:
"securityProtocol" : "SSL", "ssl" : { "enabledProtocols" : ["TLSv1.2,TLSv1.3"], "keyStore" : { "password" : "CHANGE-ME", "path" : "/etc/blitz-config/bip-d1app01-1.jks", "type" : "JKS" }, "trustedStore" : { "password" : "CHANGE-ME", "path" : "/etc/blitz-config/ca.jks", "type" : "JKS" }, "keyPassword": "CHANGE-ME" },
tuning– необязательный блок настроек для приемника с типомkafka– задает опциональные настройкиproducerдля взаимодействия с Kafka. Имена параметров необходимо указывать с точкой как в документации Kafka.
Пример блока:
"tuning": { "client.id": "BlitzKafka" }
emitAtLeastOneOf– необязательная настройка – указывается список приемников, достаточно записи событий в любой из которых, чтобы операция считалась успешной;emitToAllOf– необязательная настройка – указывается список приемников, по которым обязательно должно быть получено подтверждение успешной записи события, чтобы операция считалась успешной. Если настройкиemitAtLeastOneOfиemitToAllOfне заданы, то обязательно подтверждение от всех настроенных приемников;emitTimeoutInSec– необязательная настройка – определяет максимальное время отклика от приемника в ответ на запроса записи события. Если настройка не задана, то ожидание 60 секунд.
Пример настроек записи аудита одновременно в лог, в СУБД и в Kafka:
"audit": { "emitters": [ { "type": "log", "name": "users-log", "enabled": true, "logger": "AUDIT", "exclude": ["admin_added", "admin_pswd_changed", "admin_removed", "admin_roles_changed", "config_changed"] }, { "type": "log", "name": "admins-log", "enabled": true, "logger": "AUDITADMIN", "include": ["admin_added", "admin_pswd_changed", "admin_removed", "admin_roles_changed", "config_changed"] }, { "type": "audit-store", "enabled": true }, { "type" : "kafka", "enabled": true, "name" : "kafka", "include": ["login"], "bootstrapServers" : ["infra-kfk01:9443"], "topic" : "blitz_audit", "securityProtocol" : "SSL", "ssl" : { "enabledProtocols" : ["TLSv1.2,TLSv1.3"], "keyStore" : { "password" : "CHANGE-ME", "path" : "/etc/blitz-config/bip-app01.jks", "type" : "JKS" }, "trustedStore" : { "password" : "CHANGE-ME", "path" : "/etc/blitz-config/ca.jks", "type" : "JKS" } }, } ], "emitAtLeastOneOf": ["users-log","admins-log","kafka"], "emitToAllOf": ["audit-store"], "emitTimeoutInSec": 30 }
При регистрации аудита в лог можно настроить логгер с помощью файла
конфигурации logback.xml (см.
подробнее). Пример
настройки логгера AUDIT в файле конфигурации logback.xml:
…
<appender name="AUDIT" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${dir.logs}/audit-${app.name}.log</file>
<encoder>
<pattern>%date - [%level] -[%file:%line] - %message%n%xException{20}</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${dir.logs}/archive/audit-${app.name}.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
<maxHistory>90</maxHistory>
<totalSizeCap>5GB</totalSizeCap>
</rollingPolicy>
</appender>
<logger name="AUDIT" additivity="false">
<appender-ref ref="AUDIT" />
</logger>
…
Пример записи в логе:
2023-11-20 13:29:47,170 - [INFO] -[LoggerEventEmitterDriver.scala:37] - {"ip_st":"Tashkent","ip":"213.230.116.179","authnDone":"true","process_id":"b80ca03e-4718-44ff-9456-7d4255610eaa","ip_ctr":"Узбекистан","type":"login","object_id":"BIP-123456","protocol":"oAuth","subject_id":"BIP-123456","auth_methods":"cls:password","session_id":"f8d85ba2-a26a-447f-b82e-944b9218abb8","timestamp":1700476187069,"ch_platform_version":"\"14.1.0\"","ch_platform":"\"macOS\"","ip_ct":"Tashkent","id_store":"ldap01","ip_lng":"69.2494","ip_rad":"5","ch_ua":"\"Google Chrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36","lp_id":"test-system","id":"6056828858453673-600312119","ip_lat":"41.3171","client_auth_method":"redirectUri"}
Возможные типы событий безопасности:
admin_added– добавлен администраторadmin_pswd_changed– изменен пароль администратораadmin_removed– удален администраторadmin_roles_changed– изменены роли администратораapp_password_changed– задан пароль для приложенияattribute_changed– добавлен, изменен или удален атрибутattribute_confirmed– атрибут подтвержденauth– выполнена аутентификация (при OAuth 2.0 Resource Owner Password Credentials)auth_failed– ошибка аутентификацииauth_req– запрос на аутентификациюauthz_granted– выдано OAuth-разрешениеauthz_rejected– отказано в выдаче OAuth-разрешенияauthz_revoked– отозвано OAuth-разрешениеbind_ext_account– учетная запись привязана к внешнейconfig_changed– изменены настройки конфигурацииgrant_right– назначение прав доступаgroup_attr_changed– у группы пользователей изменен или удален атрибутgroup_registered– группа пользователей созданаgroup_removed– группа пользователей удаленаhotp_attached– привязан HOTP-генераторhotp_detached– отвязан HOTP-генераторinternal_user_deleted– учетная запись удаленаlocked_methods_changed– изменен список заблокированных методов аутентификацииlogin– выполнен входlogin_failed– ошибка входаlogin_stopped– неуспешный входlogout– выполнен выходlogout_req– запрос на выходmember_added– пользователь включен в группу пользователейmember_removed– пользователь исключен из группы пользователейneed_password_change– установлен признак необходимости смены пароляrecovery– доступ к учетной записи восстановленrecovery_fail– восстановление доступа не выполненоrecovery_req– выполнен запрос на восстановление доступаregistration– учетная запись зарегистрированаregistration_req– выполнен запрос на регистрациюrequired_factor_changed– изменен режим аутентификации пользователяreset_user_password– пароль установлен администраторомreset_user_sessions– выход с устройств (сброс сессий)revoke_right– отзыв прав доступаsend_email_code– код подтверждения отправлен на emailsend_push_code– код подтверждения отправлен в Pushsend_sms_code– код подтверждения отправлен по SMStoken_exchange_failed– отказано в обмене маркера доступаtoken_exchanged– произведен обмен маркера доступаtoken_granted– выдан маркер доступаtotp_attached– привязан TOTP-генераторtotp_detached– отвязан TOTP-генераторunbind_ext_account– учетная запись отвязана от внешнейuser_locked– учетная запись заблокированаuser_password_changed– изменен пароль пользователяuser_sec_qsn_changed– изменен контрольный вопросuser_sec_qsn_removed– удален контрольный вопросuser_unlocked– учетная запись разблокированаweb_authn_reg_key– добавлен ключ безопасностиweb_authn_revoke_key– удален ключ безопасности
Набор атрибутов записи может отличаться в зависимости от типа события безопасности и особенностей процесса входа. Назначения атрибутов в записи аудита приведены в таблице:
Назначение атрибутов в записи аудита
Атрибут |
Назначение и возможные значения |
|---|---|
|
Идентификатор записи о событии безопасности |
|
Тип события безопасности |
|
Причина, по которой пользователя просили сменить пароль. Возможные значения:
|
|
Имя установленного, удаленного или измененного атрибута |
|
Содержит список пройденных пользователем методов аутентификации. Возможные значения:
Наличие перед методом префикса |
|
Приложение-аутентификатор (при входе по QR-коду) |
|
Проводилась ли аутентификация при этом входе |
|
Признак, что при входе спрашивалась CAPTCHA |
client_auth_method |
Способ аутентификации вызвавшего Blitz Identity Provider приложения:
|
|
Динамический |
|
ID устройства |
deviceFingerprint |
Отпечаток устройства |
|
Тип устройства (при динамической регистрации) |
|
Адрес электронной почты |
|
Тип интерфейса, использованного для регистрации пользователя:
|
|
Ошибка (при неуспешных событиях) |
|
Идентификатор внешней учетной записи |
|
Имя внешнего поставщика идентификации |
|
Тип внешнего поставщика идентификации |
|
Указывает, какой метод аутентификации не смог пройти пользователь |
|
Идентификатор группы пользователей |
|
Идентификатор профиля использования групп пользователей |
|
Хранилище учетной записи |
|
IP адрес пользователя |
|
Страна по IP адресу |
|
Регион по IP адресу |
|
Город по IP адресу |
|
Широта по IP адресу |
|
Долгота по IP адресу |
|
Окрестность по IP адресу |
|
Идентификатор приложения
( |
|
Номер мобильного телефона |
|
Идентификатор измененного блока настроек |
|
Новое значение установленного или измененного атрибута |
|
Новое значение признака, указывающего на необходимость проверки второго фактора аутентификации |
|
Роли, добавленные учетной записи администратора |
|
Список разрешений, которые выдал или отозвал пользователь |
|
Идентификатор объекта операции (пользователь, по которому выполнялась операция) |
|
Прежнее значение удаленного или измененного атрибута |
|
Прежнее значение признака, указывающего на необходимость проверки второго фактора аутентификации |
|
Роли, отозванные у учетной записи администратора |
|
Идентификатор приложения, инициировавшего регистрацию пользователя или восстановление пароля |
|
Идентификатор процесса |
|
Протокол взаимодействия приложения с Blitz Identity Provider. Возможные значения:
|
|
Признак, что рекомендовалась смена пароля |
|
Признак, что была временная блокировка |
|
Указанный при восстановлении контакт (email или номер мобильного телефона) |
|
Тип восстановления пароля:
|
|
Название права доступа |
|
Роли учетной записи администратора |
|
Уникальный идентификатор сессии пользователя. Позволяет коррелировать все события пользователя, выполненные им в рамках общей пользовательской сессии |
|
Идентификатор субъекта операции (пользователь, который вызвал операцию) |
|
Метка назначенного или отозванного права доступа |
|
Дата и время события. Например,
|
|
Признак того, что была попытка входа с паролем из сохраненной истории паролей (предыдущим паролем) |
|
Логин, использованный при входе |
|
Данные о пользовательском
устройстве ( |
|
Идентификатор ключа безопасности |
|
Имя ключа безопасности |
|
Включалась задержка при входе |