Шифрование SSL

Для безопасных соединений с кластерами ADQM и защиты каналов обмена данными между компонентами сервисов ADQM Control поддерживает SSL-шифрование трафика. Чтобы использовать эту функциональность, необходимо получить сертификаты и настроить SSL с помощью пользовательского интерфейса ADCM.

 
Для примера в этой статье используется кластер ADQM Control, включающий два хоста, на которых компоненты сервисов ADQM Control распределены следующим образом:

  • 10.92.41.249, dev-adqm-c-01.arenadata.local — все компоненты сервиса ADQM Control и компонент Zookeeper Server сервиса Zookeeper;

  • 10.92.41.23, dev-adqm-c-02.arenadata.local — компонент Arenadata PostgreSQL сервиса ADPG.

ADQM Control интегрирован с кластером ADQM, для которого включено SSL-шифрование соединений согласно инструкции в статье документации ADQM Шифрование SSL.

Для целей тестирования серверные SSL-сертификаты подписываются самоподписанным (self-signed) корневым сертификатом центра сертификации (Certification Authority, CA), создание которого также описано в статье с примером настройки SSL для ADQM (см. пункты 1 и 2 в разделе Создание SSL-сертификатов). В production-системах для подписи сертификатов необходимо использовать доверенный центр сертификации.

Создание SSL-сертификатов

Для создания и регистрации SSL-сертификатов с помощью приведенных ниже команд требуется утилита openssl (минимальная версия 1.1.1).

  1. Сгенерируйте ключ и создайте запрос на подпись сертификата (Certificate Signing Request, CSR) для каждого хоста кластера ADQM Control:

    $ openssl req -newkey rsa:2048 -nodes \
      -subj "/CN=dev-adqm-c-01.arenadata.local" \
      -addext "subjectAltName = DNS:dev-adqm-c-01.arenadata.local,IP:10.92.41.249" \
      -keyout adqm-c-host-01.key -out adqm-c-host-01.csr
    $ openssl req -newkey rsa:2048 -nodes \
      -subj "/CN=dev-adqm-c-02.arenadata.local" \
      -addext "subjectAltName = DNS:dev-adqm-c-02.arenadata.local,IP:10.92.41.23" \
      -keyout adqm-c-host-02.key -out adqm-c-host-02.csr

    В качестве идентификатора сертификата CN (Common Name) нужно указать полное доменное имя хоста (Fully Qualified Domain Name, FQDN), для которого создается сертификат. Иначе сертификат нельзя будет проверить.

  2. Для каждого хоста кластера создайте и подпишите сертификат с помощью корневого сертификата центра сертификации и закрытого ключа:

    $ openssl x509 -req \
      -in adqm-c-host-01.csr \
      -out adqm-c-host-01.crt \
      -CAcreateserial -CA arenadata_ca.crt -CAkey arenadata_ca.key \
      -days 365
    $ openssl x509 -req \
      -in adqm-c-host-02.csr \
      -out adqm-c-host-02.crt \
      -CAcreateserial -CA arenadata_ca.crt -CAkey arenadata_ca.key \
      -days 365

    Как упоминалось выше, в данном примере серверные сертификаты подписываются тем же центром сертификации, что и сертификаты, используемые в примере конфигурирования SSL для кластера ADQM — см. описание создания файлов корневого сертификата центра сертификации (arenadata_ca.crt) и закрытого ключа (arenadata_ca.key) в статье документации ADQM Шифрование SSL.

  3. На каждый хост кластера, где установлены компоненты сервисов ADQM Control, скопируйте файлы сертификата и ключа соответствующего сервера, а также корневого сертификата. Для компонентов Backend, Agents, Alert Generator и Alert Receiver сервиса ADQM Control эти файлы должны храниться по одинаковому пути и называться одинаково на каждом хосте кластера, где установлены эти компоненты. Для компонента Alertmanager и компонентов других сервисов (ADPG, Zookeeper, Monitoring) используются отдельные директории для хранения этих файлов. Пути и названия файлов сертификата/ключа сервера и корневого сертификата указываются в настройках соответствующих сервисов ADQM Control (см. секцию Параметры SSL в сервисных конфигурациях).

     
    В данном примере предполагается включение SSL для всех компонентов сервиса ADQM Control и для сервиса ADPG — соответственно, необходимо разместить созданные файлы сертификатов/ключей на хостах кластера следующим образом:

    • Для компонентов Backend, Agents, Alert Generator, Alert Receiver сервиса ADQM Control скопировать на хост dev-adqm-c-01.arenadata.local:

      • adqm-c-host-01.crt в /etc/adqmc/server.crt;

      • adqm-c-host-01.key в /etc/adqmc/server.key;

      • arenadata_ca.crt в /etc/adqmc/ca.crt.

    • Для компонента Alertmanager сервиса ADQM Control скопировать на хост dev-adqm-c-01.arenadata.local:

      • adqm-c-host-01.crt в /etc/admprom/alert-manager/server.crt;

      • adqm-c-host-01.key в /etc/admprom/alert-manager/server.key;

      • arenadata_ca.crt в /etc/admprom/alert-manager/ca.crt.

    • Для сервиса ADPG скопировать на хост dev-adqm-c-02.arenadata.local:

      • adqm-c-host-02.crt в /etc/adpg16/server.crt;

      • adqm-c-host-02.key в /etc/adpg16/server.key;

      • arenadata_ca.crt в /etc/adpg16/ca.crt.

    Директории /etc/adqmc/, /etc/admprom/alert-manager/, /etc/adpg16/ и названия файлов server.crt, server.key, ca.crt по умолчанию указаны в параметрах Certificate file, Private key file, Certificate authority file секции SSL configuration конфигурации сервисов ADQM Control и ADPG. Если на хостах ADQM Control файлы сертификатов/ключей имеют другие названия или расположены в других директориях, соответствующие пути нужно указать в этих параметрах.

Конфигурирование ADQM Control для включения SSL

Включить SSL-шифрование соединений в ADQM Control можно через интерфейс ADCM, который предоставляет для этого следующие функциональные возможности:

Действие Manage SSL

  1. На странице Clusters в строке кластера ADQM Control нажмите иконку actions default dark actions default light, чтобы открыть список действий для работы с кластером, и выберите Manage SSL.

    Запуск действия Manage SSL
    Запуск действия "Manage SSL"

    Откроется диалоговое окно, где при активированном переключателе Enable SSL становятся доступны параметры, с помощью которых можно указать какие сервисы ADQM Control должны использовать безопасные соединения.

    Параметры для включения SSL в окне конфигурации действия Manage SSL
    Параметры для включения SSL в окне конфигурации действия "Manage SSL"
  2. Заполните необходимые параметры в окне конфигурации действия Manage SSL:

    • Параметры в секции Enable SSL — чтобы включить/отключить SSL-шифрование входящих и внутренних соединений для различных сервисов ADQM Control.

      Параметры включения SSL для сервисов

       

      При выполнении действия Manage SSL указанные в его конфигурации значения параметров перезаписывают значения соответствующих параметров секции SSL configuration в конфигурациях сервисов — см. столбец Параметр сервиса в приведенной ниже таблице.

      Параметр Manage SSL Описание параметра Параметр сервиса

      [ADPG] → Secure ADPG

      Включает SSL для защищенного взаимодействия с хранилищем данных

      Сервис ADPG: параметр Enable SSL

      [ADQM Control] → Secure Backend

      Включает SSL-шифрование соединений с компонентом Backend сервиса ADQM Control

      Сервис ADQM Control: параметр [ADQM Control’s Backend] → Enable SSL

      [ADQM Control] → Secure ADQM Agent

      Включает SSL-шифрование соединений c компонентом Agents сервиса ADQM Control

      Сервис ADQM Control: параметр [ADQM Control’s ADQM Agent] → Enable SSL

      [ADQM Control] → Secure Alert Generator

      Включает SSL-шифрование соединений с компонентом Alert Generator сервиса ADQM Control

      Сервис ADQM Control: параметр [ADQM Control’s Alert Generator] → Enable SSL

      [ADQM Control] → Secure Alert Receiver

      Включает SSL-шифрование соединений с компонентом Alert Receiver сервиса ADQM Control

      Сервис ADQM Control: параметр [ADQM Control’s Alert Receiver] → Enable SSL

      [ADQM Control] → Secure Alertmanager

      Включает SSL-шифрование соединений с компонентом Alertmanager сервиса ADQM Control

      Сервис ADQM Control: параметр [Alertmanager] → Enable SSL

      [Zookeeper] → Secure Incoming Connections

      Включает SSL-шифрование входящих соединений в ZooKeeper

      Сервис Zookeeper: параметр Enable SSL

      [Zookeeper] → Secure SSL Quorum

      Включает SSL-шифрование кворумной коммуникации в ZooKeeper

      Сервис Zookeeper: параметр sslQuorum

      [Monitoring] → Secure Prometheus

      Включает SSL-шифрование соединений с компонентом Prometheus Server сервиса Monitoring

      Сервис Monitoring: параметр [Prometheus] → Enable SSL

      [Monitoring] → Secure Grafana

      Включает SSL-шифрование соединений с компонентом Grafana сервиса Monitoring

      Сервис Monitoring: параметр [Grafana] → Enable SSL

      [Monitoring] → Secure Node-exporter

      Включает SSL-шифрование соединений с компонентом Node Exporter сервиса Monitoring

      Сервис Monitoring: параметр [Node-exporter] → Enable SSL

    • Параметр Run service checks — чтобы указать, нужно ли запустить проверку работоспособности и доступности кластера после применения настроек.

  3. Нажмите Next, а затем — Run в окне подтверждения запуска действия.

Во время выполнения действия Manage SSL ADCM последовательно останавливает все сервисы, перенастраивает их для включения или выключения SSL-шифрования, затем запускает сервисы и производит их проверку.

Результат действия и процесс его выполнения можно посмотреть на странице Jobs, где отображаются детали выполнения всех внутренних этапов действий, включая подробный stdout/stderr вывод Ansible.

Параметры SSL в сервисных конфигурациях

Альтернативный способ настроить защищенные соединения в ADQM Control — сконфигурировать параметры SSL для каждого сервиса отдельно.

  1. Перейдите на вкладку Services кластера ADQM Control и выберите сервис, для которого нужно включить SSL-шифрование: ADPG, ADQM Control, Zookeeper или Monitoring.

  2. На вкладке Primary configuration настройте параметры SSL — название секции, где находятся эти параметры, зависит от сервиса.

    ADPG: SSL Configuration

     
    В разделе SSL Configuration конфигурации сервиса ADPG доступны следующие параметры.

    Параметр Описание Значение по умолчанию

    Enable SSL

    Включает использование безопасных входящих соединений в хранилище данных

    Неактивен

    Certificate file

    Путь к файлу серверного SSL-сертификата в формате CRT (файл *.crt). Файл сертификата должен храниться по указанному пути на хосте кластера, где установлен компонент Arenadata PostgreSQL сервиса ADPG

    /etc/adpg16/server.crt

    Private key file

    Путь к файлу закрытого ключа серверного SSL-сертификата (файл *.key). Файл ключа должен храниться по указанному пути на хосте кластера, где установлен компонент Arenadata PostgreSQL сервиса ADPG

    /etc/adpg16/server.key

    Certificate authority file

    Путь к файлу корневого сертификата центра сертификации в формате CRT (файл *.crt). Файл корневого сертификата CA должен храниться по указанному пути на хосте кластера, где установлен компонент Arenadata PostgreSQL сервиса ADPG

    /etc/adpg16/ca.crt

    Конфигурационные параметры сервиса ADPG для проверки SSL-сертификатов соединений
    Конфигурационные параметры сервиса ADPG для проверки SSL-сертификатов соединений
    ADQM Control: SSL configuration

     

    В разделе SSL Configuration конфигурации сервиса ADQM Control доступны следующие параметры.

    Параметр Описание Значение по умолчанию

    [ADQM Control’s Backend] → Enable SSL

    Включает SSL-шифрование входящих соединений для компонента Backend

    Неактивен

    [ADQM Control’s ADQM Agent] → Enable SSL

    Включает SSL-шифрование входящих соединений для компонента Agents

    Неактивен

    [ADQM Control’s Alert Generator] → Enable SSL

    Включает SSL-шифрование входящих соединений для компонента Alert Generator

    Неактивен

    [ADQM Control’s Alert Receiver] → Enable SSL

    Включает SSL-шифрование входящих соединений для компонента Alert Receiver

    Неактивен

    [Alertmanager] → Enable SSL

    Включает SSL-шифрование входящих соединений для компонента Alertmanager

    Неактивен

    [ADQM Control Services] → Certificate file

    Путь к файлу серверного SSL-сертификата в формате CRT (файл *.crt) для компонентов Backend, Agents, Alert Generator, Alert Receiver. Файл сертификата должен храниться по указанному пути на каждом хосте кластера, где установлены эти компоненты

    /etc/adqmc/server.crt

    [ADQM Control Services] → Private key file

    Путь к файлу закрытого ключа серверного SSL-сертификата (файл *.key) для компонентов Backend, Agents, Alert Generator, Alert Receiver. Файл ключа должен храниться по указанному пути на каждом хосте кластера, где установлены эти компоненты

    /etc/adqmc/server.key

    [ADQM Control Services] → Certificate authority file

    Путь к файлу корневого сертификата центра сертификации в формате CRT (файл *.crt) для компонентов Backend, Agents, Alert Generator, Alert Receiver. Файл корневого сертификата CA должен храниться по указанному пути на каждом хосте кластера, где установлены эти компоненты

    /etc/adqmc/ca.crt

    [Alertmanager] → Certificate file

    Путь к файлу серверного SSL-сертификата в формате CRT (файл *.crt) для компонента Alertmanager. Файл сертификата должен храниться по указанному пути на хосте кластера, где установлен компонент Alertmanager

    /etc/admprom/alert-manager/server.crt

    [Alertmanager] → Private key file

    Путь к файлу закрытого ключа серверного SSL-сертификата (файл *.key) для компонента Alertmanager. Файл ключа должен храниться по указанному пути на хосте кластера, где установлен компонент Alertmanager

    /etc/admprom/alert-manager/server.key

    [Alertmanager] → Certificate authority file

    Путь к файлу корневого сертификата центра сертификации в формате CRT (файл *.crt) для компонента Alertmanager. Файл корневого сертификата CA должен храниться по указанному пути на хосте кластера, где установлен компонент Alertmanager

    /etc/admprom/alert-manager/ca.crt

    Конфигурационные параметры сервиса ADQM Control для проверки SSL-сертификатов соединений
    Конфигурационные параметры сервиса ADQM Control для проверки SSL-сертификатов соединений
    ADQM Control: ADQM management

     
    Параметр Connection type в разделе ADQM management конфигурации сервиса ADQM Control позволяет включить использование только безопасных соединений по TCP между ADQM Control и ADQM. Если в ADQM параметр Network → Enable tcp сервиса ADQMDB установлен в false, параметр Connection type в ADQM Control необходимо установить в значение Secure (TCP secure).

    Настройка безопасного подключения к ADQM по TCP
    Настройка безопасного подключения к ADQM по TCP
    ADQM Control: Zookeeper configuration

     

    В разделе Zookeeper configuration конфигурации сервиса ADQM Control доступен параметр SSL connection, который позволяет включить SSL-шифрование соединений с ZooKeeper.

    Настройка безопасного подключения к ZooKeeper
    Настройка безопасного подключения к ZooKeeper
    Zookeeper: SSL configuration

     

    Раздел SSL configuration конфигурации сервиса Zookeeper содержит следующие параметры для настройки входящих и внутренних SSL-соединений в ZooKeeper (keystore- и truststore-файлы должны храниться по указанным в параметрах путям на всех хостах кластера, где установлен компонент Zookeeper Server).

    Параметр Описание Значение по умолчанию

    Enable SSL

    Включает использование безопасных входящих соединений в ZooKeeper

    Неактивен

    sslQuorum

    Включает шифрование внутренних соединений в кворуме

    Неактивен

    serverCnxnFactory

    Имя класса, реализующего ServerCnxnFactory. Чтобы использовать серверную коммуникацию на основе TLS, установите значение параметра NettyServerCnxnFactory

    org.apache.zookeeper.server.NettyServerCnxnFactory

    ssl.quorum.keyStore.location

    Путь к файлу хранилища ключей сервера

    /etc/zookeeper/server.jks

    ssl.quorum.keyStore.password

    Пароль, используемый при создании хранилища ключей, указанного в ssl.quorum.keyStore.location

     — 

    ssl.quorum.trustStore.location

    Путь к файлу хранилища доверенных сертификатов сервера

    /etc/zookeeper/ca.jks

    ssl.quorum.trustStore.password

    Пароль, используемый при создании хранилища доверенных сертификатов, указанного в ssl.quorum.trustStore.location

     — 

    ssl.keyStore.location

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

    /etc/zookeeper/server.jks

    ssl.keyStore.password

    Пароль, используемый при создании хранилища ключей, указанного в ssl.keyStore.location

     — 

    ssl.trustStore.location

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

    /etc/zookeeper/ca.jks

    ssl.trustStore.password

    Пароль, используемый при создании хранилища доверенных сертификатов, указанного в ssl.trustStore.location

     — 

    ssl.protocol

    Протокол TLS для общения с клиентом

    TLSv1.2

    ssl.quorum.protocol

    Протокол TLS для общения в кворуме

    TLSv1.2

    secureClientPort

    Порт для безопасных клиентских соединений

    2281

    Конфигурационные параметры сервиса Zookeeper для соединений по SSL
    Конфигурационные параметры сервиса Zookeeper для соединений по SSL
    Monitoring: SSL configuration

     

    В разделе SSL configuration конфигурации сервиса Monitoring доступны следующие параметры для настройки SSL-защищенных подключений к компонентам сервиса (файлы сертификатов/ключей должны храниться по указанным в параметрах путям на хостах кластера, где установлены соответствующие компоненты мониторинга).

    Параметр Описание Значение по умолчанию

    [Prometheus] → Enable SSL

    Включает SSL-шифрование входящих соединений для компонента мониторинга Prometheus Server

    Неактивен

    [Prometheus] → Certificate file

    Путь к файлу серверного SSL-сертификата в формате CRT (файл *.crt) для компонента Prometheus Server

    /etc/admprom/prometheus/server.crt

    [Prometheus] → Private key file

    Путь к файлу закрытого ключа серверного SSL-сертификата (файл *.key) для компонента Prometheus Server

    /etc/admprom/prometheus/server.key

    [Prometheus] → Certificate authority file

    Путь к файлу корневого сертификата центра сертификации в формате CRT (файл *.crt) для проверки источников, предоставляющих данные в Prometheus (targets)

    /etc/admprom/prometheus/ca.crt

    [Grafana] → Enable SSL

    Включает SSL-шифрование входящих соединений для компонента мониторинга Grafana

    Неактивен

    [Grafana] → Certificate file

    Путь к файлу серверного SSL-сертификата в формате CRT (файл *.crt) для компонента Grafana

    /etc/admprom/grafana/server.crt

    [Grafana] → Private key file

    Путь к файлу закрытого ключа серверного SSL-сертификата (файл *.key) для компонента Grafana

    /etc/admprom/grafana/server.key

    [Grafana] → Certificate authority file

    Путь к файлу корневого сертификата центра сертификации в формате CRT (файл *.crt) для проверки сертификата Prometheus

    /etc/admprom/grafana/ca.crt

    [Node-exporter] → Enable SSL

    Включает SSL-шифрование входящих соединений для компонента мониторинга Node Exporter

    Неактивен

    [Node-exporter] → Certificate file

    Путь к файлу серверного SSL-сертификата в формате CRT (файл *.crt) для компонента Node Exporter

    /etc/ssl/server.crt

    [Node-exporter] → Private key file

    Путь к файлу закрытого ключа серверного SSL-сертификата (файл *.key) для компонента Node Exporter

    /etc/ssl/server.key

    Конфигурационные параметры сервиса Monitoring для соединений по SSL
    Конфигурационные параметры сервиса Monitoring для соединений по SSL
  3. После указания всех необходимых параметров для конфигурации SSL-соединений нажмите Save и выполните Reconfigure and restart для сервиса, чтобы применить изменения.

Пример

  1. В разделе ADQM management конфигурации сервиса ADQM Control установите для параметра Connection type значение Secure (TCP secure), чтобы ADQM Control обращался к ADQM только через TCP-порт для безопасного соединения по SSL (ADQM secure port).

    Опция для включения использования только безопасных соединений с ADQM по TCP
    Опция для включения использования только безопасных соединений с ADQM по TCP

    Нажмите Save.

  2. Запустите кластерное действие Manage SSL. В окне с настройками активируйте Enable SSL и включите следующие опции для шифрования трафика между сервисными компонентами ADQM Control:

    • [ADPG] → Secure ADPG

    • [ADQM Control] → Secure Backend

    • [ADQM Control] → Secure ADQM Agent

    • [ADQM Control] → Secure Alert Generator

    • [ADQM Control] → Secure Alert Receiver

    • [ADQM Control] → Secure Alertmanager

      Включение SSL в ADQM Control через кластерное действие Manage SSL
      Включение SSL в ADQM Control через кластерное действие "Manage SSL"

Проверка соединения

Чтобы проверить, что ADQM Control работает в защищенном режиме по протоколу HTTPS, можно зайти в его web-интерфейс по адресу https://10.92.41.249:5555 (10.92.41.249 в данном примере — IP-адрес хоста, на котором установлен компонент Backend). При этом нельзя подключиться к ADQM Control по HTTP.

Отключение SSL

Для отключения SSL запустите действие Manage SSL с деактивированной группой Enable SSL или выключите опцию Enable SSL в конфигурации нужного сервиса.

Отключение SSL действием Manage SSL
Отключение SSL действием "Manage SSL"
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней