Проверка подлинности пользователей LDAP
Вы можете настроить функции безопасности Elastic Stack для взаимодействия с сервером Lightweight Directory Access Protocol (LDAP) для проверки подлинности пользователей. См. Настройка домена LDAP.
LDAP хранит пользователей и группы иерархически, аналогично тому, как папки группируются в файловой системе. Иерархия каталога LDAP строится из контейнеров, таких как организационная единица (ou), организация (o) и контроллер домена (dc).
Путь к записи — это отличительное имя (DN), которое однозначно идентифицирует пользователя или группу. Имена пользователей и групп обычно имеют атрибуты, такие как общее имя (cn) или уникальный идентификатор (uid). DN задаётся как строка, например, "cn=admin,dc=example,dc=com" (пробелы игнорируются).
Домен ldap поддерживает два режима работы: режим поиска пользователей и режим с определёнными шаблонами для DN пользователей.
Сопоставление групп LDAP с ролями
Неотъемлемой частью процесса проверки подлинности домена является определение ролей, связанных с авторизованным пользователем. Роли определяют привилегии пользователя в кластере.
Поскольку с доменом ldap пользователи управляются внешне на сервере LDAP, ожидается, что их роли также управляются там. Фактически, LDAP поддерживает понятие групп, которые часто представляют роли пользователей для различных систем в организации.
Домен ldap позволяет сопоставлять пользователей LDAP с ролями через их группы LDAP или другую метаданные. Это сопоставление ролей можно настроить с помощью API добавления сопоставления ролей или с помощью файла, хранящегося на каждом узле. При аутентификации пользователя с помощью LDAP привилегии этого пользователя являются объединением всех привилегий, определённых ролями, которым сопоставлен пользователь.
Настройка домена LDAP
Для интеграции с LDAP вы настраиваете домен ldap и сопоставляете группы LDAP с ролями пользователей.
-
Определите, какой режим вы хотите использовать. Домен
ldapподдерживает два режима работы: режим поиска пользователей и режим с определёнными шаблонами для DN пользователей.Поиск пользователей LDAP — это наиболее распространённый режим работы. В этом режиме используется конкретный пользователь с разрешением на поиск в каталоге LDAP для поиска DN аутентифицируемого пользователя на основе предоставленного имени пользователя и атрибута LDAP. После его нахождения пользователь аутентифицируется путём попытки привязаться к серверу LDAP, используя найденный DN и предоставленный пароль.
Если ваша среда LDAP использует несколько конкретных стандартных условий именования для пользователей, вы можете использовать шаблоны DN пользователей для настройки домена. Преимущество этого метода заключается в том, что поиск DN пользователя не требуется. Однако для нахождения правильного DN пользователя могут потребоваться несколько операций привязки.
-
Для настройки домена
ldapс поиском пользователей:-
Добавьте конфигурацию домена в
elasticsearch.ymlв пространстве имёнxpack.security.authc.realms.ldap. Как минимум, вы должны указатьurlсервера LDAP и установитьuser_search.base_dnв DN контейнера, где выполняются поиски пользователей. Если вы настраиваете несколько доменов, вы также должны явно установить атрибутorderдля управления порядком обращения к доменам во время аутентификации. См. Настройки домена LDAP для всех доступных параметров настройки доменаldap.Например, следующий фрагмент показывает конфигурацию домена LDAP с поиском пользователей:
xpack: security: authc: realms: ldap: ldap1: order: 0 url: "ldaps://ldap.example.com:636" bind_dn: "cn=ldapuser, ou=users, o=services, dc=example, dc=com" user_search: base_dn: "dc=example,dc=com" filter: "(cn={0})" group_search: base_dn: "dc=example,dc=com" files: role_mapping: "ES_PATH_CONF/role_mapping.yml" unmapped_groups_as_roles: falseПароль для пользователя
bind_dnдолжен быть настроен путём добавления соответствующей настройкиsecure_bind_passwordв хранилище ключей Elasticsearch. Например, следующая команда добавляет пароль для указанного выше домена:bin/elasticsearch-keystore add \ xpack.security.authc.realms.ldap.ldap1.secure_bind_password
При настройке доменов в
elasticsearch.ymlиспользуются только указанные вами домены для аутентификации. Если вы также хотите использовать доменыnativeилиfile, вы должны включить их в цепочку доменов.
-
-
Для настройки домена
ldapс шаблонами DN пользователей:-
Добавьте конфигурацию домена в
elasticsearch.ymlв пространстве имёнxpack.security.authc.realms.ldap. Как минимум, вы должны указатьurlсервера LDAP и указать по крайней мере один шаблон с параметромuser_dn_templates. Если вы настраиваете несколько доменов, вы также должны явно установить атрибутorderдля управления порядком обращения к доменам во время аутентификации. См. Настройки домена LDAP для всех доступных параметров настройки доменаldap.Например, следующий фрагмент показывает конфигурацию домена LDAP с шаблонами DN пользователей:
xpack: security: authc: realms: ldap: ldap1: order: 0 url: "ldaps://ldap.example.com:636" user_dn_templates: - "cn={0}, ou=users, o=marketing, dc=example, dc=com" - "cn={0}, ou=users, o=engineering, dc=example, dc=com" group_search: base_dn: "dc=example,dc=com" files: role_mapping: "/mnt/elasticsearch/group_to_role_mapping.yml" unmapped_groups_as_roles: falseНастройка
bind_dnне используется в режиме шаблонов. Все операции LDAP выполняются от имени аутентифицируемого пользователя.
-
-
(Необязательно) Настройте взаимодействие функций безопасности с несколькими серверами LDAP.
Настройка
load_balance.typeможет использоваться на уровне домена. Функции безопасности Elasticsearch поддерживают режимы работы резервного копирования и балансировки нагрузки. См. Настройки домена LDAP. - (Необязательно) Для защиты паролей, зашифруйте связь между Elasticsearch и сервером LDAP.
- Перезапустите Elasticsearch.
-
Сопоставьте группы LDAP с ролями.
Домен
ldapпозволяет сопоставлять пользователей LDAP с ролями через их группы LDAP или другие метаданные. Это сопоставление ролей можно настроить с помощью API добавления сопоставления ролей или с помощью файла, хранящегося на каждом узле. При аутентификации пользователя с помощью LDAP привилегии этого пользователя являются объединением всех привилегий, определённых ролями, которым сопоставлен пользователь.В определении сопоставления вы указываете группы, используя их отличительные имена. Например, следующая конфигурация сопоставления отображает группу LDAP
adminsв ролиmonitoringиuser, и отображает группуusersв рольuser.Настройка через API сопоставления ролей:
PUT /_security/role_mapping/admins { "roles" : [ "monitoring" , "user" ], "rules" : { "field" : { "groups" : "cn=admins,dc=example,dc=com" } }, "enabled": true }Отличительное имя (DN) группы LDAP
admins.PUT /_security/role_mapping/basic_users { "roles" : [ "user" ], "rules" : { "field" : { "groups" : "cn=users,dc=example,dc=com" } }, "enabled": true }Отличительное имя (DN) группы LDAP
users.Или, как альтернатива, через файл сопоставления ролей:
monitoring: - "cn=admins,dc=example,dc=com" user: - "cn=users,dc=example,dc=com" - "cn=admins,dc=example,dc=com"
Имя сопоставленной роли.
Отличительное имя (DN) группы LDAP
admins.Отличительное имя (DN) группы LDAP
users.Дополнительную информацию см. в разделах Сопоставление групп LDAP с ролями и Сопоставление пользователей и групп с ролями.
Домен LDAP поддерживает домены авторизации в качестве альтернативы сопоставлению ролей.
-
(Необязательно) Настройте настройку
metadataв домене LDAP для включения дополнительных полей в метаданные пользователя.По умолчанию,
ldap_dnиldap_groupsзаполняются в метаданных пользователя. Дополнительную информацию см. в Метаданные пользователя в домене LDAP.В примере ниже общее имя пользователя (
cn) включено в качестве дополнительного поля в его метаданные.xpack: security: authc: realms: ldap: ldap1: metadata: cn - Настройте SSL для шифрования связи между Elasticsearch и LDAP. См. Шифрование связи между Elasticsearch и LDAP.
Метаданные пользователя в домене LDAP
При аутентификации пользователя через домен LDAP следующие свойства заполняются в метаданных пользователя:
Поле | Описание |
| Отличительное имя пользователя. |
| Отличительное имя каждой из групп, разрешённых для пользователя (независимо от того, были ли эти группы сопоставлены с ролью). |
Эти метаданные возвращаются в API authenticate и могут использоваться с шаблонизированными запросами в ролях.
Дополнительные поля могут быть включены в метаданные пользователя, настроив параметр metadata в домене LDAP. Эти метаданные доступны для использования с API сопоставления ролей или в шаблонизированных запросах к роли.
Выравнивание нагрузки и резервирование
Параметр load_balance.type на уровне домена может использоваться для настройки взаимодействия функций безопасности с несколькими серверами LDAP. Функции безопасности поддерживают режимы резервирования и выравнивания нагрузки.
Шифрование связи между Elasticsearch и LDAP
Для защиты учётных данных пользователя, передаваемых для аутентификации в домене LDAP, настоятельно рекомендуется шифровать связь между Elasticsearch и вашим сервером LDAP. Подключение через SSL/TLS гарантирует аутентификацию личности сервера LDAP перед тем, как Elasticsearch передаст учётные данные пользователя, и шифрует содержимое подключения. Клиентам и узлам, подключающимся через TLS к серверу LDAP, необходимо иметь сертификат сервера LDAP или корневой сертификат CA сервера в их хранилище ключей или доверенных сертификатов.
Дополнительную информацию см. в разделе Аутентификация пользователей LDAP.
-
Настройте параметры TLS домена на каждом узле, чтобы доверять сертификатам, подписанным центром сертификации, который подписал сертификаты вашего сервера LDAP. Следующий пример демонстрирует, как доверять сертификату центра сертификации,
cacert.pem, расположенному в каталоге конфигурации Elasticsearch Расположение файлов конфигурации:xpack: security: authc: realms: ldap: ldap1: order: 0 url: "ldaps://ldap.example.com:636" ssl: certificate_authorities: [ "cacert.pem" ]В примере выше сертификат CA должен быть закодирован в формате PEM.
Также поддерживаются файлы PKCS#12 и JKS — см. описание
ssl.truststore.pathв разделе Настройки домена LDAP.Вы также можете указать отдельные сертификаты сервера вместо сертификата CA, но это рекомендуется только в случае одного сервера LDAP или если сертификаты самоподписанные.
- Установите атрибут
urlв конфигурации домена, чтобы указать протокол LDAPS и номер безопасного порта. Например,url: ldaps://ldap.example.com:636. - Перезапустите Elasticsearch.
По умолчанию, когда вы настраиваете Elasticsearch для подключения к серверу LDAP с использованием SSL/TLS, он пытается проверить имя хоста или IP-адрес, указанный в атрибуте url в конфигурации домена, со значениями в сертификате. Если значения в сертификате и конфигурации домена не совпадают, Elasticsearch не позволяет подключиться к серверу LDAP. Это делается для защиты от атак «человек посередине». При необходимости, вы можете отключить это поведение, установив свойство ssl.verification_mode на certificate.
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/ldap-realm.html