Spec-Zone.ru › Elasticsearch 8
›Руководство по Elasticsearch [8.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 и параметры по умолчанию для типов шифрования сеансовых ключей области.
ticket granting ticket (TGT)
TGT — это билет аутентификации, созданный сервером аутентификации Kerberos. Он содержит зашифрованный аутентификатор.

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

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

В Kerberos пользователи аутентифицируются с помощью службы аутентификации, а затем с помощью службы предоставления билетов для генерации TGT (билета предоставления билетов). Этот билет затем предоставляется сервису для аутентификации. Обратитесь к документации вашей установки Kerberos для получения дополнительной информации об получении TGT. Клиенты 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 непосредственно к API Elasticsearch Rest.

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

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

    xpack.security.authc.token.enabled: true

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

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

Чтобы настроить Kerberos-домен в Elasticsearch:

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

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

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

    Дополнительную информацию см. в krb5.conf

  2. Создайте ключ для узла 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:

    resp = client.security.put_role_mapping(
        name="kerbrolemapping",
        roles=[
            "monitoring_user"
        ],
        enabled=True,
        rules={
            "field": {
                "username": "user@REALM"
            }
        },
    )
    print(resp)
    const response = await client.security.putRoleMapping({
      name: "kerbrolemapping",
      roles: ["monitoring_user"],
      enabled: true,
      rules: {
        field: {
          username: "user@REALM",
        },
      },
    });
    console.log(response);
    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. См. единый вход 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/8.17/kerberos-realm.html

Spec-Zone.ru

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