Skip to Content

Управление доступом

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

keycloak3.png

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

В части управления доступом пользователей сервис обеспечивает возможности следующих настроек:

  • сложность и длина пароля
  • смена пароля по времени и при первом входе
  • восстановление пароля
  • глубина хранения по уникальности пароля
  • блокировка пользователя
  • двухфакторная авторизация
  • управление группами и пользовательскими доступами
  • длительность пользовательской сессии
  • и др.

keycloak4.png

Анонимный доступ невозможен.

Keycloak имеет встроенную поддержку федерации пользователей для подключения к существующим серверам LDAP и Active Directory . Также поддерживаются протоколы OIDC, OAuth 2.0 и SAML. keycloak1.png Пользователи входят один раз и получают доступ ко всем подключенным приложениям без повторной аутентификации . При использовании 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 и шифрования токенов.

keycloak2.png

Для всех подключений к 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_PASSWORDKeycloak → слушатель событий
Административные события (Admin Events)Создание и удаление пользователей (CREATE USER, DELETE USER), изменение ролей (UPDATE REALM_ROLE_MAPPING), включение в группу, изменение клиентов realmKeycloak → слушатель событий
Изменение конфигурации компонентов ИСДобавление, изменение и удаление параметров конфигурации, загрузка и инициализация компонентовСлужбы платформы

Раздел «Журнал аудита» доступен пользователям с ролью Администратора ИБ и открывается из меню пользователя. Журнал ведётся только для просмотра — записи создаются платформой автоматически, изменять или удалять их вручную нельзя.

Журнал аудита

По каждому событию фиксируются наименование, изменённые параметры, уровень важности (Низкий, Средний, Высокий, Критический), субъект и объект операции, дата и время, статус (Успешно/Неуспешно). Строку можно развернуть, чтобы увидеть дополнительные сведения: идентификатор события, наименование и 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:

  1. Перейдите в Realm Settings → Events.
  2. Включите Save Events для пользовательских событий.
  3. Включите Save Admin Events для административных событий.
  4. Установите срок хранения событий (Expiration).
  5. При необходимости — настройте Event Listener для отправки событий во внешнюю SIEM-систему (через syslog-совместимый listener или REST webhook).
Обновлено: