Настройка базовой безопасности для Elastic Stack и защищенного трафика HTTPS
В производственной среде некоторые функции Elasticsearch, такие как токены и API-ключи, будут отключены, если вы не включите TLS на уровне HTTP. Этот дополнительный уровень безопасности гарантирует, что все коммуникации с кластером и в кластер будут защищены.
Когда вы запускаете инструмент elasticsearch-certutil в режиме http, инструмент задает несколько вопросов о том, как вы хотите сгенерировать сертификаты. Несмотря на большое количество вариантов, следующие выборы приведут к сертификатам, которые должны работать в большинстве сред.
Предварительные условия
Выполните все шаги в Настройка базовой безопасности для Elastic Stack.
Зашифрование HTTP-клиентских коммуникаций для Elasticsearch
- На каждом узле вашего кластера остановите Elasticsearch и Kibana, если они запущены.
-
На любом одном узле из каталога установки Elasticsearch запустите инструмент Elasticsearch HTTP certificate для генерации запроса на подпись сертификата (CSR).
./bin/elasticsearch-certutil http
Эта команда сгенерирует файл
.zip, содержащий сертификаты и ключи для использования с Elasticsearch и Kibana. В каждом каталоге находится файлREADME.txt, объясняющий, как использовать эти файлы.- При запросе на генерацию CSR введите
n. - При запросе на использование существующего CA введите
y. - Укажите путь к вашему CA. Это абсолютный путь к файлу
elastic-stack-ca.p12, который вы сгенерировали для вашего кластера. - Введите пароль для вашего CA.
- Укажите срок действия вашего сертификата. Вы можете указать срок действия в годах, месяцах или днях. Например, введите
90Dдля 90 дней. -
При запросе о генерации одного сертификата на узел введите
y.Каждый сертификат будет иметь свой собственный закрытый ключ и будет выпущен для определенного имени хоста или IP-адреса.
- При запросе введите имя первого узла вашего кластера. Используйте то же имя узла, что и при генерации сертификатов узлов.
-
Укажите все имена хостов, используемые для подключения к вашему первому узлу. Эти имена хостов будут добавлены в качестве имен DNS в поле Subject Alternative Name (SAN) в вашем сертификате.
Перечислите каждое имя хоста и его варианты, используемые для подключения к вашему кластеру через HTTPS.
- Укажите IP-адреса, которые клиенты могут использовать для подключения к вашему узлу.
- Повторите эти шаги для каждого дополнительного узла в вашем кластере.
- При запросе на генерацию CSR введите
- После генерации сертификата для каждого из ваших узлов введите пароль для вашего закрытого ключа при запросе.
-
Распакуйте сгенерированный файл
elasticsearch-ssl-http.zip. Этот сжатый файл содержит один каталог для Elasticsearch и Kibana./elasticsearch |_ README.txt |_ http.p12 |_ sample-elasticsearch.yml
/kibana |_ README.txt |_ elasticsearch-ca.pem |_ sample-kibana.yml
-
На каждом узле вашего кластера выполните следующие шаги:
- Скопируйте соответствующий сертификат
http.p12в каталог$ES_PATH_CONF. -
Отредактируйте файл
elasticsearch.yml, чтобы включить безопасность HTTPS и указать расположение сертификата безопасностиhttp.p12.xpack.security.http.ssl.enabled: true xpack.security.http.ssl.keystore.path: http.p12
-
Добавьте пароль к вашему закрытому ключу в безопасные настройки Elasticsearch.
./bin/elasticsearch-keystore add xpack.security.http.ssl.keystore.secure_password
- Запустите Elasticsearch.
- Скопируйте соответствующий сертификат
Шифрование HTTP-связей клиента Kibana
Браузеры отправляют трафик в Kibana, а Kibana отправляет трафик в Elasticsearch. Эти каналы связи настраиваются отдельно для использования TLS. Вы шифруете трафик между Kibana и Elasticsearch, а затем шифруете трафик между браузером и Kibana.
Шифрование трафика между Kibana и Elasticsearch
Когда вы запустили инструмент elasticsearch-certutil с опцией http, он создал директорию /kibana, содержащую файл elasticsearch-ca.pem. Этот файл используется для настройки Kibana на доверие к CA Elasticsearch для HTTP-слоя.
- Скопируйте файл
elasticsearch-ca.pemв директорию конфигурации Kibana, определённую путем$KBN_PATH_CONF. -
Откройте файл
kibana.ymlи добавьте следующую строку для указания расположения сертификата безопасности для HTTP-слоя.elasticsearch.ssl.certificateAuthorities: $KBN_PATH_CONF/elasticsearch-ca.pem
-
Добавьте следующую строку для указания HTTPS-URL вашего кластера Elasticsearch.
elasticsearch.hosts: https://<your_elasticsearch_host>:9200
- Перезапустите Kibana.
Шифрование трафика между вашим браузером и Kibana
Вы создаёте сертификат сервера и закрытый ключ для Kibana. Kibana использует этот сертификат сервера и соответствующий закрытый ключ при получении подключений от веб-браузеров.
При получении сертификата сервера необходимо правильно установить его альтернативное имя субъекта (SAN), чтобы браузеры его доверяли. Вы можете установить одно или несколько SAN для полных доменных имён (FQDN), хостнеймов или IP-адресов сервера Kibana. При выборе SAN выберите тот атрибут, который вы будете использовать для подключения к Kibana в браузере, скорее всего, это FQDN.
Следующие инструкции создают запрос на подпись сертификата (CSR) для Kibana. CSR содержит информацию, которую CA использует для генерации и подписи сертификата безопасности. Сертификат может быть надёжным (подписанным публичной, надёжной CA) или ненадежным (подписанным внутренней CA). Самоподписанный или внутренне подписанный сертификат приемлем для тестовых сред и создания прототипов, но не должен использоваться в производственной среде.
Перед переходом в производство, используйте надёжную CA, такую как Let’s Encrypt или внутреннюю CA вашей организации для подписи сертификата. Использование подписанного сертификата устанавливает доверие браузера для подключений к Kibana для внутреннего доступа или в общедоступном интернете.
-
Сгенерируйте сертификат сервера и закрытый ключ для Kibana.
./bin/elasticsearch-certutil csr -name kibana-server -dns example.com,www.example.com
CSR имеет общее имя (CN)
kibana-server, SANexample.comи ещё один SANwww.example.com.Эта команда сгенерирует файл
csr-bundle.zipпо умолчанию с содержанием:/kibana-server |_ kibana-server.csr |_ kibana-server.key
- Разархивируйте файл
csr-bundle.zip, чтобы получить неподписанный сертификат безопасностиkibana-server.csrи нешифрованный закрытый ключkibana-server.key. - Отправьте запрос на подпись сертификата (CSR)
kibana-server.csrвашей внутренней CA или надёжной CA для подписи, чтобы получить подписанный сертификат. Подписанный файл может быть в различных форматах, таких как файл.crt, например,kibana-server.crt. -
Откройте файл
kibana.ymlи добавьте следующие строки, чтобы настроить Kibana на доступ к сертификату сервера и нешифрованному закрытому ключу.server.ssl.certificate: $KBN_PATH_CONF/kibana-server.crt server.ssl.key: $KBN_PATH_CONF/kibana-server.key
$KBN_PATH_CONFсодержит путь к файлам конфигурации Kibana. Если вы установили Kibana с использованием архивированных дистрибутивов (zipилиtar.gz), путь по умолчанию$KBN_HOME/config. Если вы использовали пакетные дистрибутивы (Debian или RPM), путь по умолчанию/etc/kibana. -
Добавьте следующую строку в
kibana.yml, чтобы включить TLS для входящих подключений.server.ssl.enabled: true
- Запустите Kibana.
После внесения этих изменений вам всегда необходимо обращаться к Kibana через HTTPS. Например, https://<your_kibana_host>.com.
Далее: Настройка безопасности Beats
Настройка безопасности Beats
Beats — это открытые исходные коды, инструменты для отправки данных, которые устанавливаются в качестве агентов на ваших серверах для отправки операционных данных в Elasticsearch. Каждый Beat — это отдельный устанавливаемый продукт. Следующие шаги охватывают настройку безопасности для Metricbeat. Следуйте этим шагам для каждого дополнительного Beat, для которого вы хотите настроить безопасность.
Предварительные условия
Установите Metricbeat с помощью вашего предпочтительного метода.
Вы не можете подключиться к Elastic Stack или настроить ресурсы для Metricbeat, прежде чем выполнить следующие шаги.
Создание ролей для Metricbeat
Обычно вам нужно создать следующие отдельные роли:
- роль setup для настройки шаблонов индексов и других зависимостей
- роль monitoring для отправки информации о мониторинге
- роль writer для публикации событий, собранных Metricbeat
- роль reader для пользователей Kibana, которым необходимо просматривать и создавать визуализации, которые обращаются к данным Metricbeat
Эти инструкции предполагают, что вы используете имя по умолчанию для индексов Metricbeat. Если указанные имена индексов не перечислены или вы используете пользовательское имя, введите его вручную при определении ролей и измените привилегии в соответствии с вашим шаблоном именования индексов.
Чтобы создать пользователей и роли из Stack Management в Kibana, выберите Роли или Пользователи в боковой навигации.
Далее: Создание роли и пользователя setup
Создание роли и пользователя setup
Администраторы, которые настраивают Metricbeat, обычно должны загружать сопоставления, панели мониторинга и другие объекты, используемые для индексирования данных в Elasticsearch и визуализации их в Kibana.
Настройка Metricbeat — это задача уровня администратора, требующая дополнительных привилегий. В качестве рекомендации предоставляйте роль setup только администраторам и используйте более ограничительную роль для публикации событий.
-
Создайте роль setup:
- Введите metricbeat_setup в качестве имени роли.
- Выберите привилегии кластера monitor и manage_ilm.
-
Для индексов metricbeat-\*, выберите привилегии manage и write.
Если индексы metricbeat-\* не отображаются, введите этот шаблон в список индексов.
-
Создайте пользователя setup:
- Введите metricbeat_setup в качестве имени пользователя.
- Введите имя пользователя, пароль и другие данные пользователя.
-
Назначьте следующие роли пользователю metricbeat_setup:
Роль Цель metricbeat_setupНастройка Metricbeat.
kibana_adminЗагрузка зависимостей, таких как примерные панели мониторинга, если доступны, в Kibana
ingest_adminНастройка шаблонов индексов и, при наличии, конвейеров обработки данных
Далее: Создание роли и пользователя мониторинга
Создание роли и пользователя мониторинга
Для безопасной отправки данных мониторинга создайте пользователя мониторинга и предоставьте ему необходимые привилегии.
Вы можете использовать встроенного пользователя beats_system, если он доступен в вашей среде. Поскольку встроенные пользователи недоступны в Elastic Cloud, эти инструкции создают пользователя, который явно используется для мониторинга Metricbeat.
-
Создайте роль мониторинга:
- Введите metricbeat_monitoring в качестве имени роли.
- Выберите привилегию кластера monitor.
- Для индексов .monitoring-beats-\*, выберите привилегии create_index и create_doc.
-
Создайте пользователя мониторинга:
- Введите metricbeat_monitoring в качестве имени пользователя.
- Введите имя пользователя, пароль и другие данные пользователя.
-
Назначьте следующие роли пользователю metricbeat_monitoring:
Роль Цель metricbeat_monitoringМониторинг Metricbeat.
kibana_adminИспользование Kibana
monitoring_userИспользование мониторинга стека в Kibana для мониторинга Metricbeat
Далее: Создание роли и пользователя writer
Создание роли и пользователя writer
Пользователи, которые публикуют события в Elasticsearch, должны создавать и записывать в индексы Metricbeat. Для минимизации привилегий, необходимых для роли writer, используйте роль setup для предварительной загрузки зависимостей. Этот раздел предполагает, что вы создали роль setup.
-
Создайте роль writer:
- Введите metricbeat_writer в качестве имени роли.
- Выберите привилегии кластера monitor и read_ilm.
- Для индексов metricbeat-\*, выберите привилегии create_doc, create_index и view_index_metadata.
-
Создайте пользователя writer:
- Введите metricbeat_writer в качестве имени пользователя.
- Введите имя пользователя, пароль и другие данные пользователя.
-
Назначьте следующие роли пользователю metricbeat_writer:
Роль Цель metricbeat_writerМониторинг Metricbeat
remote_monitoring_collectorСбор метрик мониторинга из Metricbeat
remote_monitoring_agentОтправка данных мониторинга в кластер мониторинга
Далее: Создание роли и пользователя reader
Создание роли и пользователя reader
Пользователям Kibana обычно необходимо просматривать панели мониторинга и визуализации, содержащие данные Metricbeat. Им также может потребоваться создавать и редактировать панели мониторинга и визуализации. Создайте роль reader, чтобы назначить соответствующие привилегии этим пользователям.
-
Создать роль читателя:
- Введите metricbeat_reader в качестве имени роли.
- На индексах metricbeat-\*, выберите привилегию read.
-
В Kibana, нажмите Добавить привилегию Kibana.
- В разделе Пространства выберите По умолчанию.
- Выберите Чтение или Все для функций «Поиск», «Визуализация», «Панель мониторинга» и «Метрики».
-
Создать пользователя-читателя:
- Введите metricbeat_reader в качестве имени пользователя.
- Введите имя пользователя, пароль и другие данные пользователя.
-
Назначьте следующие роли пользователю metricbeat_reader:
Роль Назначение metricbeat_readerЧтение данных Metricbeat.
monitoring_userРазрешить пользователям контролировать работоспособность самого Metricbeat. Назначайте эту роль только пользователям, управляющим Metricbeat.
beats_adminСоздание и управление конфигурациями в Beats централизованного управления. Назначайте эту роль только пользователям, которым необходимо использовать Beats централизованного управления.
Далее: Настройка Metricbeat для использования TLS
Настройка Metricbeat для использования TLS
Перед запуском Metricbeat настройте подключения к Elasticsearch и Kibana. Вы можете настроить аутентификацию для отправки данных в защищённый кластер с помощью базовой аутентификации, аутентификации по API-ключам или сертификатов инфраструктуры открытых ключей (PKI).
В следующих инструкциях используются учетные данные для пользователей metricbeat_writer и metricbeat_setup, которые вы создали. Если вам нужна более высокая степень безопасности, рекомендуется использовать сертификаты PKI.
После настройки подключений к Elasticsearch и Kibana включите модуль elasticsearch-xpack и настройте этот модуль для использования HTTPS.
В производственных средах настоятельно рекомендуется использовать отдельный кластер (так называемый мониторинговый кластер) для хранения данных. Использование отдельного мониторингового кластера предотвращает сбои производственного кластера, влияющих на доступ к данным мониторинга. Это также предотвращает влияние мониторинга на производительность вашего производственного кластера.
- На узле, где вы сгенерировали сертификаты для HTTP-слоя, перейдите в каталог
/kibana. - Скопируйте сертификат
elasticsearch-ca.pemв каталог, где установлен Metricbeat. -
Откройте конфигурационный файл
metricbeat.ymlи настройте подключение к Elasticsearch.В разделе
output.elasticsearchукажите следующие поля:output.elasticsearch: hosts: ["<your_elasticsearch_host>:9200"] protocol: "https" username: "metricbeat_writer" password: "<password>" ssl: certificate_authorities: ["elasticsearch-ca.pem"] verification_mode: "certificate"
-
hosts - Указывает хост, на котором работает ваш кластер Elasticsearch.
-
protocol - Указывает протокол, используемый при подключении к Elasticsearch. Это значение должно быть
https. -
username - Имя пользователя с привилегиями, необходимыми для публикации событий в Elasticsearch. Пользователь
metricbeat_writer, которого вы создали, имеет эти привилегии. -
password - Пароль для указанного
username. -
certificate_authorities - Указывает путь к локальному файлу
.pem, содержащему сертификат вашей удостоверяющей организации.
-
-
Настройте подключение к Kibana.
В разделе
setup.kibanaукажите следующие поля:setup.kibana host: "https://<your_elasticsearch_host>:5601" ssl.enabled: true username: "metricbeat_setup" password: "p@ssw0rd"
-
hosts - URL-адреса экземпляров Elasticsearch, используемых для всех запросов. Убедитесь, что вы включили
httpsв URL. -
username - Имя пользователя с привилегиями, необходимыми для создания панелей мониторинга в Kibana. Пользователь
metricbeat_setup, которого вы создали, имеет эти привилегии. -
password - Пароль для указанного
username.
-
-
Включить модуль
elasticsearch-xpack../metricbeat modules enable elasticsearch-xpack
-
Измените модуль
elasticsearch-xpack, чтобы использовать HTTPS. Этот модуль собирает метрики об Elasticsearch.Откройте
/modules.d/elasticsearch-xpack.ymlи укажите следующие поля:- module: elasticsearch xpack.enabled: true period: 10s hosts: ["https://<your_elasticsearch_host>:9200"] username: "remote_monitoring_user" password: "<password>" ssl: enabled: true certificate_authorities: ["elasticsearch-ca.pem"] verification_mode: "certificate"
Настройка SSL необходима при мониторинге узла с зашифрованным трафиком. См. Настройка SSL для Metricbeat.
-
hosts - Указывает хост, на котором работает ваш кластер Elasticsearch. Убедитесь, что вы включили
httpsв URL. -
username - Имя пользователя с привилегиями для сбора данных метрик. Встроенный пользователь
monitoring_userимеет эти привилегии. В качестве альтернативы, можно создать пользователя и назначить ему рольmonitoring_user. -
password - Пароль для указанного
username. -
certificate_authorities - Указывает путь к локальному файлу
.pem, содержащему сертификат вашей удостоверяющей организации.
-
-
Если вы хотите использовать предопределенные ресурсы для разбора, индексирования и визуализации данных, выполните следующую команду для загрузки этих ресурсов:
./metricbeat setup -e
-
Запустите Elasticsearch, а затем Metricbeat.
./metricbeat -e
-eнеобязательно и отправляет вывод в стандартный поток ошибок вместо настроенного вывода в лог. -
Войдите в Kibana, откройте главное меню и нажмите Мониторинг стека.
Вы увидите сигналы тревоги кластера, требующие вашего внимания, и сводку доступных метрик мониторинга для 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/security-basic-setup-https.html