Spec-Zone.ru › Elasticsearch 8
›Руководство по Elasticsearch [8.17] ›Защита Elastic Stack ›Настройка безопасности вручную

Настройка базовой безопасности для Elastic Stack с защищённым HTTPS-трафиком

При включении TLS на уровне HTTP обеспечивается дополнительный уровень безопасности, гарантирующий шифрование всех коммуникаций с кластером.

При выполнении инструмента elasticsearch-certutil в режиме http, инструмент задаёт ряд вопросов о том, как генерировать сертификаты. Несмотря на большое количество вариантов, следующие настройки генерируют сертификаты, подходящие для большинства сред.

Сертификаты подписи

Первый вопрос, который задаёт инструмент elasticsearch-certutil, касается генерации запроса на подпись сертификата (CSR). Ответьте n, если хотите подписать собственные сертификаты, или y, если хотите подписать сертификаты с помощью центрального CA.

Подпишите собственные сертификаты

Если вы хотите использовать CA, созданную при создании центрального сертификата, ответьте n на вопрос о генерации CSR. Затем укажите расположение вашей CA, которую инструмент использует для подписи и генерации сертификата .p12. Эта процедура выполняется по такому алгоритму.

Подписывайте сертификаты с помощью центрального CA

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

Предварительные требования

Выполните все шаги в Настройка базовой безопасности для Elastic Stack.

Зашифрование HTTP-коммуникаций клиента для Elasticsearch

  1. На каждом узле вашего кластера остановите Elasticsearch и Kibana, если они запущены.
  2. На любом отдельном узле, из каталога установки Elasticsearch, запустите инструмент для генерации сертификата HTTP Elasticsearch, чтобы создать запрос на подпись сертификата (CSR).

    ./bin/elasticsearch-certutil http

    Эта команда сгенерирует файл .zip, содержащий сертификаты и ключи для использования с Elasticsearch и Kibana. Каждый каталог содержит README.txt, объясняющий, как использовать эти файлы.

    1. При запросе о генерации CSR введите n.
    2. При запросе об использовании существующего CA введите y.
    3. Укажите путь к вашей CA. Это абсолютный путь к файлу elastic-stack-ca.p12, который вы сгенерировали для вашего кластера.
    4. Введите пароль для вашей CA.
    5. Укажите срок действия сертификата. Вы можете ввести срок действия в годах, месяцах или днях. Например, введите 90D для 90 дней.
    6. При запросе о генерации одного сертификата на узел, введите y.

      Каждый сертификат будет иметь свой собственный закрытый ключ и будет выдан для определённого имени хоста или IP-адреса.

    7. При запросе введите имя первого узла вашего кластера. Используйте то же имя узла, что и при генерации сертификатов узлов.
    8. Укажите все имена хостов, используемые для подключения к вашему первому узлу. Эти имена хостов будут добавлены в поле Subject Alternative Name (SAN) вашего сертификата.

      Перечислите все имена хостов и варианты, используемые для подключения к кластеру по HTTPS.

    9. Введите IP-адреса, которые клиенты могут использовать для подключения к вашему узлу.
    10. Повторите эти шаги для каждого дополнительного узла в вашем кластере.
  3. После генерации сертификата для каждого узла введите пароль для вашего закрытого ключа при запросе.
  4. Распакуйте сгенерированный файл elasticsearch-ssl-http.zip. Этот сжатый файл содержит один каталог для Elasticsearch и Kibana.

    /elasticsearch
    |_ README.txt
    |_ http.p12
    |_ sample-elasticsearch.yml
    /kibana
    |_ README.txt
    |_ elasticsearch-ca.pem
    |_ sample-kibana.yml
  5. На каждом узле вашего кластера выполните следующие шаги:

    1. Скопируйте соответствующий сертификат http.p12 в каталог $ES_PATH_CONF.
    2. Отредактируйте файл elasticsearch.yml, чтобы включить HTTPS-безопасность и указать расположение сертификата безопасности http.p12.

      xpack.security.http.ssl.enabled: true
      xpack.security.http.ssl.keystore.path: http.p12
    3. Добавьте пароль для вашего закрытого ключа в безопасные настройки Elasticsearch.

      ./bin/elasticsearch-keystore add xpack.security.http.ssl.keystore.secure_password
    4. Запустите Elasticsearch.

Далее: Зашифрование HTTP-коммуникаций клиента для Kibana

Шифрование HTTP-связей клиента Kibana

Браузеры отправляют трафик в Kibana, а Kibana отправляет трафик в Elasticsearch. Эти каналы связи настраиваются отдельно для использования TLS. Вы шифруете трафик между Kibana и Elasticsearch, а затем шифруете трафик между браузером и Kibana.

Шифрование трафика между Kibana и Elasticsearch

Когда вы запустили инструмент elasticsearch-certutil с опцией http, он создал директорию /kibana, содержащую файл elasticsearch-ca.pem. Этот файл используется для настройки Kibana на доверие к CA Elasticsearch для HTTP-слоя.

  1. Скопируйте файл elasticsearch-ca.pem в директорию конфигурации Kibana, определённую путем $KBN_PATH_CONF.
  2. Откройте файл kibana.yml и добавьте следующую строку для указания расположения сертификата безопасности для HTTP-слоя.

    elasticsearch.ssl.certificateAuthorities: $KBN_PATH_CONF/elasticsearch-ca.pem
  3. Добавьте следующую строку для указания HTTPS-URL вашего кластера Elasticsearch.

    elasticsearch.hosts: https://<your_elasticsearch_host>:9200
  4. Перезапустите Kibana.

Подключение к защищённому кластеру мониторинга

Если включены функции Elastic мониторинга и вы настроили отдельный кластер мониторинга Elasticsearch, вы также можете настроить Kibana на подключение к кластеру мониторинга через HTTPS. Шаги те же, но каждое значение префиксется значением monitoring. Например, monitoring.ui.elasticsearch.hosts и monitoring.ui.elasticsearch.ssl.truststore.path.

Вы должны создать отдельный файл безопасности elasticsearch-ca.pem для кластера мониторинга.

Далее: Шифрование трафика между вашим браузером и Kibana

Шифрование трафика между вашим браузером и Kibana

Вы создаёте сертификат сервера и закрытый ключ для Kibana. Kibana использует этот сертификат сервера и соответствующий закрытый ключ при получении подключений от веб-браузеров.

При получении сертификата сервера необходимо правильно установить его альтернативное имя субъекта (SAN), чтобы браузеры его доверяли. Вы можете установить одно или несколько SAN для полных доменных имён (FQDN), хостнеймов или IP-адресов сервера Kibana. При выборе SAN выберите тот атрибут, который вы будете использовать для подключения к Kibana в браузере, скорее всего, это FQDN.

Следующие инструкции создают запрос на подпись сертификата (CSR) для Kibana. CSR содержит информацию, которую CA использует для генерации и подписи сертификата безопасности. Сертификат может быть надёжным (подписанным публичной, надёжной CA) или ненадежным (подписанным внутренней CA). Самоподписанный или внутренне подписанный сертификат приемлем для тестовых сред и создания прототипов, но не должен использоваться в производственной среде.

Перед переходом в производство, используйте надёжную CA, такую как Let’s Encrypt или внутреннюю CA вашей организации для подписи сертификата. Использование подписанного сертификата устанавливает доверие браузера для подключений к Kibana для внутреннего доступа или в общедоступном интернете.

  1. Сгенерируйте сертификат сервера и закрытый ключ для Kibana.

    ./bin/elasticsearch-certutil csr -name kibana-server -dns example.com,www.example.com

    CSR имеет общее имя (CN) kibana-server, SAN example.com и ещё один SAN www.example.com.

    Эта команда сгенерирует файл csr-bundle.zip по умолчанию с содержанием:

    /kibana-server
    |_ kibana-server.csr
    |_ kibana-server.key
  2. Разархивируйте файл csr-bundle.zip, чтобы получить неподписанный сертификат безопасности kibana-server.csr и нешифрованный закрытый ключ kibana-server.key.
  3. Отправьте запрос на подпись сертификата (CSR) kibana-server.csr вашей внутренней CA или надёжной CA для подписи, чтобы получить подписанный сертификат. Подписанный файл может быть в различных форматах, таких как файл .crt, например, kibana-server.crt.
  4. Откройте файл 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.

  5. Добавьте следующую строку в kibana.yml, чтобы включить TLS для входящих подключений.

    server.ssl.enabled: true
  6. Запустите 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 только администраторам и используйте более ограничительную роль для публикации событий.

  1. Создайте роль setup:
  2. Введите metricbeat_setup в качестве имени роли.
  3. Выберите привилегии кластера monitor и manage_ilm.
  4. В индексах metricbeat-\*, выберите привилегии manage и write.

    Если индексы metricbeat-\* не отображаются, введите этот шаблон в список индексов.

  5. Создайте пользователя setup:
  6. Введите metricbeat_setup в качестве имени пользователя.
  7. Введите имя пользователя, пароль и другие данные пользователя.
  8. Назначьте следующие роли пользователю metricbeat_setup:

    Роль Цель

    metricbeat_setup

    Настройка Metricbeat.

    kibana_admin

    Загрузка зависимостей, таких как примерные панели мониторинга, если они доступны, в Kibana.

    ingest_admin

    Настройка шаблонов индексов и, если доступно, конвейеров обработки данных.

Далее: Создание роли и пользователя monitoring

Создание роли и пользователя monitoring

Для безопасной отправки данных мониторинга создайте пользователя мониторинга и предоставьте ему необходимые привилегии.

Вы можете использовать встроенного пользователя beats_system, если он доступен в вашей среде. Поскольку встроенные пользователи недоступны в Elastic Cloud, эти инструкции создают пользователя, который явно используется для мониторинга Metricbeat.

  1. Если вы используете встроенного пользователя beats_system, на любом узле вашего кластера выполните утилиту elasticsearch-reset-password для установки пароля для этого пользователя:

    Эта команда сбросит пароль для пользователя beats_system на автоматически сгенерированное значение.

    ./bin/elasticsearch-reset-password -u beats_system

    Если вы хотите установить пароль на конкретное значение, выполните команду с параметром интерактивного режима (-i).

    ./bin/elasticsearch-reset-password -i -u beats_system
  2. Создайте роль мониторинга:
  3. Введите metricbeat_monitoring в качестве имени роли.
  4. Выберите привилегию кластера monitor.
  5. В индексах .monitoring-beats-\*, выберите привилегии create_index и create_doc.
  6. Создайте пользователя мониторинга:
  7. Введите metricbeat_monitoring в качестве имени пользователя.
  8. Введите имя пользователя, пароль и другие данные пользователя.
  9. Назначьте следующие роли пользователю metricbeat_monitoring:

    Роль Цель

    metricbeat_monitoring

    Мониторинг Metricbeat.

    kibana_admin

    Использование Kibana.

    monitoring_user

    Использование Stack Monitoring в Kibana для мониторинга Metricbeat.

Далее: Создание роли и пользователя writer

Создание роли и пользователя writer

Пользователям, которые публикуют события в Elasticsearch, необходимо создавать и записывать в индексы Metricbeat. Для минимизации привилегий, необходимых для роли writer, используйте роль setup для предварительной загрузки зависимостей. В этом разделе предполагается, что вы создали роль setup.

  1. Создайте роль writer:
  2. Введите metricbeat_writer в качестве имени роли.
  3. Выберите привилегии кластера monitor и read_ilm.
  4. В индексах metricbeat-\*, выберите привилегии create_doc, create_index и view_index_metadata.
  5. Создайте пользователя writer:
  6. Введите metricbeat_writer в качестве имени пользователя.
  7. Введите имя пользователя, пароль и другие данные пользователя.
  8. Назначьте следующие роли пользователю metricbeat_writer:

    Роль Цель

    metricbeat_writer

    Мониторинг Metricbeat.

    remote_monitoring_collector

    Сбор метрик мониторинга из Metricbeat.

    remote_monitoring_agent

    Отправка данных мониторинга в кластер мониторинга.

Далее: Создание роли и пользователя reader

Создание роли и пользователя reader

Пользователям Kibana обычно требуется просматривать панели мониторинга и визуализации, содержащие данные Metricbeat. Эти пользователи также могут нуждаться в создании и редактировании панелей мониторинга и визуализаций. Создайте роль reader, чтобы назначить соответствующие привилегии этим пользователям.

  1. Создайте роль читателя:
  2. Введите metricbeat_reader в качестве имени роли.
  3. Для индексов metricbeat-\* выберите привилегию read.
  4. В Kibana нажмите Добавить привилегию Kibana.

    • В разделе Пространства выберите По умолчанию.
    • Выберите Чтение или Все для Discover, Visualize, Dashboard и Metrics.
  5. Создайте пользователя читателя:
  6. Введите metricbeat_reader в качестве имени пользователя.
  7. Введите имя пользователя, пароль и другие данные пользователя.
  8. Назначьте следующие роли пользователю metricbeat_reader:

    Роль Назначение

    metricbeat_reader

    Чтение данных Metricbeat.

    monitoring_user

    Разрешение пользователям контролировать работоспособность самого Metricbeat. Назначайте эту роль только пользователям, управляющим Metricbeat.

    beats_admin

    Создание и управление конфигурациями в Beats central management. Назначайте эту роль только пользователям, которым необходимо использовать Beats central management.

Далее: Настройка Metricbeat для использования TLS

Настройка Metricbeat для использования TLS

Перед запуском Metricbeat настройте подключения к Elasticsearch и Kibana. Вы можете настроить аутентификацию для отправки данных в защищенный кластер с помощью базовой аутентификации, аутентификации по API-ключам или сертификатов инфраструктуры открытых ключей (PKI).

В следующих инструкциях используются учетные данные для пользователей metricbeat_writer и metricbeat_setup, которые вы создали. Для повышения безопасности рекомендуется использовать сертификаты PKI.

После настройки подключений к Elasticsearch и Kibana вы включите модуль elasticsearch-xpack и настройте его для использования HTTPS.

В производственных средах настоятельно рекомендуется использовать отдельный кластер (называемый мониторинговым кластером) для хранения данных. Использование отдельного мониторингового кластера предотвращает сбои в основном кластере от влияния на доступ к данным мониторинга. Это также предотвращает влияние мониторинга на производительность основного кластера.

  1. На узле, на котором вы сгенерировали сертификаты для HTTP-слоя, перейдите к каталогу /kibana.
  2. Скопируйте сертификат elasticsearch-ca.pem в каталог, где установлен Metricbeat.
  3. Откройте конфигурационный файл 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, содержащему сертификат вашей ЦС.
  4. Настройте подключение к 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.
  5. Включите модуль elasticsearch-xpack.

    ./metricbeat modules enable elasticsearch-xpack
  6. Измените модуль 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, содержащему сертификат вашей ЦС.
  7. Если вы хотите использовать предварительно определенные ресурсы для анализа, индексирования и визуализации данных, выполните следующую команду для загрузки этих ресурсов:

    ./metricbeat setup -e
  8. Запустите Elasticsearch, а затем запустите Metricbeat.

    ./metricbeat -e

    -e необязательно и отправляет вывод в стандартную ошибку вместо конфигурируемого вывода журнала.

  9. Войдите в 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/8.17/security-basic-setup-https.html

Spec-Zone.ru

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