Настройка LDAP и LDAPS
Условные обознначения
$OS_HOME- домашняя директория установки OpenSearch, обычно/app/opensearch$OS_CONFIG- директория конфигурационных файлов OpenSearch, обычно${OS_HOME}/config
Создание резервной копии
Все действия, описанные в статье, следует выполнять на том сервере кластера, где размещены сертификат и закрытый ключ пользователя admin (обычно это первый узел кластера). Конфигурация обычно расположена в директории $OS_CONFIG/opensearch-security/config/yml.
Сделайте резервную копию текущей конфигурации следующей командой:
JAVA_HOME=$OS_HOME/jdk/ $OS_HOME/plugins/opensearch-security/tools/securityadmin.sh -h 127.0.0.1 \
-cacert $OS_CONFIG/ca-cert.pem \
-cert $OS_CONFIG/admin-cert.pem \
-key $OS_CONFIG/admin-key.pem \
--accept-red-cluster -nhnv -icl \
-backup $OS_CONFIG/opensearch-security/
Резервная копия будет сохранена в директории $OS_CONFIG/opensearch-security.
Подробнее про утилиту securityadmin можно прочитать в документации плагина Security.
Настройка LDAP
Active Directory и LDAP могут использоваться как для аутентификации, так и для авторизации (разделы конфигурации authc и authz соответственно). Аутентификация проверяет, ввел ли пользователь действительные учетные данные. Авторизация извлекает все серверные роли для пользователя. В большинстве случаев требуется настроить как аутентификацию, так и авторизацию. Вы также можете использовать только аутентификацию и сопоставить пользователей, полученных из LDAP, непосредственно с ролями системы. Все изменения производятся в конфигурационном файле config.yml.
В разделе authc и authz требуется заполнить параметры конфигурации ldap, перечисленные в таблице ниже.
Не указывайте пароли в открытом виде в файлах конфигурации. Приведенные ниже примеры используют your_actual_password_here только для демонстрации. В реальной среде используйте один из безопасных методов.
1 метод
Способ 1: Настройка через systemd
- Для редактирования настроек сервиса выполните:
sudo systemctl edit opensearch.service
- Добавьте следующие строки, заменив
your_actual_password_hereна реальный пароль:
[Service]
Environment="LDAP_PASSWORD=your_actual_password_here"
- Перезагрузите daemon systemd и перезапустите
opensearch.service:
sudo systemctl daemon-reload
sudo systemctl restart opensearch.service
Способ 2: Использование файла окружения
- Добавьте переменную в файл
$OS_CONFIG/environment:
LDAP_PASSWORD=your_actual_password_here
- Перезапустите
opensearch.service:
sudo systemctl restart opensearch.service
Общие шаги для обоих способов:
-
В файле
$OS_CONFIG/opensearch-security/config.ymlзамените строку с паролемpassword: "your_actual_password_here"наpassword: "${env.LDAP_PASSWORD}" -
Примените конфигурацию с помощью
securityadmin.sh:
JAVA_HOME=$OS_HOME/jdk/ $OS_HOME/plugins/opensearch-security/tools/securityadmin.sh
-h <host_os>
-icl
-nhnv
-cacert $OS_CONFIG/ca-cert.pem
-cert $OS_CONFIG/admin-cert.pem
-key $OS_CONFIG/admin-key.pem
-t config
-f $OS_CONFIG/opensearch-security/config.yml
2 метод
- Экспортируйте переменную окружения:
export LDAP_PASSWORD=<your_actual_password_here>
- В файле
config.ymlиспользуйте ссылку на переменную::
password: "${env.LDAP_PASSWORD}"
Применяя конфигурацию, используйте флаг --resolve-env-vars (или -rev). Этот флаг подставит актуальное значение переменной в файл конфигурации перед его отправкой в кластер. Это означает, что пароль будет виден в самом файле конфигурации внутри кластера.
При создании резервной копии конфигурации безопасности (security) учтите, что пароль будет виден.
JAVA_HOME=$OS_HOME/jdk/ $OS_HOME/plugins/opensearch-security/tools/securityadmin.sh
-h <host_os>
-icl
-nhnv
-cacert $OS_CONFIG/ca-cert.pem
-cert $OS_CONFIG/admin-cert.pem
-key $OS_CONFIG/admin-key.pem
-t config
-f $OS_CONFIG/opensearch-security/config.yml
--resolve-env-vars
- Удалите переменную из окружения:
unset LDAP_PASSWORD
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
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=$OS_HOME/jdk/ $OS_HOME/plugins/opensearch-security/tools/securityadmin.sh \
-cacert $OS_CONFIG/ca-cert.pem \
-cert $OS_CONFIG/admin-cert.pem \
-key $OS_CONFIG/admin-key.pem \
--accept-red-cluster --clustername <CLUSTER_NAME> \
-f $OS_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 Directorypemtrustedcas_content- содержимое корневого центра сертификации вашего сервера Active Directory, не используется вместе с параметромpemtrustedcas_filepath
Аутентификация клиента
Если вы используете аутентификацию клиента TLS, плагин безопасности отправляет сертификат PEM-узла, как настроено в opensearch.yml. Установите один из следующих параметров конфигурации:
pemkey_filepath- абсолютный путь к файлу, содержащему закрытый ключ вашего сертификата, используется в паре с параметрамиpemkey_passwordиpemcert_filepathpemkey_password- пароль вашего закрытого ключа, если таковой имеетсяpemcert_filepath- абсолютный путь к сертификату клиента, используется в паре с параметрамиpemkey_passwordиpemkey_filepathpemkey_content- содержимое закрытого ключа вашего сертификата, используется в паре с параметрамиpemkey_passwordиpemcert_content, не используется вместе с параметромpemkey_filepathpemcert_content- содержимое сертификата клиента, используется в паре с параметрамиpemkey_passwordиpemkey_content, не используется вместе с параметромpemkey_filepath
Включенные шифры и протоколы
Вы можете ограничить разрешенные шифры и протоколы TLS для соединения LDAP. Например, вы можете разрешить только надежные шифры и ограничить версии TLS самыми последними с помощью настройки следующих параметров:
enabled_ssl_ciphers- список с включенными шифрами TLS в формате Javaenabled_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=$OS_HOME/jdk/ $OS_HOME/plugins/opensearch-security/tools/securityadmin.sh \
-cacert $OS_CONFIG/ca-cert.pem \
-cert $OS_CONFIG/admin-cert.pem \
-key $OS_CONFIG/admin-key.pem \
--accept-red-cluster --clustername <CLUSTER_NAME> \
-f $OS_CONFIG/opensearch-security/config.yml \
-t config -h <OPENSEARCH_NODE>
Будет обновлена конфигурация только типа config из файла config.yml.
Назначение ролей
Для назначения ролей пользователям требуется:
- Перейти в раздел
Параметры системы-Настройки безопасности-Роли. - Выберите существующую роль или создайте новую.
- Перейти во вкладку
Назначенные пользователи-Управлять назначением ролейи добавить доменного пользователя или группу безопасности в параметрBackend роли. - Сохранить новые параметры.