Настройка 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 Directorypemtrustedcas_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 в формате 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=/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
.
Назначение ролей
Для назначения ролей пользователям требуется:
- Перейти в раздел
Параметры системы - Настройки безопасности - Роли
. - Выберите существующую роль или создайте новую.
- Перейти во вкладку
Назначенные пользователи - Управлять назначением ролей
и добавить доменного пользователя или группу безопасности в параметрBackend роли
. - Сохранить новые параметры.