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

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

В производственной среде некоторые функции Elasticsearch, такие как токены и API-ключи, будут отключены, если вы не включите TLS на уровне HTTP. Этот дополнительный уровень безопасности гарантирует, что все коммуникации с кластером и в кластер будут защищены.

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

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

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

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

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

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

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

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

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

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

  1. На каждом узле вашего кластера остановите Elasticsearch и Kibana, если они запущены.
  2. На любом одном узле из каталога установки Elasticsearch запустите инструмент Elasticsearch HTTP certificate для генерации запроса на подпись сертификата (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. Укажите все имена хостов, используемые для подключения к вашему первому узлу. Эти имена хостов будут добавлены в качестве имен DNS в поле 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:

    1. Введите metricbeat_setup в качестве имени роли.
    2. Выберите привилегии кластера monitor и manage_ilm.
    3. Для индексов metricbeat-\*, выберите привилегии manage и write.

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

  2. Создайте пользователя setup:

    1. Введите metricbeat_setup в качестве имени пользователя.
    2. Введите имя пользователя, пароль и другие данные пользователя.
    3. Назначьте следующие роли пользователю metricbeat_setup:

      Роль Цель

      metricbeat_setup

      Настройка Metricbeat.

      kibana_admin

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

      ingest_admin

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

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

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

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

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

  1. Создайте роль мониторинга:

    1. Введите metricbeat_monitoring в качестве имени роли.
    2. Выберите привилегию кластера monitor.
    3. Для индексов .monitoring-beats-\*, выберите привилегии create_index и create_doc.
  2. Создайте пользователя мониторинга:

    1. Введите metricbeat_monitoring в качестве имени пользователя.
    2. Введите имя пользователя, пароль и другие данные пользователя.
    3. Назначьте следующие роли пользователю metricbeat_monitoring:

      Роль Цель

      metricbeat_monitoring

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

      kibana_admin

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

      monitoring_user

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

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

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

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

  1. Создайте роль writer:

    1. Введите metricbeat_writer в качестве имени роли.
    2. Выберите привилегии кластера monitor и read_ilm.
    3. Для индексов metricbeat-\*, выберите привилегии create_doc, create_index и view_index_metadata.
  2. Создайте пользователя writer:

    1. Введите metricbeat_writer в качестве имени пользователя.
    2. Введите имя пользователя, пароль и другие данные пользователя.
    3. Назначьте следующие роли пользователю metricbeat_writer:

      Роль Цель

      metricbeat_writer

      Мониторинг Metricbeat

      remote_monitoring_collector

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

      remote_monitoring_agent

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

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

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

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

  1. Создать роль читателя:

    1. Введите metricbeat_reader в качестве имени роли.
    2. На индексах metricbeat-\*, выберите привилегию read.
    3. В Kibana, нажмите Добавить привилегию Kibana.

      • В разделе Пространства выберите По умолчанию.
      • Выберите Чтение или Все для функций «Поиск», «Визуализация», «Панель мониторинга» и «Метрики».
  2. Создать пользователя-читателя:

    1. Введите metricbeat_reader в качестве имени пользователя.
    2. Введите имя пользователя, пароль и другие данные пользователя.
    3. Назначьте следующие роли пользователю 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.

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

  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/7.17/security-basic-setup-https.html

Spec-Zone.ru

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