Модули безопасности#
Модуль безопасности (Security Provider) — это именованный объект каталога, хранящий конфигурацию внешней системы аутентификации. Каталог поддерживает подключение нескольких модулей безопасности различных типов. После создания модуля его можно назначить пользователям каталога: при входе в систему их пароль будет проверяться во внешней системе.
Текущая версия поддерживает следующие типы модулей безопасности:
local — встроенный модуль, не требующий конфигурации. Пользователи аутентифицируются по паролю, хранящемуся в самом каталоге. Используется по умолчанию для всех новых пользователей.
ldap — аутентификация через внешний LDAP-сервер. См. Модуль безопасности LDAP.
oidc — аутентификация через внешний сервер авторизации по протоколу OAuth 2.0 с опциональной поддержкой OpenID Connect. См. Модуль безопасности OIDC.
Назначение модуля безопасности пользователю#
За выбор способа аутентификации пользователя отвечает параметр identified-with.
Он хранит имя модуля безопасности, которому будет делегирована проверка пароля при входе в систему.
По умолчанию все новые пользователи создаются с identified-with, ссылающимся на встроенный
модуль local, и аутентифицируются по паролю каталога.
Изменить модуль безопасности пользователя можно двумя способами:
Через веб-интерфейс: на экране редактирования пользователя в поле Способ аутентификации выберите нужный модуль безопасности из выпадающего списка.
Через CLI с помощью параметра
--new-identified-withкоманды principal update:# Перевести пользователя на аутентификацию через LDAP-провайдер catalog principal update --principal-name alice --new-identified-with ldap1 # Вернуть пользователя на локальную аутентификацию catalog principal update --principal-name alice --new-identified-with local
Управление через интерфейс пользователя#
Модули безопасности отображаются и редактируются в разделе Модули безопасности пользовательского интерфейса. Здесь можно создать новый модуль, выбрав его тип и заполнив параметры конфигурации, изменить существующий, а также проверить корректность конфигурации модуля (например, доступность сервера аутентификации).
Управление через CLI#
Для управления модулями безопасности из командной строки используйте группу команд security-provider:
security-provider create — создать модуль безопасности
security-provider update — изменить параметры модуля безопасности
security-provider delete — удалить модуль безопасности
security-provider check — проверить корректность конфигурации модуля безопасности
security-provider get — получить информацию о модуле безопасности
security-provider list — получить список модулей безопасности
Модуль безопасности LDAP#
Модуль безопасности LDAP позволяет выполнять аутентификацию пользователей каталога через внешний LDAP-сервер. При настроенном модуле безопасности пользователи входят в каталог с паролем, заданным в LDAP.
Описание workflow настройки и привязки пользователей приведено в разделе Аутентификация через LDAP.
Режимы поиска пользователя#
Модуль безопасности поддерживает два взаимоисключающих режима определения LDAP Distinguished Name (DN) пользователя.
Режим шаблона DN (user-dn-pattern)
Используется, когда имя пользователя в каталоге можно напрямую преобразовать в DN по фиксированному шаблону.
Шаблон задаётся через параметр user-dn-pattern и должен содержать заполнитель ${USER},
который при аутентификации заменяется именем пользователя каталога.
Можно задать несколько шаблонов, разделив их двоеточием; модуль безопасности последовательно перебирает их
до первого совпадения.
Пример: cn=${USER},ou=users,dc=example,dc=com
Режим поиска (user-search-base + user-search-filter)
Используется, когда DN пользователя нельзя вычислить по простому шаблону.
Модуль безопасности сначала выполняет поиск от имени сервисной учётной записи (bind-user-dn / bind-password),
находит DN пользователя, а затем проверяет пароль, выполняя bind от имени найденного пользователя.
Пример фильтра: (&(objectClass=inetOrgPerson)(uid=${USER}))
Примечание
В обоих режимах параметры bind-user-dn и bind-password обязательны, поскольку модуль безопасности
использует сервисную учётную запись для проверки существования пользователя в LDAP.
Параметры конфигурации#
Параметр |
Обязательный |
По умолчанию |
Описание |
|---|---|---|---|
|
Да |
— |
URL-адрес LDAP-сервера в формате |
|
Да |
— |
Distinguished Name сервисной учётной записи для подключения к LDAP. Пример: |
|
Да |
— |
Пароль сервисной учётной записи |
|
Да (режим шаблона DN) |
— |
Шаблон DN пользователя, должен содержать |
|
Да (режим поиска) |
— |
Базовый DN для поиска пользователя. Пример: |
|
Да (режим поиска) |
— |
Фильтр LDAP для поиска пользователя, должен содержать |
|
Нет |
|
Разрешает подключение к LDAP-серверу без использования TLS (только для |
|
Нет |
— |
Путь к truststore в формате PEM или JKS относительно |
|
Нет |
— |
Пароль для truststore |
|
Нет |
— |
Путь к keystore в формате PEM или JKS относительно |
|
Нет |
— |
Пароль для keystore |
|
Нет |
|
Игнорировать LDAP-перенаправления на другие серверы. Установите в |
|
Нет |
отсутствует |
Таймаут установления соединения с LDAP-сервером, в миллисекундах |
|
Нет |
отсутствует |
Таймаут чтения данных из LDAP-сервера, в миллисекундах |
|
Нет |
|
Время жизни кэша результатов аутентификации, в миллисекундах. Значение |
|
Нет |
|
Максимальное количество записей в кэше. Значение |
Примечание
Параметры user-dn-pattern и user-search-base/user-search-filter являются взаимоисключающими:
необходимо задать либо шаблон DN, либо параметры поиска, но не оба одновременно.
Модуль безопасности OIDC#
Модуль безопасности OIDC позволяет аутентифицировать пользователей каталога через внешний сервер авторизации по протоколу OAuth 2.0 с опциональной поддержкой OpenID Connect.
Модуль безопасности реализует Authorization Code Flow: при входе в каталог пользователь перенаправляется на страницу входа сервера авторизации, проходит аутентификацию, после чего сервер авторизации перенаправляет пользователя обратно в каталог с кодом авторизации. Каталог обменивает код на access token и создаёт сессию.
Описание workflow настройки и привязки пользователей приведено в разделе Аутентификация через OIDC.
Конфигурация сервера авторизации#
Для работы модуля безопасности необходимо создать клиентское приложение (client) на сервере авторизации и зарегистрировать следующие URI:
Callback URI (Redirect URI)
Адрес, на который сервер авторизации перенаправляет пользователя после успешной аутентификации:
https://<адрес_каталога>/external-oauth/callback
Данный адрес необходимо добавить в список допустимых redirect URI клиентского приложения (Valid Redirect URIs, Sign-in Redirect URIs, Callback URL — в зависимости от сервера авторизации).
Post Logout Redirect URI
Адрес, на который сервер авторизации перенаправляет пользователя после выхода из системы:
https://<адрес_каталога>/cedrus-catalog-ui/login
Данный адрес необходимо добавить в список допустимых post-logout redirect URI клиентского приложения (Valid Post Logout Redirect URIs, Sign-out Redirect URIs — в зависимости от сервера авторизации).
Примечание
Каталог требует использования HTTPS для callback URI. Убедитесь, что каталог доступен по HTTPS, или используйте reverse proxy с TLS-терминацией.
Режимы OAuth 2.0 и OpenID Connect#
Модуль безопасности поддерживает два режима работы:
Режим OAuth 2.0
Используется по умолчанию. Каталог запрашивает только access token у сервера авторизации.
Для включения этого режима не добавляйте openid в параметр request-scopes.
Режим OpenID Connect
Для включения режима OpenID Connect добавьте openid в параметр request-scopes.
В этом режиме каталог дополнительно получает и валидирует ID token, что обеспечивает более строгую
проверку подлинности пользователя.
Управление сессией#
Длительность сессии каталога определяется следующим образом:
Если сервер авторизации выдаёт refresh token: сессия длится не более значения
session-timeoutи не более времени жизни refresh token. При активности пользователя после истечения access token каталог автоматически обновляет токены.Если refresh token отсутствует: сессия завершается по истечении access token или значения
session-timeout— в зависимости от того, что наступит раньше.
При выходе пользователя из каталога, если параметр logout-from-auth-server установлен в true (по умолчанию),
каталог инициирует RP-Initiated Logout на сервере авторизации.
Параметры конфигурации#
Параметр |
Обязательный |
По умолчанию |
Описание |
|---|---|---|---|
|
Да |
— |
Базовый URL сервера авторизации. Примеры: Keycloak: |
|
Да |
— |
Client ID, используемый каталогом при аутентификации на сервере авторизации |
|
Да |
— |
Секрет клиента, используемый каталогом при аутентификации на сервере авторизации |
|
Да |
— |
Claim access token, используемый как имя principal в каталоге (например, |
|
Нет |
— |
Список scope, разделённых запятыми, запрашиваемых во время authorization code flow. Добавьте |
|
Нет |
— |
Список допустимых значений claim |
|
Нет |
— |
Список scope, разделённых запятыми, которые должны присутствовать в claim |
|
Нет |
— |
Метод PKCE для authorization code flow, защищающий от перехвата кода авторизации. Поддерживаемое значение: |
|
Нет |
|
Выполнять RP-Initiated Logout на сервере авторизации при выходе пользователя из каталога |
|
Нет |
|
Максимально допустимое расхождение времени в секундах между каталогом и сервером авторизации при проверке временных claims JWT |
|
Нет |
|
Максимальное время в секундах, в течение которого пользователь должен завершить authorization code flow |
|
Нет |
|
Длительность сессии каталога в секундах. См. раздел «Управление сессией» выше |
|
Нет |
— |
Путь к truststore в формате PEM или JKS относительно |
|
Нет |
— |
Пароль для truststore |
|
Нет |
— |
Путь к keystore в формате PEM или JKS относительно |
|
Нет |
— |
Пароль для keystore |
Передача OAuth-токенов из CedrusData (Token Propagation)#
При работе с CedrusData Catalog из CedrusData через нативный протокол (коннектор Iceberg
с типом cedrusdata_catalog) можно включить передачу OAuth2 access token, полученного пользователем CedrusData при аутентификации, в каталог.
В этом режиме CedrusData не использует сконфигурированный токен доступа каталога, а передаёт OAuth2 access token, полученный пользователем при аутентификации в CedrusData. Каталог валидирует этот токен с помощью модуля безопасности OIDC и определяет principal из указанного claim.
Для включения данного режима добавьте в конфигурацию Iceberg каталога CedrusData:
iceberg.catalog.type=cedrusdata_catalog
iceberg.cedrusdata-catalog.oauth-token-propagation-enabled=true
Для работы token propagation необходимо:
В CedrusData настроена аутентификация пользователей через OAuth2, и пользователи получают access token от того же сервера авторизации, что указан в модуле безопасности OIDC каталога.
В каталоге создан модуль безопасности OIDC, и параметр
principal-claimуказывает на claim, значение которого совпадает с именем пользователя в каталоге.Для каждого пользователя создана учётная запись в каталоге с привязкой к модулю безопасности OIDC (параметр
identified-withуказывает на соответствующий модуль безопасности).
Примечание
Передаваемый access token имеет ограниченное время жизни, определяемое настройками сервера авторизации.
Операции с каталогом, такие как чтение метаданных таблиц и фиксация (commit) изменений, выполняются в начале
и в конце запроса; сам процесс обработки данных не требует обращений к каталогу. Для большинства запросов
времени жизни access token достаточно. Однако если фаза планирования или фиксации результатов
длительного запроса (например, INSERT в таблицу с большим объёмом данных) превысит время жизни
access token, операция завершится с ошибкой аутентификации. В этом случае рекомендуется увеличить
время жизни access token на сервере авторизации.