Spec-Zone.ru › Elasticsearch 7
›Руководство по Elasticsearch [7.17] ›Обеспечение безопасности Elastic Stack ›Проверка подлинности пользователей

Проверка подлинности пользователей 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 с ролями пользователей.

  1. Определите, какой режим вы хотите использовать. Домен ldap поддерживает два режима работы: режим поиска пользователей и режим с определёнными шаблонами для DN пользователей.

    Поиск пользователей LDAP — это наиболее распространённый режим работы. В этом режиме используется конкретный пользователь с разрешением на поиск в каталоге LDAP для поиска DN аутентифицируемого пользователя на основе предоставленного имени пользователя и атрибута LDAP. После его нахождения пользователь аутентифицируется путём попытки привязаться к серверу LDAP, используя найденный DN и предоставленный пароль.

    Если ваша среда LDAP использует несколько конкретных стандартных условий именования для пользователей, вы можете использовать шаблоны DN пользователей для настройки домена. Преимущество этого метода заключается в том, что поиск DN пользователя не требуется. Однако для нахождения правильного DN пользователя могут потребоваться несколько операций привязки.

  2. Для настройки домена ldap с поиском пользователей:

    1. Добавьте конфигурацию домена в 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, вы должны включить их в цепочку доменов.

  3. Для настройки домена ldap с шаблонами DN пользователей:

    1. Добавьте конфигурацию домена в 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 выполняются от имени аутентифицируемого пользователя.

  4. (Необязательно) Настройте взаимодействие функций безопасности с несколькими серверами LDAP.

    Настройка load_balance.type может использоваться на уровне домена. Функции безопасности Elasticsearch поддерживают режимы работы резервного копирования и балансировки нагрузки. См. Настройки домена LDAP.

  5. (Необязательно) Для защиты паролей, зашифруйте связь между Elasticsearch и сервером LDAP.
  6. Перезапустите Elasticsearch.
  7. Сопоставьте группы 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 поддерживает домены авторизации в качестве альтернативы сопоставлению ролей.

  8. (Необязательно) Настройте настройку metadata в домене LDAP для включения дополнительных полей в метаданные пользователя.

    По умолчанию, ldap_dn и ldap_groups заполняются в метаданных пользователя. Дополнительную информацию см. в Метаданные пользователя в домене LDAP.

    В примере ниже общее имя пользователя (cn) включено в качестве дополнительного поля в его метаданные.

    xpack:
      security:
        authc:
          realms:
            ldap:
              ldap1:
                metadata: cn
  9. Настройте SSL для шифрования связи между Elasticsearch и LDAP. См. Шифрование связи между Elasticsearch и LDAP.

Метаданные пользователя в домене LDAP

При аутентификации пользователя через домен LDAP следующие свойства заполняются в метаданных пользователя:

Поле

Описание

ldap_dn

Отличительное имя пользователя.

ldap_groups

Отличительное имя каждой из групп, разрешённых для пользователя (независимо от того, были ли эти группы сопоставлены с ролью).

Эти метаданные возвращаются в API authenticate и могут использоваться с шаблонизированными запросами в ролях.

Дополнительные поля могут быть включены в метаданные пользователя, настроив параметр metadata в домене LDAP. Эти метаданные доступны для использования с API сопоставления ролей или в шаблонизированных запросах к роли.

Выравнивание нагрузки и резервирование

Параметр load_balance.type на уровне домена может использоваться для настройки взаимодействия функций безопасности с несколькими серверами LDAP. Функции безопасности поддерживают режимы резервирования и выравнивания нагрузки.

См. Выравнивание нагрузки и резервирование.

Шифрование связи между Elasticsearch и LDAP

Для защиты учётных данных пользователя, передаваемых для аутентификации в домене LDAP, настоятельно рекомендуется шифровать связь между Elasticsearch и вашим сервером LDAP. Подключение через SSL/TLS гарантирует аутентификацию личности сервера LDAP перед тем, как Elasticsearch передаст учётные данные пользователя, и шифрует содержимое подключения. Клиентам и узлам, подключающимся через TLS к серверу LDAP, необходимо иметь сертификат сервера LDAP или корневой сертификат CA сервера в их хранилище ключей или доверенных сертификатов.

Дополнительную информацию см. в разделе Аутентификация пользователей LDAP.

  1. Настройте параметры 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 или если сертификаты самоподписанные.

  2. Установите атрибут url в конфигурации домена, чтобы указать протокол LDAPS и номер безопасного порта. Например, url: ldaps://ldap.example.com:636.
  3. Перезапустите 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API