Шифрование 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).
-
Сгенерируйте ключ и создайте запрос на подпись сертификата (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), для которого создается сертификат. Иначе сертификат нельзя будет проверить.
-
Для каждого хоста кластера создайте и подпишите сертификат с помощью корневого сертификата центра сертификации и закрытого ключа:
$ 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.
-
На каждый хост кластера, где установлены компоненты сервисов 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.
-
-
Конфигурирование ADQM Control для включения SSL
Включить SSL-шифрование соединений в ADQM Control можно через интерфейс ADCM, который предоставляет для этого следующие функциональные возможности:
-
Действие Manage SSL на уровне кластера — можно включить SSL сразу для нескольких сервисных компонентов ADQM Control.
-
Параметры SSL в конфигурациях сервисов ADQM Control — можно настроить SSL для каждого сервиса отдельно (в том числе изменить пути к файлам сертификатов и ключей по умолчанию).
Действие Manage SSL
-
На странице Clusters в строке кластера ADQM Control нажмите иконку
, чтобы открыть список действий для работы с кластером, и выберите Manage SSL.
Запуск действия "Manage SSL"Откроется диалоговое окно, где при активированном переключателе Enable SSL становятся доступны параметры, с помощью которых можно указать какие сервисы ADQM Control должны использовать безопасные соединения.
Параметры для включения SSL в окне конфигурации действия "Manage SSL" -
Заполните необходимые параметры в окне конфигурации действия 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 — чтобы указать, нужно ли запустить проверку работоспособности и доступности кластера после применения настроек.
-
-
Нажмите Next, а затем — Run в окне подтверждения запуска действия.
Во время выполнения действия Manage SSL ADCM последовательно останавливает все сервисы, перенастраивает их для включения или выключения SSL-шифрования, затем запускает сервисы и производит их проверку.
Результат действия и процесс его выполнения можно посмотреть на странице Jobs, где отображаются детали выполнения всех внутренних этапов действий, включая подробный stdout/stderr вывод Ansible.
Параметры SSL в сервисных конфигурациях
Альтернативный способ настроить защищенные соединения в ADQM Control — сконфигурировать параметры SSL для каждого сервиса отдельно.
-
Перейдите на вкладку Services кластера ADQM Control и выберите сервис, для которого нужно включить SSL-шифрование: ADPG, ADQM Control, Zookeeper или Monitoring.
-
На вкладке 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-сертификатов соединений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: 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 по TCPADQM Control: Zookeeper configurationВ разделе Zookeeper configuration конфигурации сервиса ADQM Control доступен параметр SSL connection, который позволяет включить SSL-шифрование соединений с ZooKeeper.
Настройка безопасного подключения к ZooKeeperZookeeper: 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 для соединений по SSLMonitoring: 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 -
После указания всех необходимых параметров для конфигурации SSL-соединений нажмите Save и выполните Reconfigure and restart для сервиса, чтобы применить изменения.
Пример
-
В разделе ADQM management конфигурации сервиса ADQM Control установите для параметра Connection type значение
Secure (TCP secure)
, чтобы ADQM Control обращался к ADQM только через TCP-порт для безопасного соединения по SSL (ADQM secure port).Опция для включения использования только безопасных соединений с ADQM по TCPНажмите Save.
-
Запустите кластерное действие 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"
-
Проверка соединения
Чтобы проверить, что ADQM Control работает в защищенном режиме по протоколу HTTPS, можно зайти в его web-интерфейс по адресу https://10.92.41.249:5555 (10.92.41.249
в данном примере — IP-адрес хоста, на котором установлен компонент Backend). При этом нельзя подключиться к ADQM Control по HTTP.