3 Настройка аутентификации для взаимодействия с внешними компонентами
В своей работе ядро "Спектра" использует данные от следующих внешних систем:
-
Агент "Спектра". Устанавливается на все узлы кластера МБД.П. Используется для управления кластером МБД.П и формирования некоторых метрик для мониторинга.
-
ПО "Скала^р Визион". Используется для получения метрик, для отображения данных мониторинга в "Спектре".
-
Модуль управления ПО "Скала^р Геном". Используется для получения данных о кластерах в Машине МБД.П.
Для безопасной передачи данных между компонентами АС используется протокол HTTPS и аутентификация компонентов.
3.1 Настройка аутентификации в Агенте "Спектра"
При взаимодействии ядра "Спектра" с Агентом "Спектра" используется аутентификация по токену.
Для настройки аутентификации в агенте "Спектра" нужно выполнить следующие действия.
-
На узле "Спектра" перейти в каталог распакованного дистрибутива и выполнить команды:
source /opt/skala-r/spectrum/python-modules/bin/activate python3 spectrum-tools/update_agent_auth_token.py -i путь_к_файлу_inventoryгде файл
inventory— файл в формате .yml, содержащий данные об узлах кластера, на которых настраивается аутентификация с Агентом "Спектра".Пример файла можно найти в распакованном дистрибутиве "Спектра" по пути
inventory_samples/cluster.yml. -
После выполнения последней команды нужно ввести токен аутентификации, который должен представлять из себя строку, содержащую латинские буквы и цифры.
-
Далее будет предложено ввести пароль, используемый для подключения к узлам кластера по SSH.
В результате выполнения этой команды Агенты "Спектра" на указанных узлах будут перезагружены.
На узлах кластера значение токена хранится в защищенном (хэшированном) виде в конфигурационном файле Агента "Спектра"
/opt/skala-r/etc/spectrum/spectrum-agent/config.conf.На хосте Спектра значение токена хранится в зашифрованном файле
/opt/skala-r/spectrum/.vault_storeи записывается в него автоматически при выполнении команды из п. 1.Для изменения ранее настроенного токена на новый необходимо повторить процедуру настройки аутентификации в Агенте "Спектра".
3.2 Настройка аутентификации в "Визионе"
При взаимодействии ядра "Спектра" с API "Визиона" используется аутентификация по токену. Для настройки аутентификации необходимо выполнить следующие действия:
-
Получить токен аутентификации "Визиона". Для этого нужно выполнить API-запрос с типом
POSTна адрес:URL_ВИЗИОНА/vision/api/v1/auth/token/?name=ИМЯ_ТОКЕНАИмя токена можно выбрать произвольное.
Ответ на успешный запрос должен иметь следующее содержание:
{ "status": "success", "data": { "jti": "03a4...", "name": "ИМЯ_ТОКЕНА", "created_at": "2024-06-04T11:15:05.809707+03:00", "token": "ТОКЕН_АУТЕНТИФИКАЦИИ" }, "pagination": null, "message": null, "error": null } -
Если токен отсутствует, его можно создать через интерфейс "Визиона".
Для создания токена в интерфейсе пользователя "Визион" перейти в раздел , где необходимо ввести имя токена и нажать кнопку Сгенерировать, которая становится активной после ввода имени токена. Будет отображено поле со значением сгенерированного токена:
Сгенерированный токен необходимо сразу скопировать и использовать в дальнейшем при настройке "Спектра", так как впоследствии он не будет отображаться, в разделе "Токены доступа" будут отображаться только имена созданных токенов.
Подробнее о создании токенов см. Руководство пользователя "Визион", раздел .
-
Сохранить значение токена в файле с секретами.
В файл с зашифрованными секретами, расположенный на хосте "Спектра" по пути
/opt/skala-r/spectrum/.vault_store, необходимо добавить строку:vision_token: ТОКЕН_АУТЕНТИФИКАЦИИДля этого выполнить следующие команды:
source /opt/skala-r/spectrum/python-modules/bin/activate ansible-vault edit /opt/skala-r/spectrum/.vault_store
-
Ввести пароль хранилища, после чего будет открыт текстовый редактор.
После сохранения файла нужно проверить корректность настройки секции "Визион" в файле конфигурации
spectrum-api/opt/skala-r/etc/spectrum/spectrum-api/config.conf. Секция "Визион" должна иметь вид:[vision_config] host=192.168.191.61 port=8088 base_url=/vision/api/v1/tsdb cert= ;client_cert=/opt/skala-r/spectrum/certs/client.crt ;client_key=/opt/skala-r/spectrum/certs/client.key -
Перезапустить сервис
spectrum-apiс помощью команды:systemctl restart spectrum-api.service
3.3 Настройка TLS
"Спектр" поддерживает возможность использования TLS для шифрования данных, передаваемых между хостом "Спектра" и Агентом "Спектра" на узлах кластеров, а также хостами "Генома" и "Визиона". Для корректной работы TLS необходимо предоставить подписанные корневой и серверный с ключами, а также внести изменения в конфигурационные файлы модулей "Спектра", Агента "Спектра" и Агента уведомлений "Спектра".
При использовании TLS при взаимодействии с "Геномом" или "Визионом" потребуется также настроить соответствующее ПО на узлах "Генома" и "Визиона". Инструкция по настройке TLS представлена в документации соответствующих продуктов.
При первой установке "Спектра" генерируются ключ и самоподписанный серверный сертификат для доступа к веб-интерфейсу "Спектра" по протоколу HTTPS.
Для полноценной настройки защищенного взаимодействия между всеми компонентами необходимо иметь также и корневой сертификат, которым будут подписаны все остальные сертификаты. Сертификаты могут иметь цепочки любой длины, должны иметь формат PEM с расширением файла .pem или .crt и могут быть самоподписанными. Ключ сертификата должен иметь расширение файла .key.
|
Если серверные сертификаты для "Спектра", Агентов "Спектра", "Визиона", "Генома" были выпущены от общего корневого сертификата, то корневой сертификат, используемый для настройки защищенного взаимодействия с указанными компонентами – это один и тот же файл |
3.3.1 Настройка TLS для веб-интерфейса "Спектра"
|
Названия и расположение файлов и ключей сертификатов может отличаться от приведенных в данном руководстве. |
Для настройки TLS на хосте "Спектра" должны присутствовать:
-
серверный сертификат
spectrum_server.crt -
ключ серверного сертификата
spectrum_server.key.
Ключи расположены в директории /etc/nginx/ssl.
Необходимо удостовериться, что в конфигурации файле конфигурации nginx для "Спектра" (/etc/nginx/sites-available.d/spectrum.conf) в блоке server присутствуют следующие директивы с корректно указанными путями:
listen 8092 ssl;
TLS_certificate /etc/nginx/ssl/spectrum.crt;
TLS_certificate_key /etc/nginx/ssl/spectrum.key;
TLS_protocols TLSv1.2 TLSv1.3;
TLS_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305;
TLS_prefer_server_ciphers off;
TLS_ecdh_curve secp384r1;
TLS_session_tickets off;
# Можно убрать т.к. пока нет клиентов API Спектра
#ssl_verify_client optional;
#ssl_client_certificate /opt/skala-r/spectrum/certs/ca.crt;
3.3.2 Настройка TLS для взаимодействия с Агентом "Спектра"
На узлах кластеров МБД.П должны присутствовать:
-
серверный сертификат
node_server.crt -
ключ серверного сертификата
node_server.key.
|
Серверные сертификаты и ключи должны быть выписаны от одного корневого сертификата. |
В файлах конфигурации Агента "Спектра" /opt/skala-r/etc/spectrum/spectrum-agent/config.conf и Агента уведомлений "Спектра" на узлах кластера должны быть указаны пути к серверному сертификату и ключу.
Пример секции с указанными путями к сертификатам в конфигурации Агента "Спектра":
"cert": {
"server_cert": "/opt/skala-r/spectrum/certs/server.crt",
"server_key": "/opt/skala-r/spectrum/certs/server.key",
}
На узле "Спектра" должен присутствовать корневой сертификат, а также в файлах конфигураций для служб spectrum-api, spectrum-tasks, spectrum-scheduler необходимо указать путь к корневому сертификату в секции agent_config.
Пути к файлам конфигураций соответствующих служб на хосте "Спектра":
-
/opt/skala-r/etc/spectrum/spectrum-api/config.conf, -
/opt/skala-r/etc/spectrum/spectrum-tasks/config.conf, -
/opt/skala-r/etc/spectrum/spectrum-sheduler/config.conf.
Пример секции с указанными путями к сертификатам в конфигурации spectrum-api:
[agent_config]
port=9000
cert=/opt/skala-r/spectrum/certs/ca.crt
3.3.3 Настройка TLS для взаимодействия с "Визионом"
Если для "Визиона" настроено использование защищённого взаимодействия для внешних систем, то на стороне "Спектра" необходимо выполнить дополнительные настройки.
-
На узле "Спектра" разместить в
/opt/skala-r/spectrum/certs/ca.crtкорневой сертификат, от которого был выписан сертификат "Визиона". -
В файле конфигурации службы
spectrum-api(/opt/skala-r/etc/spectrum/spectrum-api/config.conf) в секцииvision_configуказать путь к корневому сертификату.Пример секции:
[vision_config] host=172.29.224.179 port=8428 base_url=/vision/victoriametrics/api/v1 cert=/opt/skala-r/spectrum/certs/ca.crt
3.3.4 Настройка TLS для взаимодействия с модулем управления ПО "Скала^р Геном"
Если для модуля управления ПО "Скала^р Геном" настроено использование защищенного взаимодействия для внешних систем, то на стороне "Спектра" также необходимо выполнить дополнительные настройки.
-
На узле "Спектра" разместить в
/opt/skala-r/spectrum/certs/ca.crtкорневой сертификат, от которого был выписан сертификат модуля управления ПО "Скала^р Геном". -
В файле конфигурации службы
spectrum-api(/opt/skala-r/etc/spectrum/spectrum-api/config.conf) в секцииgenome_configуказать путь к корневому сертификату.Пример секции:
[genome_config] host=192.168.190.100 port=52888 base_url=/api/genome/v001/spectrum username_db=genome cert=/opt/skala-r/spectrum/certs/ca.crt
3.4 Проверка сертификатов клиента
В качестве дополнительной меры защиты может использоваться проверка клиентских сертификатов при межкомпонентном взаимодействии. Эта функция по умолчанию отключена.
Для настройки этой функции необходимо получить корневой сертификат и клиентские сертификаты и ключи для каждого компонента, участвующего во взаимодействии, а также выполнить дополнительные настройки в файлах конфигурации "Спектра", Агента "Спектра", а также "Генома" и "Визиона", если проверка клиентских сертификатов выполняется и в них.
|
Клиентские сертификаты и ключи должны выписываться от общего корневого. |
3.4.1 Проверка клиентского сертификата в Агенте "Спектра"
-
На узлах кластера МБД.П разместить корневой сертификат, который использовался для генерации клиентских сертификатов в
/opt/skala-r/spectrum/certs/ca.crt.
В файле конфигурации Агента "Спектра" (/opt/skala-r/etc/spectrum/spectrum-agent/config.conf) в секции auth добавить параметр ca_cert, в котором указать путь к корневому сертификату.
Пример секции auth с настроенным TLS и проверкой клиентских сертификатов:
"cert": {
"server_cert": "/opt/skala-r/spectrum/certs/server.crt",
"server_key": "/opt/skala-r/spectrum/certs/server.key",
"ca_cert": "/opt/skala-r/spectrum/certs/ca.crt"
}
Далее перезапустить службу Агента "Спектра":
systemctl restart spectrum-agent
|
После активации функции проверки клиентских сертификатов доступ к API Агента будет возможен только с использованием сертификатов клиента. |
-
На хосте "Спектра" в каталоге
/opt/skala-r/spectrum/certsразместить клиентские сертификаты и внести изменения в файлы конфигурации службspectrum-api,spectrum-scheduler,spectrum-tasksв секцииagent_config, указав пути к сертификату и ключу клиента.
Пример секции agent_config для службы spectrum-api:
[agent_config]
port=9000
cert=/opt/skala-r/spectrum/certs/ca.crt
client_cert=/opt/skala-r/spectrum/certs/client.crt
client_key=/opt/skala-r/spectrum/certs/client.key
3.4.2 Проверка клиентского сертификата в "Визионе"
Если в "Визионе" настроена функция проверки клиентских сертификатов, то на узле "Спектра" необходимо в каталоге /opt/skala-r/spectrum/certs/ разместить клиентские сертификат и ключ для взаимодействия с "Визионом", в файле конфигурации службы spectrum-api (/opt/skala-r/etc/spectrum/spectrum-api/config.conf) в секции vision_config указать пути к этим файлам.
Пример секции vision_config:
[vision_config]
host=172.29.224.179
port=8428
base_url=/vision/victoriametrics/api/v1
cert=/opt/skala-r/spectrum/certs/ca.crt
client_cert=/opt/skala-r/spectrum/certs/vision_client.crt
client_key=/opt/skala-r/spectrum/certs/vision_client.key
3.4.3 Проверка клиентского сертификата в модуле управления ПО "Скала^р Геном" ("Геном.У")
Если в модуле управления ПО "Скала^р Геном" настроена функция проверки клиентских сертификатов, то на узле "Спектра" необходимо в каталоге
/opt/skala-r/spectrum/certs/ разместить клиентские сертификат и ключ для взаимодействия с модулем управления ПО "Скала^р Геном" и в файле конфигурации службы spectrum-api (/opt/skala-r/etc/spectrum/spectrum-api/config.conf) в секции genome_config указать пути к этим файлам.
Пример секции genome_config:
[genome_config]
host=192.168.190.100
port=52888
base_url=/api/genome/v001/spectrum
username_db=genome
cert=/opt/skala-r/spectrum/certs/ca.crt
client_cert=/opt/skala-r/spectrum/certs/genome_client.crt
client_key=/opt/skala-r/spectrum/certs/genome_client.key