Spec-Zone.ru › Elasticsearch 7
›Руководство по Elasticsearch [7.17] ›Защита Elastic Stack ›Аутентификация пользователей

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

Вы можете настроить функции безопасности Elastic Stack для поддержки аутентификации Kerberos V5, стандартного в отрасли протокола аутентификации пользователей в Elasticsearch.

Вы не можете использовать домен Kerberos для аутентификации на транспортном уровне сети.

Для аутентификации пользователей с помощью Kerberos необходимо настроить домен Kerberos и сопоставить пользователей с ролями. Дополнительную информацию о настройках домена см. в разделе Настройки домена Kerberos.

Основные понятия

При настройке доменов Kerberos вы столкнетесь с несколькими терминами и понятиями:

kdc
Центр распределения ключей. Сервис, который выдает билеты Kerberos.
principal

Принципал Kerberos — это уникальная идентификация, которой Kerberos может назначить билеты. Он может использоваться для идентификации пользователя или службы, предоставляемой сервером.

Имена принципалов Kerberos V5 имеют формат primary/instance@REALM, где primary — имя пользователя.

instance — необязательная строка, квалифицирующая основное имя и отделённая от него косой чертой (/). Для пользователя, как правило, она не используется; для хостов служб — это полное доменное имя хоста.

REALM — домен Kerberos. Обычно это доменное имя в верхнем регистре. Примером типичного имени принципала пользователя является user@ES.DOMAIN.LOCAL. Примером типичного имени принципала службы является HTTP/es.domain.local@ES.DOMAIN.LOCAL.

realm
Домены определяют административную границу, в рамках которой сервер аутентификации имеет право аутентифицировать пользователей и службы.
keytab
Файл, хранящий пары принципалов и криптографических ключей.

Любой, у кого есть права на чтение этого файла, может использовать данные для доступа к другим службам в сети, поэтому важно защитить его с помощью соответствующих прав доступа к файлам.

krb5.conf
Файл, содержащий конфигурационную информацию Kerberos, например, имя домена по умолчанию, расположение центров распределения ключей (KDC), информацию о доменах, сопоставления между доменными именами и доменами Kerberos и конфигурации по умолчанию для типов шифрования сеансовых ключей домена.
билет предоставления билета (TGT)
TGT — это билет аутентификации, созданный сервером аутентификации Kerberos. Он содержит зашифрованный идентификатор.

Настройка Kerberos-домена

Kerberos используется для защиты сервисов и использует протокол аутентификации на основе билетов для проверки подлинности пользователей. Вы можете настроить Elasticsearch для использования протокола аутентификации Kerberos V5, который является стандартным в индустрии, для проверки подлинности пользователей. В этом случае клиенты должны предоставить билеты Kerberos для аутентификации.

В Kerberos пользователи аутентифицируются с помощью службы аутентификации, а затем с помощью службы выдачи билетов для генерации TGT (билета выдачи билетов). Затем этот билет предоставляется сервису для проверки подлинности. Для получения дополнительной информации об получении TGT, обратитесь к документации вашей системы Kerberos. Клиенты Elasticsearch должны сначала получить TGT, а затем начать процесс аутентификации с Elasticsearch.

Перед началом

  1. Разверните Kerberos.

    Вам необходимо настроить инфраструктуру Kerberos в вашей среде.

    Для корректной работы Kerberos требуется множество внешних сервисов, таких как синхронизация времени между всеми машинами и функционирование прямых и обратных преобразований DNS в вашей домене. Для получения более подробной информации обратитесь к документации Kerberos.

    Данные инструкции не охватывают настройку и конфигурацию развертывания Kerberos. Где предоставляются примеры, они относятся к развертыванию MIT Kerberos V5. Для получения дополнительной информации см. документацию MIT Kerberos.

  2. Настройте Java GSS.

    Elasticsearch использует поддержку Java GSS-фреймворка для аутентификации Kerberos. Для поддержки аутентификации Kerberos Elasticsearch нуждается в следующих файлах:

    • krb5.conf, файл конфигурации Kerberos
    • Файл keytab, содержащий учетные данные для сервисного принципала Elasticsearch

    Требования к конфигурации зависят от вашей настройки Kerberos. Обратитесь к документации Kerberos для настройки файла krb5.conf.

    Для получения дополнительной информации о Java GSS, см. требования Java GSS для Kerberos

  3. Включите TLS для HTTP.

    Если ваш кластер Elasticsearch работает в режиме производства, вы должны настроить HTTP-интерфейс для использования SSL/TLS, прежде чем вы сможете включить аутентификацию Kerberos. Для получения дополнительной информации см. Защитить HTTP-клиентские коммуникации для Elasticsearch.

    Этот шаг необходим для поддержки аутентификации Kerberos через Kibana. Он не требуется для аутентификации Kerberos непосредственно по отношению к REST API Elasticsearch.

  4. Включите службу токенов

    Реализация Kerberos Elasticsearch использует службу токенов Elasticsearch. Если вы настраиваете TLS на HTTP-интерфейсе, эта служба автоматически включается. Ее можно явно настроить, добавив следующие настройки в файл elasticsearch.yml:

    xpack.security.authc.token.enabled: true

    Этот шаг необходим для поддержки аутентификации Kerberos через Kibana. Он не требуется для аутентификации Kerberos непосредственно по отношению к REST API Elasticsearch.

Создание Kerberos-домена

Для настройки Kerberos-домена в Elasticsearch:

  1. Настройте JVM для поиска файла конфигурации Kerberos.

    Elasticsearch использует Java GSS и JAAS Krb5LoginModule для поддержки аутентификации Kerberos с использованием механизма простой и защищенной GSSAPI-переговоров (SPNEGO). Файл конфигурации Kerberos (krb5.conf) предоставляет информацию, такую как имя домена по умолчанию, центр распределения ключей (KDC) и другие сведения, необходимые для аутентификации Kerberos. Когда JVM нуждается в некоторых свойствах конфигурации, оно пытается найти эти значения, найдя и загрузив этот файл. Свойство системы JVM для настройки пути к файлу — java.security.krb5.conf. Для настройки свойств системы JVM см. Настройка параметров JVM. Если это свойство системы не указано, Java пытается найти файл в соответствии с соглашениями.

    Рекомендуется настроить это свойство системы для Elasticsearch. Способ настройки этого свойства зависит от вашей инфраструктуры Kerberos. Для получения дополнительной информации обратитесь к документации Kerberos.

    Для получения дополнительной информации см. krb5.conf

  2. Создайте keytab для узла Elasticsearch.

    Keytab — это файл, который хранит пары принципалов и шифровальных ключей. Elasticsearch использует ключи из keytab для расшифровки билетов, представленных пользователем. Вы должны создать keytab для Elasticsearch, используя инструменты, предоставляемые вашей реализацией Kerberos. Например, некоторые инструменты для создания keytab — это ktpass.exe в Windows и kadmin для MIT Kerberos.

  3. Поместите файл keytab в каталог конфигурации Elasticsearch.

    Убедитесь, что этот файл keytab имеет разрешения на чтение. Этот файл содержит учетные данные, поэтому вы должны принять надлежащие меры для защиты.

    Elasticsearch использует Kerberos на сетевом уровне HTTP, поэтому на каждом узле Elasticsearch должен быть файл keytab для сервисного принципала HTTP. Имя сервисного принципала должно иметь формат HTTP/es.domain.local@ES.DOMAIN.LOCAL. Файлы keytab уникальны для каждого узла, так как они включают имя хоста. Узел Elasticsearch может действовать как любой принципал, который запрашивает клиент, при условии, что этот принципал и его учетные данные найдены в настроенном keytab.

  4. Создайте Kerberos-домен.

    Для включения аутентификации Kerberos в Elasticsearch, вы должны добавить Kerberos-домен в цепочке доменов.

    Вы можете настроить только один Kerberos-домен на узлах Elasticsearch.

    Для настройки Kerberos-домена вам необходимо настроить несколько обязательных параметров домена и другие необязательные параметры в файле конфигурации elasticsearch.yml. Добавьте конфигурацию домена в пространство имен xpack.security.authc.realms.kerberos.

    Наиболее распространенная конфигурация Kerberos-домена следующая:

    xpack.security.authc.realms.kerberos.kerb1:
      order: 3
      keytab.path: es.keytab
      remove_realm_name: false

    username извлекается из билета, представленного пользователем, и обычно имеет формат username@REALM. Этот username используется для сопоставления ролей с пользователем. Если параметр домена remove_realm_name установлен в значение true, часть домена (@REALM) удаляется. Полученный username используется для сопоставления ролей.

    Для получения подробной информации об доступных параметрах домена, см. Параметры Kerberos-домена.

  5. Перезапустите Elasticsearch
  6. Сопоставьте пользователей Kerberos с ролями.

    Домен kerberos позволяет сопоставлять пользователей Kerberos с ролями. Вы можете настроить эти сопоставления ролей, используя API создания или обновления сопоставлений ролей. Пользователей можно идентифицировать по полю username.

    В следующем примере используется API сопоставления ролей для сопоставления user@REALM с ролями monitoring и user:

    POST /_security/role_mapping/kerbrolemapping
    {
      "roles" : [ "monitoring_user" ],
      "enabled": true,
      "rules" : {
        "field" : { "username" : "user@REALM" }
      }
    }

    В случае, если вы хотите поддерживать аутентификацию Kerberos через разные домены, вам может потребоваться сопоставление ролей на основе имени домена Kerberos. Для таких случаев доступны дополнительные метаданные пользователя для сопоставления ролей: - kerberos_realm будет установлено в имя домена Kerberos. - kerberos_user_principal_name будет установлено в имя принципала пользователя из билета Kerberos.

    Для получения дополнительной информации см. Сопоставление пользователей и групп с ролями.

    Домен Kerberos поддерживает домены авторизации как альтернативу сопоставлению ролей.

Настройка Kibana для Kerberos

Если вы хотите использовать Kerberos для аутентификации через браузер и Kibana, вам необходимо включить соответствующий поставщик аутентификации в конфигурации Kibana. См. SSO Kerberos

© 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/kerberos-realm.html

Spec-Zone.ru

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