Перейти к основному содержимому
Версия: 4.1

Настройка LDAP и LDAPS

Создание резервной копии

Все действия в статье рекомендуется производить на первом созданном узле кластера. Конфигурация обычно расположена в директории /app/opensearch/config/opensearch-security/config/yml.

предупреждение

Сделайте резервную копию текущей конфигурации следующей командой:

JAVA_HOME=/app/opensearch/jdk/ /app/opensearch/plugins/opensearch-security/tools/securityadmin.sh -h 127.0.0.1 \
-cacert /app/opensearch/config/ca-cert.pem \
-cert /app/opensearch/config/admin-cert.pem \
-key /app/opensearch/config/admin-key.pem \
--accept-red-cluster -nhnv -icl \
-backup /app/opensearch/config/opensearch-security/

Резервная копия будет сохранена в директории /app/opensearch/config/opensearch-security.

Подробнее про утилиту securityadmin можно прочитать в документации плагина Security.

Настройка LDAP

Active Directory и LDAP могут использоваться как для аутентификации, так и для авторизации (разделы конфигурации authc и authz соответственно). Аутентификация проверяет, ввел ли пользователь действительные учетные данные. Авторизация извлекает все серверные роли для пользователя. В большинстве случаев требуется настроить как аутентификацию, так и авторизацию. Вы также можете использовать только аутентификацию и сопоставить пользователей, полученных из LDAP, непосредственно с ролями системы. Все изменения производятся в конфигурационном файле config.yml.

В разделе authc и authz требуется заполнить параметры конфигурации ldap, перечисленные в таблице ниже.

ПараметрОписаниеЗначение по умолчанию
http_enabledВключает или отключает аутентификацию на уровне REST.true
transport_enabledВключает или отключает аутентификацию на транспортном уровне.true
hostsИспользуется для того, чтобы настроить имя хоста и порт серверов Active Directory.[]
bind_dnУчетная запись для подключения к Active Directory.
passwordПароль учетной записи для подключения к Active Directory. Если в пароле используются спецсимволы, он должен быть указан в одинарных кавычках.
userbaseФильтр, используемый в LDAP-запросе при выгрузке пользователей.
skip_usersСписок пользователей, которых следует пропустить при получении ролей. Поддерживаются подстановочные знаки и регулярные выражения.[]

Применение конфигурации

Пример заполненного config.yml
authc:
basic_internal_auth_domain:
description: Authenticate via HTTP Basic against internal users database
http_enabled: true
transport_enabled: true
order: 1
http_authenticator:
type: basic
challenge: true
authentication_backend:
type: intern
ldap:
description: Authenticate via LDAP or Active Directory
http_enabled: true
transport_enabled: true
order: 2
http_authenticator:
type: basic
challenge: false
authentication_backend:
type: ldap
config:
enable_ssl: false
enable_start_tls: false
enable_ssl_client_auth: false
verify_hostnames: false
hosts:
- 'primary.ldap.example.com:389'
- 'secondary.ldap.example.com:389'
bind_dn: admin@example.com
password: p@ssword
userbase: 'ou=people,dc=example,dc=com'
usersearch: '(sAMAccountName={0})'
username_attribute: sAMAccountName
skip_users:
- kibanaserver
- 'cn=Jane Doe,ou*people,o=TEST'
- /\S*/

Для применения новой конфигурации требуется запустить securityadmin.sh. Установите свои значения для OPENSEARCH_NODE и CLUSTER_NAME.

JAVA_HOME=/app/opensearch/jdk/ /app/opensearch/plugins/opensearch-security/tools/securityadmin.sh \
-cacert /app/opensearch/config/ca-cert.pem \
-cert /app/opensearch/config/admin-cert.pem \
-key /app/opensearch/config/admin-key.pem \
--accept-red-cluster --clustername <CLUSTER_NAME> \
-f /app/opensearch/config/opensearch-security/config.yml \
-t config -h <OPENSEARCH_NODE>
примечание

Будет обновлена конфигурация только типа config из файла config.yml.

Настройка LDAPS

предупреждение

При настройке отдельного корневого центра сертификации для LDAPS обязательно включите этот параметр во все экземпляры настроек LDAP, в том числе в параметры authc и authz.

Для настройки подключения к LDAP, используя SSL, требуется заполнить параметры конфигурации ldap, перечисленные в таблице ниже.

ПараметрОписаниеЗначение по умолчанию
enable_sslВключает или отключает SSL для LDAP (LDAPS).false
enable_start_tlsВключает или отключает STARTTLS. Невозможно использовать в сочетании с LDAPS.false
enable_ssl_client_authОпределяет, отправлять ли сертификат клиента на сервер LDAP.false
verify_hostnamesОпределяет, следует ли проверять имена хостов сертификата сервера.false

Проверка сертификатов

По умолчанию, плагин Security проверяет сертификат серверов LDAP на соответствие корневому центру сертификации, настроенному в opensearch.yml (plugins.security.ssl.transport.pemtrustedcas_filepath и plugins.security.ssl.transport.truststore_filepath).

Если ваш сервер использует сертификат, подписанный другим центром сертификации, импортируйте этот центр сертификации в свое хранилище доверенных сертификатов или добавьте его в файл доверенного центра сертификации на каждом узле:

  • pemtrustedcas_filepath - абсолютный путь к файлу PEM, содержащему корневые центры сертификации вашего сервера Active Directory
  • pemtrustedcas_content - содержимое корневого центра сертификации вашего сервера Active Directory, не используется вместе с параметром pemtrustedcas_filepath

Аутентификация клиента

Если вы используете аутентификацию клиента TLS, плагин безопасности отправляет сертификат PEM-узла, как настроено в opensearch.yml. Установите один из следующих параметров конфигурации:

  • pemkey_filepath - абсолютный путь к файлу, содержащему закрытый ключ вашего сертификата, используется в паре с параметрами pemkey_password и pemcert_filepath
  • pemkey_password - пароль вашего закрытого ключа, если таковой имеется
  • pemcert_filepath - абсолютный путь к сертификату клиента, используется в паре с параметрами pemkey_password и pemkey_filepath
  • pemkey_content - содержимое закрытого ключа вашего сертификата, используется в паре с параметрами pemkey_password и pemcert_content, не используется вместе с параметром pemkey_filepath
  • pemcert_content - содержимое сертификата клиента, используется в паре с параметрами pemkey_password и pemkey_content, не используется вместе с параметром pemkey_filepath

Включенные шифры и протоколы

Вы можете ограничить разрешенные шифры и протоколы TLS для соединения LDAP. Например, вы можете разрешить только надежные шифры и ограничить версии TLS самыми последними с помощью настройки следующих параметров:

  • enabled_ssl_ciphers - список с включенными шифрами TLS в формате Java
  • enabled_ssl_protocols - список со включенными протоколами TLS в формате Java

Применение конфигурации

Пример заполненного config.yml
authc:
basic_internal_auth_domain:
description: Authenticate via HTTP Basic against internal users database
http_enabled: true
transport_enabled: true
order: 1
http_authenticator:
type: basic
challenge: true
authentication_backend:
type: intern
ldap:
description: Authenticate via LDAP or Active Directory
http_enabled: true
transport_enabled: true
order: 2
http_authenticator:
type: basic
challenge: false
authentication_backend:
type: ldap
config:
enable_ssl: true
enable_start_tls: true
enable_ssl_client_auth: true
verify_hostnames: true
pemtrustedcas_filepath: /app/opensearch/config/trusted_cas.pem
pemkey_filepath: /app/opensearch/config/private.key.pem
pemkey_password: p@ssword
pemcert_filepath: /app/opensearch/config/certificate.pem
enabled_ssl_ciphers:
- TLS_DHE_RSA_WITH_AES_256_CBC_SHA
- TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
enabled_ssl_protocols:
- TLSv1.1
- TLSv1.2
hosts:
- 'primary.ldap.example.com:389'
- 'secondary.ldap.example.com:389'
bind_dn: admin@example.com
password: p@ssword
userbase: 'ou=people,dc=example,dc=com'
usersearch: '(sAMAccountName={0})'
username_attribute: sAMAccountName
skip_users:
- kibanaserver
- 'cn=Jane Doe,ou*people,o=TEST'
- /\S*/

Для применения новой конфигурации требуется запустить securityadmin.sh. Установите свои значения для OPENSEARCH_NODE и CLUSTER_NAME.

JAVA_HOME=/app/opensearch/jdk/ /app/opensearch/plugins/opensearch-security/tools/securityadmin.sh \
-cacert /app/opensearch/config/ca-cert.pem \
-cert /app/opensearch/config/admin-cert.pem \
-key /app/opensearch/config/admin-key.pem \
--accept-red-cluster --clustername <CLUSTER_NAME> \
-f /app/opensearch/config/opensearch-security/config.yml \
-t config -h <OPENSEARCH_NODE>
примечание

Будет обновлена конфигурация только типа config из файла config.yml.

Назначение ролей

Для назначения ролей пользователям требуется:

  1. Перейти в раздел Параметры системы - Настройки безопасности - Роли.
  2. Выберите существующую роль или создайте новую.
  3. Перейти во вкладку Назначенные пользователи - Управлять назначением ролей и добавить доменного пользователя или группу безопасности в параметр Backend роли.
  4. Сохранить новые параметры.