Управление доступом
Платформа НТБот использует возможности решения Keycloak для организации авторизации и аутентификаци и обеспечения безопасности доступа к платформе.

Административная панель Keycloak предоставляет графичесекий интерфейс и API для централизованного управления пользователями, ролями, группами и правами доступа . Доступ к административной консоли имеют только пользователи с соответствующими ролями (например, admin, manage-realm) . Это обеспечивается на уровне операционной системы и файловой системы. Keycloak рекомендует запускать сервер от непривилегированной учетной записи, чтобы ограничить доступ к файлам конфигурации.
В части управления доступом пользователей сервис обеспечивает возможности следующих настроек:
- сложность и длина пароля
- смена пароля по времени и при первом входе
- восстановление пароля
- глубина хранения по уникальности пароля
- блокировка пользователя
- двухфакторная авторизация
- управление группами и пользовательскими доступами
- длительность пользовательской сессии
- и др.

Анонимный доступ невозможен.
Keycloak имеет встроенную поддержку федерации пользователей для подключения к существующим
серверам LDAP и Active Directory . Также поддерживаются протоколы OIDC, OAuth 2.0 и SAML.
Пользователи входят один раз и получают доступ ко всем подключенным приложениям без повторной аутентификации .
При использовании LDAP-провайдера можно настроить мапперы (mappers), которые синхронизируют группы из LDAP с группами в Keycloak и автоматически назначают соответствующие роли .
Keycloak поддерживает иерархию групп. Пользователи наследуют роли и атрибуты групп, в которые они входят. Также существует иерархия ролей (роли могут наследовать права других ролей).
Keycloak имеет встроенную подсистему аудита (журнал ИБ), которая логирует события безопасности (авторизации, действия администратора и др) .
Keycloak не логирует пароли или токены в открытом виде в журналах событий. Каждое событие имеет уникальный тип, например, LOGIN, LOGOUT, UPDATE_USER. Все настройки по умолчанию (порты, учетные данные, флаги безопасности и др.) могут быть изменены через конфигурационные файлы или административную консоль сервиса.
Официальная документация Keycloak подробно описывает настройку событий (events) и административных событий (admin events): https://www.keycloak.org/docs/latest/server_admin/
Пароли пользователей хранятся в хешированном виде. Для хранения ключей компонентов (KeyProvider) ведется работа по добавлению шифрования в БД . Передача всегда по TLS. Keycloak поддерживает настройку алгоритма хеширования паролей (по умолчанию PBKDF2) и может быть расширен. Keycloak поддерживает современные и безопасные криптографические алгоритмы для TLS и шифрования токенов.

Для всех подключений к Keycloak используется HTTPS. Все интеграции через OIDC/SAML используют шифрование на транспортном уровне (TLS). Keycloak может использовать сертификаты из доверенных хранилищ (Java KeyStore) и поддерживает X.509 аутентификацию.
НТБот может поставляться как с встроенным сервисом управления доступом, так и интегрироваться с корпоративным Keycloak. Подробнее о других возможностях и настройках Keycloak можно ознакомиться также по ссылке: https://www.keycloak.org/guides#server
Разделение журналов событий ИБ и системных событий
Платформа НТБот разделяет два независимых потока журналирования:
Журнал событий ИБ платформа ведёт в отдельном разделе Диспетчера — «Журнал аудита». События безопасности собираются из Keycloak (через слушатель событий) и из служб платформы и сохраняются отдельно от технических журналов сервисов приложения:
| Тип события | Примеры | Источник |
|---|---|---|
| Пользовательские события (User Events) | LOGIN, LOGOUT, LOGIN_ERROR, REGISTER, UPDATE_PASSWORD, RESET_PASSWORD | Keycloak → слушатель событий |
| Административные события (Admin Events) | Создание и удаление пользователей (CREATE USER, DELETE USER), изменение ролей (UPDATE REALM_ROLE_MAPPING), включение в группу, изменение клиентов realm | Keycloak → слушатель событий |
| Изменение конфигурации компонентов ИС | Добавление, изменение и удаление параметров конфигурации, загрузка и инициализация компонентов | Службы платформы |
Раздел «Журнал аудита» доступен пользователям с ролью Администратора ИБ и открывается из меню пользователя. Журнал ведётся только для просмотра — записи создаются платформой автоматически, изменять или удалять их вручную нельзя.

По каждому событию фиксируются наименование, изменённые параметры, уровень важности (Низкий, Средний, Высокий, Критический), субъект и объект операции, дата и время, статус (Успешно/Неуспешно). Строку можно развернуть, чтобы увидеть дополнительные сведения: идентификатор события, наименование и IP-адрес хоста, IP-адрес субъекта, наименование вендора и продукта, текстовое сообщение. Список фильтруется по уровню важности и выводится постранично. Старые записи удаляются автоматически — по истечении срока хранения и при превышении предельного числа записей.
Исходные события безопасности также остаются доступны в Keycloak: он хранит их в собственной базе данных (отдельно от баз данных сервисов НТБот), доступ — через Keycloak Admin Console (Realm Settings → Events → Event Log) или через Keycloak Admin API.
Системные (технические) журналы сервисов НТБот (api-gateway, launcher-service,
generator-service и др.) пишутся через Logback в файл logFile.<дата>.log
в директории ./logs/ каждого сервиса. Эти журналы содержат технические события
приложения (запросы, ошибки, изменения состояния сервисов) и не включают
аутентификационные данные пользователей.
Таким образом, события ИБ (аутентификация, авторизация, административные действия, изменение конфигурации) собираются в отдельный журнал аудита и отделены от системных (технических) журналов сервисов.
Уровни журналирования
Keycloak поддерживает следующие уровни детализации журнала. Уровень задаётся в настройках сервера и влияет как на журнал событий ИБ, так и на технические логи сервиса.
| Уровень | Описание |
|---|---|
FATAL | Критические сбои, при которых система полностью теряет способность обрабатывать запросы |
ERROR | Существенная ошибка или проблема, приводящая к невозможности обработать запрос |
WARN | Некритическая ошибка или проблема, которая может не требовать немедленного устранения |
INFO | События жизненного цикла Keycloak и важная информация. Низкая частота записей |
DEBUG | Детальная информация для отладки (например, запросы к БД). Высокая частота записей |
TRACE | Максимально подробная отладочная информация. Очень высокая частота записей |
ALL | Специальный уровень: фиксируются все сообщения журнала |
OFF | Специальный уровень: журналирование полностью отключено (не рекомендуется) |
Для продуктивной среды рекомендуется уровень WARN или INFO. Уровни DEBUG и TRACE
следует включать только при диагностике проблем и отключать после её завершения, так как
они создают высокую нагрузку на дисковую подсистему и могут содержать чувствительные данные.
Настройка хранения событий ИБ
В Keycloak Admin Console:
- Перейдите в Realm Settings → Events.
- Включите Save Events для пользовательских событий.
- Включите Save Admin Events для административных событий.
- Установите срок хранения событий (
Expiration). - При необходимости — настройте Event Listener для отправки событий во внешнюю SIEM-систему
(через
syslog-совместимый listener или REST webhook).