Модули безопасности#

Модуль безопасности (Security Provider) — это именованный объект каталога, хранящий конфигурацию внешней системы аутентификации. Каталог поддерживает подключение нескольких модулей безопасности различных типов. После создания модуля его можно назначить пользователям каталога: при входе в систему их пароль будет проверяться во внешней системе.

Текущая версия поддерживает следующие типы модулей безопасности:

  • local — встроенный модуль, не требующий конфигурации. Пользователи аутентифицируются по паролю, хранящемуся в самом каталоге. Используется по умолчанию для всех новых пользователей.

  • ldap — аутентификация через внешний LDAP-сервер. См. Модуль безопасности LDAP.

Назначение модуля безопасности пользователю#

За выбор способа аутентификации пользователя отвечает параметр 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:

Модуль безопасности 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

Да

URL-адрес LDAP-сервера в формате ldap[s]://host[:port]. Пример: ldaps://ldap.example.com:636

bind-user-dn

Да

Distinguished Name сервисной учётной записи для подключения к LDAP. Пример: cn=admin,dc=example,dc=com

bind-password

Да

Пароль сервисной учётной записи

user-dn-pattern

Да (режим шаблона DN)

Шаблон DN пользователя, должен содержать ${USER}. Несколько шаблонов разделяются двоеточием. Пример: cn=${USER},ou=users,dc=example,dc=com

user-search-base

Да (режим поиска)

Базовый DN для поиска пользователя. Пример: ou=users,dc=example,dc=com

user-search-filter

Да (режим поиска)

Фильтр LDAP для поиска пользователя, должен содержать ${USER}. Пример: (&(objectClass=inetOrgPerson)(uid=${USER}))

allow-insecure

Нет

false

Разрешает подключение к LDAP-серверу без использования TLS (только для ldap://). Не рекомендуется в production

ssl-truststore-path

Нет

Путь к truststore в формате PEM или JKS относительно resource-dir каталога. Используется для проверки сертификата LDAP-сервера

ssl-truststore-password

Нет

Пароль для truststore

ssl-keystore-path

Нет

Путь к keystore в формате PEM или JKS относительно resource-dir каталога. Используется при взаимной TLS-аутентификации

ssl-keystore-password

Нет

Пароль для keystore

ignore-referrals

Нет

false

Игнорировать LDAP-перенаправления на другие серверы. Установите в true, если поиск должен выполняться только на одном LDAP-сервере

connect-timeout

Нет

отсутствует

Таймаут установления соединения с LDAP-сервером, в миллисекундах

read-timeout

Нет

отсутствует

Таймаут чтения данных из LDAP-сервера, в миллисекундах

cache-ttl

Нет

300000 (5 минут)

Время жизни кэша результатов аутентификации, в миллисекундах. Значение 0 отключает кэш

cache-max-size

Нет

1000

Максимальное количество записей в кэше. Значение 0 отключает кэш

Примечание

Параметры user-dn-pattern и user-search-base/user-search-filter являются взаимоисключающими: необходимо задать либо шаблон DN, либо параметры поиска, но не оба одновременно.