Авторизация пользователей на основе файлов
Вы можете управлять и аутентифицировать пользователей с помощью встроенного file домена. В file домене пользователи определяются в локальных файлах на каждом узле кластера.
Как администратор кластера, вы несете ответственность за обеспечение того, что те же пользователи определены на каждом узле кластера. Функции безопасности Elastic Stack не предоставляют механизма для гарантии этого. Также следует знать, что вы не можете добавлять или управлять пользователями в file домене через API пользователей, и вы не можете добавлять или управлять ими в Kibana на странице Управление / Безопасность / Пользователи
file домен очень полезен как резервный или восстановительный домен. Например, в случаях, когда кластер не отвечает или индекс безопасности недоступен, или когда вы забыли пароль для своих административных пользователей. В таких ситуациях file домен является удобным выходом — вы можете определить нового admin пользователя в file домене и использовать его для входа и сброса учетных данных всех других пользователей.
Для определения пользователей функции безопасности предоставляют утилиту командной строки users. Эта утилита позволяет добавлять и удалять пользователей, назначать роли пользователей и управлять паролями пользователей.
Настройка домена файлов
Вам не нужно явно настраивать file домен. file и native домены добавляются в цепочку доменов по умолчанию. Если не настроено иное, file домен добавляется первым, за которым следует native домен.
Хотя можно определить несколько экземпляров других доменов, вы можете определить только один file домен на узел.
Все данные о пользователях для file домена хранятся в двух файлах на каждом узле кластера: users и users_roles. Оба файла находятся в ES_PATH_CONF и читаются при запуске.
Файлы users и users_roles управляются локально узлом и не управляются глобально кластером. Это означает, что для типичного кластера из нескольких узлов необходимо внести точно такие же изменения на каждом узле кластера.
Более безопасный подход — внести изменения на одном из узлов и распределить или скопировать файлы на все остальные узлы кластера (как вручную, так и с помощью системы управления конфигурацией, такой как Puppet или Chef).
-
(Необязательно) Добавьте конфигурацию домена в
elasticsearch.ymlв пространстве именxpack.security.authc.realms.file. Как минимум, вы должны установить атрибутorderдомена.Например, следующий фрагмент показывает конфигурацию
fileдомена, в которойorderустанавливается в ноль, чтобы домен проверялся в первую очередь:xpack: security: authc: realms: file: file1: order: 0Вы можете настроить только один домен файлов на узлах Elasticsearch.
- Перезапустите Elasticsearch.
-
Добавьте информацию о пользователях в файл
ES_PATH_CONF/usersна каждом узле кластера.Файл
usersхранит всех пользователей и их пароли. Каждая строка в файле представляет запись одного пользователя, состоящую из имени пользователя и захешированного и засоленного пароля.rdeniro:$2a$10$BBJ/ILiyJ1eBTYoRKxkqbuDEdYECplvxnqQ47uiowE7yGqvCEgj9W alpacino:$2a$10$cNwHnElYiMYZ/T3K4PvzGeJ1KbpXZp2PfoQD.gfaVdImnHOwIuBKS jacknich:{PBKDF2}50000$z1CLJt0MEFjkIK5iEfgvfnA6xq7lF25uasspsTKSo5Q=$XxCVLbaKDimOdyWgLCLJiyoiWpA/XDMe/xtVgn1r5Sg=Для ограничения доступа к краже учетных данных и смягчения последствий компрометации учетных данных, домен файлов хранит пароли и кеширует учетные данные пользователей в соответствии с лучшими практиками безопасности. По умолчанию, хешированная версия учетных данных пользователей хранится в памяти, используя алгоритм хеширования с солью
sha-256, а хешированная версия паролей хранится на диске, засоленная и захешированная с помощью алгоритма хешированияbcrypt. Чтобы использовать разные алгоритмы хеширования, см. Алгоритмы хеширования кэша пользователей и паролей.Хотя можно напрямую изменить файлы
usersс помощью любого стандартного текстового редактора, мы настоятельно рекомендуем использовать инструмент elasticsearch-users для внесения необходимых изменений.Как администратор кластера, вы несете ответственность за обеспечение того, что те же пользователи определены на каждом узле кластера. Функции безопасности Elasticsearch не предоставляют механизмов для гарантии этого.
-
Добавьте информацию о ролях в файл
ES_PATH_CONF/users_rolesна каждом узле кластера.Файл
users_rolesхранит роли, связанные с пользователями. Например:admin:rdeniro power_user:alpacino,jacknich user:jacknich
Каждая строка сопоставляет роль с запятой, разделенным списком всех пользователей, связанных с этой ролью.
Для обновления этого файла можно использовать инструмент elasticsearch-users. Необходимо убедиться, что те же изменения вносятся на каждом узле кластера.
-
(Необязательно) Измените частоту проверки файлов
usersиusers_roles.По умолчанию Elasticsearch проверяет эти файлы на наличие изменений каждые 5 секунд. Вы можете изменить это поведение, изменив настройку
resource.reload.interval.highв файлеelasticsearch.yml(поскольку это распространенная настройка в 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/file-realm.html