Интеграция с другими системами аутентификации
Если вы используете систему аутентификации, не поддерживаемую средствами Elasticsearch, вы можете создать пользовательский домен, чтобы взаимодействовать с ней для аутентификации пользователей. Вы реализуете пользовательский домен в качестве расширения безопасности SPI, загружаемого как обычный плагин Elasticsearch.
Реализация пользовательского домена
Пример кода, иллюстрирующий структуру и реализацию пользовательского домена, приведен в https://github.com/elastic/elasticsearch/tree/7.17/x-pack/qa/security-example-spi-extension. Вы можете использовать этот код в качестве отправной точки для создания собственного домена.
Для создания пользовательского домена необходимо:
- Расширить
org.elasticsearch.xpack.security.authc.Realm, чтобы взаимодействовать с вашей системой аутентификации для аутентификации пользователей. - Реализовать интерфейс
org.elasticsearch.xpack.security.authc.Realm.Factoryв классе, который будет использоваться для создания пользовательского домена. - Расширить
org.elasticsearch.xpack.security.authc.DefaultAuthenticationFailureHandler, чтобы обрабатывать сбои аутентификации при использовании вашего пользовательского домена.
Чтобы упаковать пользовательский домен в виде плагина:
-
Реализуйте класс расширения для вашего домена, расширяющий
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. - Создайте конфигурационный файл сборки для плагина; Gradle - наша рекомендация.
- Создайте файл описания
META-INF/services/org.elasticsearch.xpack.core.security.SecurityExtensionдля расширения, содержащий полное имя класса вашей реализацииorg.elasticsearch.xpack.core.security.SecurityExtension. - Скомпонуйте все в один zip-архив.
Использование пользовательского домена для аутентификации пользователей
Для использования пользовательского домена:
-
Установите расширение домена на каждом узле кластера. Вы запускаете
bin/elasticsearch-pluginс подкомандойinstallи указываете URL, указывающий на zip-архив, содержащий расширение. Например:bin/elasticsearch-plugin install file:///<path>/my-realm-1.0.zip
-
Добавьте конфигурацию домена соответствующего типа домена в
elasticsearch.ymlв пространстве имёнxpack.security.authc.realms. Вы должны определить свой домен в пространстве имен, которое соответствует типу, определённому расширением. Доступные для настройки опции зависят от настроек, предоставляемых пользовательским доменем. Если вы настраиваете несколько доменов, вы также должны явно установить атрибутorderдля управления порядком обращения к доменам во время аутентификации. Вы должны убедиться, что каждая настроенная область имеет отличное значение настройкиorder. В случае, если у двух или более доменов одинаковое значениеorder, они будут обработаны в порядкеnameдомена.При настройке доменов в
elasticsearch.ymlиспользуются только указанные вами домены для аутентификации. Если вы также хотите использовать доменыnativeилиfile, вы должны включить их в цепочку доменов. - Перезапустите 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