Запустить Elastic Stack с автоматической включенной безопасностью
При первом запуске Elasticsearch автоматически происходит следующая настройка безопасности:
- Сертификаты и ключи для TLS генерируются для транспортного и HTTP-слоев.
- Настройки конфигурации TLS записываются в
elasticsearch.yml. - Пароль генерируется для пользователя
elastic. - Токен регистрации генерируется для Kibana.
Затем вы можете запустить Kibana и ввести токен регистрации, действительный в течение 30 минут. Этот токен автоматически применяет настройки безопасности из вашего кластера Elasticsearch, аутентифицируется в Elasticsearch с помощью встроенной учетной записи службы kibana и записывает конфигурацию безопасности в kibana.yml.
Существуют некоторые случаи, когда безопасность не может быть настроена автоматически, так как процесс запуска узла обнаруживает, что узел уже является частью кластера, или что безопасность уже настроена или явно отключена.
Предварительные требования
Запуск Elasticsearch и регистрация Kibana с включённой безопасностью
-
Из каталога установки запустите Elasticsearch.
bin/elasticsearch
Команда выводит пароль пользователя
elasticи токен регистрации для Kibana. -
Скопируйте сгенерированный пароль
elasticи токен регистрации. Эти учетные данные отображаются только при первом запуске Elasticsearch.Если вам нужно сбросить пароль для пользователя
elasticили других встроенных пользователей, запустите инструментelasticsearch-reset-password. Чтобы сгенерировать новые токены регистрации для узлов Kibana или Elasticsearch, запустите инструментelasticsearch-create-enrollment-token. Эти инструменты доступны в каталоге Elasticsearchbin.Рекомендуется сохранить пароль
elasticкак переменную окружения в вашей оболочке. Пример:export ELASTIC_PASSWORD="your_password"
-
(Необязательно) Откройте новый терминал и проверьте, что вы можете подключиться к своему кластеру Elasticsearch, выполнив аутентифицированный вызов.
curl --cacert config/certs/http_ca.crt -u elastic:$ELASTIC_PASSWORD https://localhost:9200
-
Из каталога, где установлен Kibana, запустите Kibana.
bin/kibana
-
Зарегистрируйте Kibana, используя интерактивный или автономный режим.
-
Интерактивный режим (браузер)
- В вашем терминале щелкните по сгенерированной ссылке для открытия Kibana в вашем браузере.
-
В браузере вставьте скопированный токен регистрации и нажмите кнопку для подключения вашей копии Kibana к Elasticsearch.
Kibana не перейдёт в интерактивный режим, если обнаружит существующие учетные данные для Elasticsearch (
elasticsearch.usernameиelasticsearch.password) или существующий URL дляelasticsearch.hosts.
-
Автономный режим (без браузера)
Запустите инструмент
kibana-setupи передайте сгенерированный токен регистрации с параметром--enrollment-token.bin/kibana-setup --enrollment-token <enrollment-token>
-
Регистрация дополнительных узлов в вашем кластере
При первом запуске Elasticsearch процесс автоматической настройки безопасности привязывает HTTP-слой к 0.0.0.0, но привязывает транспортный слой только к localhost. Это задуманное поведение гарантирует, что вы можете запустить кластер из одного узла с включённой по умолчанию безопасностью без дополнительной конфигурации.
Перед регистрацией нового узла в производственных кластерах обычно требуются дополнительные действия, такие как привязка к адресу, отличного от localhost, или выполнение проверок при запуске. В это время сгенерированный токен регистрации может истечь, поэтому токены регистрации не генерируются автоматически.
Кроме того, только узлы на одном хосте могут присоединяться к кластеру без дополнительной конфигурации. Если вы хотите, чтобы узлы с другого хоста присоединялись к вашему кластеру, вам необходимо установить transport.host на поддерживаемое значение (например, раскомментировать предложенное значение 0.0.0.0) или IP-адрес, привязанный к интерфейсу, к которому могут получить доступ другие хосты. Дополнительную информацию см. в разделе настройки транспорта.
Чтобы зарегистрировать новые узлы в вашем кластере, создайте токен регистрации с помощью инструмента elasticsearch-create-enrollment-token на любом существующем узле вашего кластера. Затем вы можете запустить новый узел с параметром --enrollment-token, чтобы он присоединился к существующему кластеру.
-
В отдельном терминале от того, где запущен Elasticsearch, перейдите в каталог, где установлен Elasticsearch, и запустите инструмент
elasticsearch-create-enrollment-tokenдля генерации токена регистрации для новых узлов.bin/elasticsearch-create-enrollment-token -s node
Скопируйте токен регистрации, который вы будете использовать для регистрации новых узлов с вашим кластером Elasticsearch.
-
Из каталога установки нового узла запустите Elasticsearch и передайте токен регистрации с параметром
--enrollment-token.bin/elasticsearch --enrollment-token <enrollment-token>
Elasticsearch автоматически генерирует сертификаты и ключи в следующем каталоге:
config/certs
- Повторите предыдущий шаг для любых новых узлов, которые вы хотите зарегистрировать.
Подключение клиентов к Elasticsearch
При первом запуске Elasticsearch TLS настраивается автоматически для HTTP-слоя. Сертификат CA генерируется и сохраняется на диске по пути:
/etc/elasticsearch/certs/http_ca.crt
Шестнадцатеричный отпечаток SHA-256 этого сертификата также выводится в терминал. Все клиенты, которые подключаются к Elasticsearch, такие как клиенты Elasticsearch, Beats, автономные агенты Elastic и Logstash, должны проверить, что они доверяют сертификату, используемому Elasticsearch для HTTPS. Fleet Server и управляемые Fleet агенты Elastic автоматически настраиваются для доверия сертификату CA. Другие клиенты могут установить доверие, используя либо отпечаток сертификата CA, либо сам сертификат CA.
Если процесс автоматической настройки уже завершился, вы по-прежнему можете получить отпечаток сертификата безопасности. Вы также можете скопировать сертификат CA на свой компьютер и настроить своего клиента для его использования.
Использование отпечатка сертификата CA
Скопируйте значение отпечатка, выведенное в терминал во время запуска Elasticsearch, и настройте своего клиента для использования этого отпечатка для установления доверия при подключении к Elasticsearch.
Если процесс автоматической настройки уже завершился, вы можете получить отпечаток сертификата безопасности, выполнив следующую команду. Путь к автоматически сгенерированному сертификату CA для HTTP-слоя.
openssl x509 -fingerprint -sha256 -in config/certs/http_ca.crt
Команда возвращает сертификат безопасности, включая отпечаток. Значение issuer должно быть Elasticsearch security auto-configuration HTTP CA.
issuer= /CN=Elasticsearch security auto-configuration HTTP CA SHA256 Fingerprint=<fingerprint>
Использование сертификата CA
Если ваша библиотека не поддерживает метод проверки отпечатка, автоматически сгенерированный сертификат CA создаётся в следующем каталоге на каждом узле Elasticsearch:
/etc/elasticsearch/certs/http_ca.crt
Скопируйте файл http_ca.crt на свой компьютер и настройте своего клиента для использования этого сертификата для установления доверия при подключении к Elasticsearch.
Что дальше?
Поздравляем! Вы успешно запустили Elastic Stack с включённой безопасностью. Elasticsearch и Kibana защищены с помощью TLS на HTTP-слое, а межузловое общение зашифровано. Если вы хотите включить HTTPS для веб-трафика, вы можете зашифровать трафик между вашим браузером и Kibana.
Сертификаты и ключи безопасности
При установке Elasticsearch в каталоге конфигурации Elasticsearch генерируются следующие сертификаты и ключи, которые используются для подключения экземпляра Kibana к вашему защищённому кластеру Elasticsearch и для шифрования межузлового общения. Файлы указаны здесь для справки.
-
http_ca.crt - Сертификат CA, используемый для подписания сертификатов для HTTP-слоя этого кластера Elasticsearch.
-
http.p12 - Хранилище ключей, содержащее ключ и сертификат для HTTP-слоя для этого узла.
-
transport.p12 - Хранилище ключей, содержащее ключ и сертификат для транспортного слоя для всех узлов в вашем кластере.
http.p12 и transport.p12 — это защищённые паролем хранилища ключей PKCS#12. Elasticsearch хранит пароли для этих хранилищ в виде защищённых настроек. Чтобы получить пароли для проверки или изменения содержимого хранилища ключей, используйте инструмент bin/elasticsearch-keystore.
Используйте следующую команду для получения пароля для http.p12:
bin/elasticsearch-keystore show xpack.security.http.ssl.keystore.secure_password
Используйте следующую команду для получения пароля для transport.p12:
bin/elasticsearch-keystore show xpack.security.transport.ssl.keystore.secure_password
Кроме того, при подключении Kibana к защищённому кластеру Elasticsearch с помощью маркера регистрации, сертификат CA HTTP-слоя извлекается из Elasticsearch и сохраняется в директории Kibana /data. Этот файл устанавливает доверие между Kibana и Уполномоченным центром сертификации Elasticsearch (CA) для HTTP-слоя.
Случаи, когда автоматическая настройка безопасности пропускается
При первом запуске Elasticsearch процесс запуска узла пытается автоматически настроить безопасность. Процесс выполняет некоторые проверки для определения:
- Является ли это первым запуском узла
- Уже настроена ли безопасность
- Может ли процесс запуска изменить конфигурацию узла
Если любая из этих проверок завершится неудачно, это свидетельствует о том, что вы настроили безопасность вручную или не хотите, чтобы безопасность настраивалась автоматически. В этих случаях узел запускается в обычном режиме, используя существующую конфигурацию.
Если вы перенаправляете вывод Elasticsearch в файл, автоматическая настройка безопасности пропускается. Автоматически сконфигурированные учетные данные можно просмотреть только в терминале при первом запуске Elasticsearch. Если вам нужно перенаправлять вывод в файл, запустите Elasticsearch без перенаправления в первый раз и используйте перенаправление при всех последующих запусках.
Обнаружена существующая среда
Если определённые каталоги уже существуют, это указывает на то, что узел запускался ранее. Аналогично, если определённые файлы отсутствуют, или мы не можем читать или записывать в определённые файлы или каталоги, это, вероятно, означает, что Elasticsearch запускается не от имени пользователя, который его устанавливал, или были наложены ограничения администратором. Если какая-либо из следующих проверок среды верна, безопасность не настраивается автоматически.
- Каталог Elasticsearch
/dataсуществует и не пуст - Наличие этого каталога — это явный признак того, что узел запускался ранее и, возможно, уже является частью кластера.
- Файл
elasticsearch.ymlне существует (или не доступен для чтения), илиelasticsearch.keystoreнедоступен для чтения - Если любой из этих файлов недоступен для чтения, мы не можем определить, включены ли функции безопасности Elasticsearch. Это состояние также может указывать на то, что процесс запуска узла не выполняется пользователем с достаточными привилегиями для изменения конфигурации узла.
- Каталог конфигурации Elasticsearch недоступен для записи
- Это состояние, вероятно, означает, что администратор сделал этот каталог только для чтения или что пользователь, запускающий Elasticsearch, не является пользователем, который устанавливал Elasticsearch.
Обнаружены существующие настройки
Следующие настройки несовместимы с автоматической настройкой безопасности. Если какие-либо из этих настроек существуют, процесс запуска узла пропускает автоматическую настройку безопасности, и узел запускается в обычном режиме.
-
node.rolesимеет значение, при котором узел не может быть избран в качествеmasterили если узел не может хранить данные -
xpack.security.autoconfiguration.enabledимеет значениеfalse -
xpack.security.enabledимеет установленное значение - Любые из настроек
xpack.security.transport.ssl.*илиxpack.security.http.ssl.*имеют значение в файле конфигурацииelasticsearch.ymlили вelasticsearch.keystore -
Любые из настроек
discovery.type,discovery.seed_hostsилиcluster.initial_master_nodesнастроек обнаружения и формирования кластера имеют установленное значениеИсключениями являются случаи, когда
discovery.typeимеет значениеsingle-nodeили когдаcluster.initial_master_nodesсуществует, но содержит только имя текущего узла.
© 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/configuring-stack-security.html