Передача событий безопасности в файл или 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– удален ключ безопасности
Возможные параметры событий аудита
Тип события |
Описание |
Параметры события |
|---|---|---|
|
Доступ к приложению запрещен |
|
|
Доступ к приложению разрешен |
|
|
Выполнена активация учетной записи |
– |
|
Добавлен администратор |
|
|
Изменен пароль администратора |
– |
|
Удален администратор |
|
|
Изменены роли администратора |
|
|
Снята блокировка со всех методов аутентификации |
|
|
Задан пароль для приложения |
– |
|
Добавлен, изменен или удален атрибут |
|
|
Атрибут подтвержден |
|
|
Выполнена аутентификация (при OAuth 2.0 Resource Owner Password Credentials) |
|
|
Ошибка аутентификации |
|
|
Выдано OAuth-разрешение |
|
|
Отказано в выдаче OAuth-разрешения |
|
|
Отозвано OAuth-разрешение |
|
|
Учетная запись привязана к внешней |
|
|
Изменены настройки конфигурации |
|
|
Мобильное приложение Duo Mobile привязано администратором |
|
|
Мобильное приложение Duo Mobile отвязано администратором |
– |
|
Запрошено подтверждение по звонку |
|
|
Назначение прав доступа |
|
|
У группы пользователей изменен или удален атрибут |
|
|
Группа пользователей создана |
– |
|
Группа пользователей удалена |
– |
|
Привязан HOTP-генератор |
|
|
Отвязан HOTP-генератор |
|
|
Учетная запись удалена |
– |
|
Изменен список заблокированных методов аутентификации |
|
|
Изменен статус блокировки по неактивности |
|
|
Выполнен вход |
|
|
Неуспешный вход |
|
|
Выполнен выход |
|
|
Пользователь включен в группу пользователей |
|
|
Пользователь исключен из группы пользователей |
|
|
Установлен признак необходимости смены пароля |
– |
|
Доступ к учетной записи восстановлен |
|
|
Восстановление доступа не выполнено |
|
|
Выполнен запрос на восстановление доступа |
|
|
Учетная запись зарегистрирована |
|
|
Изменен режим аутентификации пользователя |
|
|
Пароль установлен администратором |
– |
|
Выход с устройств (сброс сессий) |
|
|
Отзыв прав доступа |
|
|
Код подтверждения отправлен на email |
|
|
Код подтверждения отправлен в Push |
|
|
Запрос на подтверждения входа отправлен Push-уведомлением |
|
|
Код подтверждения отправлен по SMS |
|
|
Завершена сессия |
|
|
Отказано в обмене маркера доступа |
|
|
Произведен обмен маркера доступа |
|
|
Выдан маркер доступа |
|
|
Привязан TOTP-генератор |
|
|
Отвязан TOTP-генератор |
|
|
Учетная запись отвязана от внешней |
|
|
Учетная запись заблокирована |
– |
|
Изменен пароль пользователя |
– |
|
Изменены свойства пользователя |
– |
|
Изменен контрольный вопрос |
– |
|
Удален контрольный вопрос |
– |
|
Учетная запись разблокирована |
– |
|
Добавлен ключ безопасности |
|
|
Удален ключ безопасности |
|
Описание параметров событий
Параметр |
Описание |
Тип значения |
Описание значения |
|---|---|---|---|
|
Причина, по которой пользователя просили сменить пароль |
Строка |
Возможные значения: |
|
Имя атрибута учетной записи |
Строка |
Содержит имя установленного/удаленного/измененного атрибута |
|
Список получателей |
Строка |
Содержит список получателей маркера |
|
Пройденные методы аутентификации |
Строка |
Содержит список пройденных пользователем методов аутентификации (возможные значения указаны после таблицы) |
|
Роль пользователя |
Строка |
Роль пользователя |
|
Проводилась ли аутентификация при этом входе |
Булево значение |
Признак, позволяющий узнать, проводилась ли аутентификация при данном входе. У первичных входов этот признак будет установлен |
|
Включалась ли задержка входа |
Булево значение |
Признак, позволяющий узнать, использовалась ли при данном входе задержка входа (в результате действия механизма защиты от подбора пароля) |
|
Признак, что при входе спрашивалась CAPTCHA |
Булево значение |
Признак того, что при входе спрашивалась CAPTCHA |
|
Причина завершения сессии |
Строка |
Причина завершения сессии |
|
Идентификатор пользователя в Duo Mobile |
Строка |
Идентификатор пользователя в Duo Mobile |
|
Значение электронной почты |
Строка |
Значение электронной почты для отправки кода |
|
Тип интерфейса, использованного для регистрации пользователя |
Строка |
|
|
Ошибка аутентификации |
Строка |
Содержит причину неуспешной аутентификации |
|
Идентификатор внешней учетной записи |
Строка |
Указан идентификатор пользователя во внешней системе входа (соцсети, ЕСИА или Сбербанк ID) |
|
Имя внешнего поставщика идентификации |
Строка |
Указано имя внешнего поставщика идентификации |
|
Тип внешнего поставщика идентификации |
Строка |
Указан тип внешнего поставщика идентификации |
|
Название непройденного метода аутентификации |
Строка |
Указывает, какой метод аутентификации не смог пройти пользователь |
|
Идентификатор группы пользователей |
Строка |
Заполняется в результате операций изменения членства пользователей в группах пользователей |
|
Идентификатор профиля использования групп пользователей |
Строка |
Заполняется в результате операций изменения членства пользователей в группах пользователей |
|
Хранилище учетной записи |
Строка |
Хранилище учетных записей, в котором был найден пользователь в момент успешной аутентификации |
|
Идентификатор запроса |
Строка |
Идентификатор запроса |
|
Статус блокировки о неактивности |
Строка |
Значение |
|
Время действия статуса блокировки по неактивности |
Строка |
Пользователь не будет заблокирован до наступления времени, указанного в данном параметре. Далее будет происходить блокировка на общих основаниях |
|
URI для редиректа |
Строка |
Содержит URI, на который система должна перенаправить пользователя после успешного выхода из системы |
|
Значение мобильного телефона |
Строка |
Значение мобильного телефона для отправки sms/push/flash_call |
|
Блок конфигурационного файла |
Строка |
Блок конфигурационного файла, который был изменен |
|
Новое значение атрибута |
Строка |
Содержит новое значение установленного/измененного атрибута. |
|
Новое значение признака, указывающего на необходимость проверки второго фактора аутентификации |
Число |
|
|
Роли учетной записи администратора |
Строка |
Содержит список ролей, добавленных учетной записи администратора в процессе ее изменения |
|
Прежнее значение атрибута |
Строка |
Содержит прежнее значение удаленного/измененного атрибута |
|
Прежнее значение признака, указывающего на необходимость проверки второго фактора аутентификации |
Число |
|
|
Роли учетной записи администратора |
Строка |
Содержит список ролей, отозванных у учетной записи администратора в процессе ее изменения |
|
Идентификатор приложения, инициировавшего регистрацию пользователя / восстановление пароля |
Строка |
Идентификатор приложения ( |
|
Признак, что рекомендовалась смена пароля |
Булево значение |
Признак того, что рекомендовалась смена пароля |
|
Признак, что была временная блокировка |
Булево значение |
Признак того, что была временная блокировка |
|
Указанный при восстановлении контакт |
Строка |
Адрес email или номер мобильного телефона, использованного при восстановлении пароля |
|
Тип восстановления пароля |
Строка |
Возможные значения – |
|
URL, к которому предоставляется доступ |
Строка |
URL, к которому предоставляется доступ |
|
Название полномочия |
Строка |
Идентификатор назначенного/отозванного полномочия |
|
Роли учетной записи администратора |
Строка |
Содержит список ролей учетной записи администратора, заданных при создании учетной записи (для события с типом |
|
Правило сопоставления |
Строка |
Заполняется из правила, заданного в контроле доступа приложения, в который осуществляется вход |
|
Список разрешений |
Строка |
Содержит список разрешений (OAuth scopes), которые выдал/отозвал пользователь |
|
Метка назначенного/отозванного полномочия |
Массив строк |
Тэг |
|
Идентификатор группы, приложения, пользователя |
Строка |
Идентификатор группы, приложения, пользователя, на что дается право |
|
Признак того, что была попытка входа с паролем из сохраненной истории паролей (предыдущим паролем) |
Булево значение |
Признак того, что была попытка входа с паролем из сохраненной истории паролей (предыдущим паролем) |
|
Идентификатор отпечатка устройства доступа |
Строка |
Идентификатор отпечатка устройства доступа пользователя |
|
Идентификатор устройства пользователя |
Строка |
Идентификатор устройства пользователя |
|
Логин, использованный при входе |
Строка |
Логин, использованный при входе |
|
Значение атрибута |
Строка |
Заполняется при подтверждении атрибута |
|
Идентификатор ключа безопасности |
Строка |
Идентификатор ключа безопасности |
|
Имя ключа безопасности |
Строка |
Имя ключа безопасности |
Примечание
Возможные значения auth_methods:
password– парольная аутентификацияspnego– вход с помощью сеанса ОСx.509– вход с помощью средства электронной подписиqr– вход по QR-кодуcss– автоматический вход по результатам регистрации пользователя или восстановления пароляsms– вход по коду SMS (может быть как в качестве первого, так и в качестве второго фактора аутентификации)hotp– второй фактор аутентификации с помощью аппаратного брелокаtotp– второй фактор аутентификации с помощью программного TOTP-генератора кодов подтвержденияexternalIdps:<type>:<name>– вход с помощью внешнего поставщика идентификации (соцсети или ЕСИА)userApp– вторичная аутентификация в мобильном приложенииoutside_name– внешний метод аутентификации с именем name
Наличие перед методом префикса cls: означает, что вход был выполнен с помощью долгосрочной сессии, а ранее при первичном входе использовались те методы входа, что перечислены после cls: