Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›Защита Elastic Stack ›Авторизация пользователей

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

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

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

Пример кода, иллюстрирующий структуру и реализацию пользовательского домена, приведен в https://github.com/elastic/elasticsearch/tree/7.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, они будут обработаны в порядке name домена.

    При настройке доменов в 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/7.17/custom-realms.html

Spec-Zone.ru

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