Передача событий безопасности в файл или 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
– изменены настройки конфигурацииduo_put
– мобильное приложение Duo Mobile привязаноduo_remove
– мобильное приложение Duo Mobile отвязано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 или номер мобильного телефона) |
|
Тип восстановления пароля:
|
|
Название права доступа |
|
Роли учетной записи администратора |
|
Уникальный идентификатор сессии пользователя. Позволяет коррелировать все события пользователя, выполненные им в рамках общей пользовательской сессии |
|
Идентификатор субъекта операции (пользователь, который вызвал операцию) |
|
Метка назначенного или отозванного права доступа |
|
Дата и время события. Например,
|
|
Признак того, что была попытка входа с паролем из сохраненной истории паролей (предыдущим паролем) |
|
Логин, использованный при входе |
|
Данные о пользовательском
устройстве ( |
|
Идентификатор ключа безопасности |
|
Имя ключа безопасности |
|
Включалась задержка при входе |