LDAP аутентификация#
CedrusData позволяет аутентифицировать пользователей с помощью LDAP на основе наличия их учетной записи на сервере LDAP и/или проверке их членства в определенной LDAP группе.
Примечание
Данный раздел содержит документацию об аутентификации пользователя в кластере CedrusData с помощью LDAP. Документация о получении из LDAP групп, в которых состоит пользователь, находится в Управление группами пользователей с помощью LDAP.
Важно
Для использования любого механизма аутентификации необходимо предварительно включить Шифрование клиентского трафика с помощью TLS и Аутентификация узлов в кластере (shared secret).
Конфигурация#
Конфигурацию необходимо задать на координаторе.
Задайте механизм аутентификации PASSWORD
в etc/config.properties
:
http-server.authentication.type=PASSWORD
Создайте файл etc/password-authenticator.properties
, и задайте параметры конфигурации LDAP, как описано ниже.
Конфигурация разделена на две части: подключение к LDAP и параметры аутентификации.
Параметры подключения к LDAP#
Название |
Описание |
---|---|
|
Тип аутентификатора. Должен иметь значение |
|
URL-адрес сервера LDAP. URL должен начинаться с |
|
Разрешить подключение к LDAP без использования TLS. Значение по умолчанию: |
|
Путь к файлу keystore в формате PEM или JKS. Обязателен при использовании TLS. |
|
Пароль keystore. Обязателен при использовании TLS. |
|
Путь к файлу truststore в формате PEM или JKS. Если не задан, будет использован файл |
|
Пароль truststore. |
|
Игнорировать перенаправление на другие сервера LDAP при выполнении запросов.
Включение данного параметра гарантирует, что все запросы будут отправлены строго к серверу, указанному в |
|
Таймаут для установления соединения с сервером LDAP. По умолчанию таймаут отсутствует. |
|
Таймаут чтения данных LDAP. По умолчанию таймаут отсутствует. |
Параметры аутентификации#
CedrusData поддерживает два режима аутентификации в LDAP:
Если параметр
ldap.bind-dn
не задан, CedrusData подключается к серверу LDAP от имени текущего пользователя, используяldap.user-bind-pattern
с подставленным именем текущего пользователя в качестве имени пользователя LDAP, и пароль текущего пользователя в качестве пароля LDAP. Если подключение произведено успешно, CedrusData может опционально проверить членство пользователя в группе LDAP с помощью параметровldap.user-base-dn
иldap.group-auth-pattern
.Если задан параметр
ldap.bind-dn
, CedrusData подключается к серверу LDAP от имени системного пользователя, используяldap.bind-dn
в качестве имени пользователя LDAP иldap.bind-password
в качестве пароля LDAP. далее CedrusData производит обязательную проверку, входит ли текущий пользователь CedrusData в конкретную группу LDAP, с помощью параметровldap.user-base-dn
иldap.group-auth-pattern
. После этого CedrusData проверяет совпадение пароля текущего пользователя с его паролем в LDAP.
Название |
Описание |
---|---|
|
Паттерн для формирования distinguished name пользователя. Паттерн должен содержать строку |
|
Паттерн для проверки членства пользователя в группе.
Должен представлять собой запрос к объекту пользователя, в который добавлен фильтр на вхождение пользователя в определенную группу.
Паттерн должен содержать строку |
|
Базовый distinguished name относительно которого будет происходить проверка членства пользователя в группе авторизации.
Параметр будет использован, только если задан параметр |
|
Distinguished name системного пользователя от имени которого будут происходить подключение к LDAP.
Если данный параметр указан, аутентификация пользователя будет происходить на основе его членства в группе, заданной параметром |
|
Пароль системного пользователя от имени которого будут происходить подключение к LDAP.
Используется, только если задан параметр |
|
Как долго кэшировать результат аутентификации пользователя. Значение по умолчанию: |
Типичные значения параметра ldap.user-bind-pattern
:
Active Directory:
${USER}@<domain_name_of_the_server>
. Например:${USER}@corp.example.com
.OpenLDAP:
uid=${USER},<distinguished_name_of_the_user>
. Например:uid=${USER},OU=America,DC=corp,DC=example,DC=com
.
Типичные значения параметра ldap.group-auth-pattern
:
Active Directory:
(&(objectClass=<objectclass_of_user>)(sAMAccountName=${USER})(memberof=<dn_of_the_authorized_group>))
. Например:(&(objectClass=person)(sAMAccountName=${USER})(memberof=CN=AuthorizedGroup,OU=Asia,DC=corp,DC=example,DC=com))
.OpenLDAP:
(&(objectClass=<objectclass_of_user>)(uid=${USER})(memberof=<dn_of_the_authorized_group>))
. Например:(&(objectClass=inetOrgPerson)(uid=${USER})(memberof=CN=AuthorizedGroup,OU=Asia,DC=corp,DC=example,DC=com))
.
Типичные значения параметра ldap.bind-dn
:
Active Directory:
<user>@<domain_name_of_the_server>
. Например:admin@corp.example.com
.OpenLDAP:
uid=<user>,<distinguished_name_of_the_user>
. Например:uid=admin,OU=America,DC=corp,DC=example,DC=com
.
Конфигурация узла координатора Trino#
Доступ к координатору Trino должен осуществляться через HTTPS, настроенный, как описано в TLS и HTTPS.
Вам также необходимо внести изменения в файлы конфигурации Trino. Аутентификация LDAP настраивается на координаторе в два этапа.
Первая часть - включить поддержку HTTPS и аутентификацию по паролю в файле координатора config.properties
.
Вторая часть - настроить LDAP в качестве плагина проверки подлинности пароля.
Примеры конфигурации#
Ниже приведены примеры параметров конфигурации, которые необходимо задать в файле etc/password-authenticator.properties
на координаторе.
Примеры используют Секреты в файлах конфигурации для передачи паролей из переменных окружения.
Простая аутентификация в OpenLDAP:
password-authenticator.name=ldap
ldap.url=ldaps://ldap-server:636
ldap.ssl.keystore.path=/path/to/keystore.pem
ldap.ssl.keystore.password=${ENV:LDAP_KEYSTORE_PASSWORD}
ldap.user-bind-pattern=uid=${USER},OU=America,DC=corp,DC=example,DC=com
Простая аутентификация в ActiveDirectory:
password-authenticator.name=ldap
ldap.url=ldaps://ldap-server:636
ldap.ssl.keystore.path=/path/to/keystore.pem
ldap.ssl.keystore.password=${ENV:LDAP_KEYSTORE_PASSWORD}
ldap.user-bind-pattern=uid=${USER}@corp.example.com
Аутентификация с помощью системного пользователя в OpenLDAP:
password-authenticator.name=ldap
ldap.url=ldaps://ldap-server:636
ldap.ssl.keystore.path=/path/to/keystore.pem
ldap.ssl.keystore.password=${ENV:LDAP_KEYSTORE_PASSWORD}
ldap.bind-dn=uid=admin,OU=America,DC=corp,DC=example,DC=com
ldap.bind-password=${ENV:LDAP_BIND_PASSWORD}
ldap.group-auth-pattern=(&(objectClass=inetOrgPerson)(uid=${USER})(memberof=CN=AuthorizedGroup,OU=Asia,DC=corp,DC=example,DC=com))
ldap.user-base-dn=OU=Asia,DC=corp,DC=example,DC=com
Аутентификация с помощью системного пользователя в Active Directory:
password-authenticator.name=ldap
ldap.url=ldaps://ldap-server:636
ldap.ssl.keystore.path=/path/to/keystore.pem
ldap.ssl.keystore.password=${ENV:LDAP_KEYSTORE_PASSWORD}
ldap.bind-dn=admin@corp.example.com
ldap.bind-password=${ENV:LDAP_BIND_PASSWORD}
ldap.group-auth-pattern=(&(objectClass=person)(sAMAccountName=${USER})(memberof=CN=AuthorizedGroup,OU=Asia,DC=corp,DC=example,DC=com))
ldap.user-base-dn=OU=Asia,DC=corp,DC=example,DC=com
Устранение неисправностей#
Проверка keystore#
Проверьте пароль для keystore и просмотрите его содержимое, используя Проверка keystore.
Логирование LDAP#
Вы можете включить логирование операций с LDAP, добавив следующую строку в файл etc/log.properties
:
io.trino.plugin.password=DEBUG