Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›Защитить Elastic Stack ›Аутентификация пользователей

Интеграция с другими системами аутентификации

Если вы используете систему аутентификации, которая не поддерживается Elasticsearch по умолчанию, вы можете создать пользовательский домен для взаимодействия с ней и аутентификации пользователей. Вы реализуете пользовательский домен как расширение безопасности SPI, загружаемое как обычный плагин Elasticsearch.

Реализация пользовательского домена

Образец кода, иллюстрирующий структуру и реализацию пользовательского домена, представлен в https://github.com/elastic/elasticsearch/tree/8.17/x-pack/qa/security-example-spi-extension. Вы можете использовать этот код в качестве отправной точки для создания собственного домена.

Для создания пользовательского домена необходимо:

  1. Расширить org.elasticsearch.xpack.security.authc.Realm для взаимодействия с вашей системой аутентификации и аутентификации пользователей.
  2. Реализовать интерфейс org.elasticsearch.xpack.security.authc.Realm.Factory в классе, который будет использоваться для создания пользовательского домена.
  3. Расширить org.elasticsearch.xpack.security.authc.DefaultAuthenticationFailureHandler для обработки ошибок аутентификации при использовании вашего пользовательского домена.

Для упаковки пользовательского домена в виде плагина:

  1. Реализуйте класс расширения для вашего домена, расширяющий org.elasticsearch.xpack.core.security.SecurityExtension. Там вам нужно переопределить один или несколько из следующих методов:

    @Override
    public Map<String, Factory> getRealms() {
        ...
    }

    Метод getRealms используется для предоставления карты имен типов для Factory, которые будут использоваться для создания домена.

    @Override
    public AuthenticationFailureHandler getAuthenticationFailureHandler() {
        ...
    }

    Метод getAuthenticationFailureHandler используется для предоставления необязательного пользовательского AuthenticationFailureHandler, который будет управлять тем, как Elasticsearch отвечает на определенные события отказа аутентификации.

    @Override
    public List<String> getSettingsFilter() {
        ...
    }

    Метод Plugin#getSettingsFilter возвращает список имен настроек, которые должны быть отфильтрованы из API настроек, так как они могут содержать конфиденциальные данные. Обратите внимание, что этот метод не является частью интерфейса SecurityExtension, он доступен в качестве части основного класса плагина elasticsearch.

  2. Создайте файл конфигурации сборки для плагина; мы рекомендуем Gradle.
  3. Создайте файл дескриптора META-INF/services/org.elasticsearch.xpack.core.security.SecurityExtension для расширения, который содержит полное имя класса вашей реализации org.elasticsearch.xpack.core.security.SecurityExtension.
  4. Объедините все в один ZIP-архив.

Использование пользовательского домена для аутентификации пользователей

Для использования пользовательского домена:

  1. Установите расширение домена на каждом узле кластера. Вы запускаете bin/elasticsearch-plugin с подкомандой install и указываете URL-адрес, указывающий на ZIP-архив, содержащий расширение. Например:

    bin/elasticsearch-plugin install file:///<path>/my-realm-1.0.zip
  2. Добавьте конфигурацию домена соответствующего типа домена в elasticsearch.yml в пространстве имен xpack.security.authc.realms. Вы должны определить свой домен в пространстве имен, которое соответствует типу, определенному расширением. Доступные для установки параметры зависят от настроек, предоставленных пользовательским доменом. По меньшей мере, вы должны явно установить атрибут order для управления порядком запроса домена во время аутентификации. Вы также должны убедиться, что каждая настроенная область имеет отдельную настройку order. В случае, если два или более домена имеют одинаковую настройку order, узел не сможет запуститься.

    При настройке доменов в elasticsearch.yml используются только указанные вами домены для аутентификации. Если вы также хотите использовать домены native или file, вы должны включить их в цепочку доменов.

  3. Перезапустите Elasticsearch.

© 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/custom-realms.html

Spec-Zone.ru

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