Параметры СУБД#
В составе платформы Astra Automation используются две СУБД:
PostgreSQL – реляционная;
Redis – нереляционная.
PostgreSQL#
СУБД PostgreSQL необходима для хранения данных компонентов платформы. Возможно использование уже существующего кластера PostgreSQL, например, развернутого в одном из облачных сервисов управляемых баз данных. Если отдельного кластера PostgreSQL нет, экземпляр СУБД можно средствами платформы развернуть на одном из узлов.
Примечание
СУБД PostgreSQL используется платформой для хранения данных, но не является ее частью. Настройка отказоустойчивой конфигурации PostgreSQL в этом руководстве не рассматривается. Для получения соответствующих инструкций обращайтесь к документации PostgreSQL.
Развертывание средствами платформы#
Чтобы средствами платформы развернуть экземпляр СУБД на отдельном узле, выполните следующие действия:
Создайте в инвентаре группу
database
и добавьте в нее сведения об узле, например:[database] database.example.com ansible_host=192.0.2.101
database: hosts: database.example.com: ansible_host: 192.0.2.101
В глобальных переменных укажите значения параметров подключения к СУБД.
При развертывании СУБД средствами платформы в систему автоматически устанавливается расширение hstore
.
Дополнительные действия не требуются.
Предупреждение
Известная проблема безопасности
При установке Astra Automation с развертыванием сервера PostgreSQL средствами платформы вывод команды содержит пароль пользователя в открытом виде. Чтобы избежать этого, запустите установку с передачей дополнительной переменной:
sudo ./aa-setup -- --extra-vars postgres_users_no_log=true
Проблема проявляется при использовании минимальной или базовой топологий и не распространяется на топологию уровня предприятия.
Проблема будет исправлена в версии 1.2-upd4
.
Внешняя СУБД#
Если у вас уже есть кластер PostgreSQL, выполните следующие действия:
Создайте в кластере PostgreSQL пользователей и принадлежащие им базы данных для используемых компонентов платформы.
Убедитесь, что в инвентаре установщика группа
database
существует, но не содержит узлов.В глобальных переменных укажите значения параметров подключения к СУБД.
Проверьте, установлено ли расширение
hstore
для базы данных Private Automation Hub:psql -d <pah_database> -c "SELECT * FROM pg_available_extensions WHERE name='hstore';"
Здесь
<pah_database>
– название базы данных.Если расширение не установлено, выполните следующие действия:
Установите дополнительные пакеты для PostgreSQL:
sudo apt install postgresql-contrib
Создайте расширение
hstore
в базе данных Private Automation Hub:psql -d <pah_database> -c "CREATE EXTENSION hstore;"
Проверьте корректность установки расширения:
psql -d <pah_database> -c "SELECT * FROM pg_available_extensions WHERE name='hstore';"
Если расширение установлено и настроено корректно, в терминал выводится таблица следующего вида:
Параметры подключения к PostgreSQL#
Параметры подключения Automation Controller, Private Automation Hub и контроллера Event-Driven Ansible к СУБД задаются в глобальных переменных:
# ...
[all:vars]
# СУБД для Automation Controller
pg_host='database.example.com'
pg_port=5432
pg_database='awx'
pg_username='automationcontroller'
pg_password='ctrlpassword'
pg_sslmode='prefer'
postgres_use_ssl='true'
postgres_ssl_cert='/path/to/ssl/cert'
postgres_ssl_key='/path/to/ssl/key'
# СУБД для Automation Hub
automationhub_pg_host='database.example.com'
automationhub_pg_port=5432
automationhub_pg_database='automationhub'
automationhub_pg_username='automationhub'
automationhub_pg_password='hubpgpassword'
automationhub_pg_sslmode='prefer'
# СУБД для контроллера Event-Driven Ansible
automationedacontroller_pg_host='database.example.com'
automationedacontroller_pg_port=5432
automationedacontroller_pg_database='automationedacontroller'
automationedacontroller_pg_username='automationedacontroller'
automationedacontroller_pg_password='edapassword'
automationedacontroller_pg_sslmode='prefer'
---
# ...
all:
vars:
# СУБД для Automation Controller
pg_host: database.example.com
pg_port: 5432
pg_database: awx
pg_username: automationcontroller
pg_password: ctrlpassword
pg_sslmode: prefer
postgres_use_ssl: true
postgres_ssl_cert: /path/to/ssl/cert
postgres_ssl_key: /path/to/ssl/key
# СУБД для Automation Hub
automationhub_pg_host: database.example.com
automationhub_pg_port: 5432
automationhub_pg_database: automationhub
automationhub_pg_username: automationhub
automationhub_pg_password: hubpgpassword
automationhub_pg_sslmode: prefer
# СУБД для контроллера Event-Driven Ansible
automationedacontroller_pg_host: database.example.com
automationedacontroller_pg_port: 5432
automationedacontroller_pg_database: automationedacontroller
automationedacontroller_pg_username: automationedacontroller
automationedacontroller_pg_password: edapassword
automationedacontroller_pg_sslmode: prefer
Здесь:
pg_host
,automationhub_pg_host
иautomationedacontroller_pg_host
– IP-адреса или FQDN серверов СУБД для Automation Controller, Private Automation Hub и контроллера Event-Driven Ansible соответственно.Значение по умолчанию: пустая строка (используется локальное подключение).
pg_port
,automationhub_pg_port
иautomationedacontroller_pg_port
– порты для подключения к серверам СУБД для Automation Controller, Private Automation Hub и контроллера Event-Driven Ansible соответственно.Значение по умолчанию:
5432
.pg_database
,automationhub_pg_database
иautomationedacontroller_pg_database
– названия БД для Automation Controller, Private Automation Hub и контроллера Event-Driven Ansible соответственно.Примечание
Если СУБД развернута средствами платформы, используйте название
awx
для базы данных Automation Controller (переменнаяpg_database
в инвентаре установщика). В противном случае работа утилитыaa-setup
будет прервана из-за ошибки.pg_username
,automationhub_pg_username
иautomationedacontroller_pg_username
– названия учетных записей пользователей БД Automation Controller, Private Automation Hub и контроллера Event-Driven Ansible соответственно.pg_password
,automationhub_pg_password
иautomationedacontroller_pg_password
– пароли пользователей БД Automation Controller, Private Automation Hub и контроллера Event-Driven Ansible соответственно.При использовании локального подключения пароль указывать не требуется.
pg_sslmode
,automationhub_pg_sslmode
иautomationedacontroller_pg_sslmode
– режим использования SSL.Может принимать следующие значения:
prefer
– подключение к БД будет защищено с помощью SSL, если использование шифрования поддерживается настройками сервера (по умолчанию);verify-full
– защита подключения с помощью SSL необходима, производится строгая верификация сервера.
postgres_use_ssl
– использование SSL при подключении к БД Automation Controller:true
– включено;false
– выключено.
postgresql_ssl_cert
– полный путь к файлу сертификата, который используется для защиты подключения к серверу СУБД PostgreSQL, развернутому установщиком платформы.postgresql_ssl_key
– полный путь к файлу ключа сертификата, который используется для защиты подключения к серверу СУБД PostgreSQL, развернутому установщиком платформы.Примечание
Файлы сертификата и его ключа должны размещаться в каталоге
/opt/rbta/aa/astra-automation-setup/
или одном из его подкаталогов.Подробности о поддерживаемых параметрах шифрования см. в документации PostgreSQL.
Redis#
Компоненты Astra Automation могут использовать для кеширования данных сервер Redis. Для соответствия требованиям информационной безопасности в продукте предусмотрена возможность шифрования всех соединений с сервером Redis с помощью TLS.
Добавлено в версии 1.2-upd3.
Режимы работы#
Сервер Redis в Astra Automation может работать в двух режимах:
без защиты подключения с помощью TLS – сервер слушает сокет
/var/run/redis.sock
, а данные передаются в открытом виде;с защитой подключения с помощью TLS – сервер принимает подключения только по адресу
127.0.0.1
на порту6379
, все соединения с сервером шифруются.
Предупреждение
Используйте режим работы сервера Redis без защиты подключения с помощью TLS только в тестовых средах и в целях диагностики.
Включение защиты соединения#
Для включения защиты соединения с сервером Redis с помощью сертификата TLS добавьте в инвентарь установщика глобальную переменную redis_set_tls_mode
со значением true
:
redis_set_tls_mode='true'
При необходимости можно задать пароль для доступа к серверу Redis с помощью параметра redis_password
.
Расположение сертификатов#
Если сервер Redis использует защиту подключения с помощью TLS, при подключении к нему компоненты платформы используют следующие файлы:
/etc/astra-automation/redis/client_certs/client.crt
– клиентский сертификат;/etc/astra-automation/redis/client_certs/client.key
– приватный ключ клиентского сертификата;/etc/astra-automation/ca/astra-automation-managed-ca-cert.crt
– корневой сертификат центра сертификации.
Примечание
Эти файлы генерируются и настраиваются сценариями установки. Не изменяйте содержимое указанных файлов и режимы доступа к ним. Используйте сведения об этих файлах только с целью диагностики и устранения сбоев.
Проверка работы защиты соединения#
Для проверки работы защиты соединения с помощью сертификата TLS выполните следующие действия на управляющих узлах Automation Controller после развертывания платформы:
Проверьте настройки сервера Redis:
sudo grep -i tls /etc/redis/redis.conf
В выводе ожидается наличие строки
tls-port 6379
.Убедитесь, что к серверу Redis невозможно подключиться по незащищенному соединению:
redis-cli -h localhost ping
Ожидаемый результат:
Убедитесь в использовании сертификата TLS при подключении:
sudo -u awx redis-cli \ --tls \ --cert /etc/astra-automation/redis/client_certs/client.crt \ --key /etc/astra-automation/redis/client_certs/client.key \ --cacert /etc/astra-automation/ca/astra-automation-managed-ca-cert.crt \ ping
Ожидаемый результат:
Обновите список доступных пакетов:
sudo apt update
Установите утилиту
tcpdump
:sudo apt install tcpdump
С помощью утилиты
tcpdump
убедитесь, что содержимое передается в зашифрованном виде:sudo tcpdump -i lo -A -n port 6379 -v
В теле пакетов не должно быть читаемого текста, содержимое должно выглядеть как случайный набор символов, например: