Смена паролей доступа к базе данных
|
После первоначальной установки IVA CS настоятельно рекомендуется сменить пароли для всех пользователей базы данных (БД): Данная процедура выполняется через изменение конфигурации Patroni и требует кратковременной остановки сервисов для предотвращения ошибок подключения компонентов IVA CS к базе данных |
Общий план действий
-
остановить все сервисы IVA CS:
Остановка сервисов обязательна — компоненты IVA CS не должны обращаться в БД со старыми паролями.
Пароли для
replicatorиrewind_userдолжны обновляться одновременно: изменить учетные данные только в PostgreSQL недостаточно — необходимо одновременно прописать их в конфигурации Patroni.Нарушение этого порядка приведет к разрыву репликации
-
на любом из хостов выполнить команду:
sudo ivacs-ctl stop all -
проверить остановку сервисов, выполнив на каждом хосте команду:
sudo ivacs-ctl status
-
-
определить текущий мастер-узел кластера БД
Утилита patronictl возвращает данные по узлам. Искомая строка содержит маркер
Leader.patronictl list ivacsПример выводаCluster: ivacs -----------+----+-----------+-----------------+ | Member | Host | Role | State | Lag in MB | +---------+-----------------+--------+-----------+-----------+ | node-01 | 10.10.10.11 | Leader | running | | | node-02 | 10.10.10.12 | Replica| running | 0.0 | +---------+-----------------+--------+-----------+-----------+
Мастер-узел — это нода со значением
Leaderв колонке Role. IP-адрес мастер-узла указан в колонке Host данной ноды -
сменить пароли на мастер-узле для пользователей
postgres,replicator,rewind_userиivasw-
подключиться к СУБД (порт 5433) мастер-узла утилитой psql, используя текущий пароль пользователя postgres (по умолчанию — postgres)
psql -h <IP_мастер_узла> -p 5433 -U postgres -
ввести новый пароль для postgres, а затем последовательно сменить пароли:
ALTER USER postgres WITH PASSWORD '<NEW_PASSWORD_postgres>'; ALTER USER replicator WITH PASSWORD '<NEW_PASSWORD_replicator>'; ALTER USER rewind_user WITH PASSWORD '<NEW_PASSWORD_rewind_user>'; ALTER USER ivasw WITH PASSWORD '<NEW_PASSWORD_ivasw>';где <NEW_PASSWORD_USER> — новый пароль для каждого пользователя
-
после ввода новых паролей необходимо убедиться, что каждая команда вернула ответ
ALTER ROLE. Получив подтверждение, следует завершить сессию, выполнив:\q
-
-
прописать новые пароли в конфигурационных файлах Patroni (/var/lib/postgresql/.config/patroni/patronictl.yaml) на всех узлах кластера БД:
-
на каждом физическом узле кластера необходимо отредактировать файл конфигурации Patroni — в секции
postgresql.authenticationзаменить установленные значенияpasswordна значения, установленные на предыдущем шаге:Изменение пароля для пользователя ivaswв данной секции не предусмотреноПример конфигурацииpostgresql: authentication: superuser: username: postgres password: <NEW_PASSWORD_postgres> replication: username: replicator password: <NEW_PASSWORD_replicator> rewind: username: rewind_user password: <NEW_PASSWORD_rewind_user> -
убедиться, что файл конфигурации имеет права 640, принадлежит пользователю
postgresи группе postgres, выполнив команды:sudo chown postgres:postgres /var/lib/postgresql/.config/patroni/patronictl.yaml sudo chmod 640 /var/lib/postgresql/.config/patroni/patronictl.yaml
-
-
применить изменения в Patroni: перезагрузить конфигурацию и, при необходимости, последовательно перезапустить ноды кластера БД
-
перезагрузить конфигурацию Patroni, выполнив команду на любом из хостов:
patronictl reload ivacsВыполнение команды reload может быть недостаточно, чтобы реплики начали использовать новый пароль для авторизации на мастер-узле — параметр
primary_conninfoчасто требует перезапуска управляемого PostgreSQL.Чтобы гарантированно активировать новые пароли для потоковой репликации, рекомендуется последовательно перезапустить все ноды кластера с помощью плавного перезапуска Patroni (без простоя мастер-узла), выполнив команду:
patronictl restart ivacsДля перезапуска также можно использовать команду systemctl restart patroni -
дождаться завершения операции и проверить состояние кластера после перезапуска:
patronictl list ivacsВсе узлы должны иметь статус running — репликация активна
-
-
обновить строку подключения в конфигурации сервисов логики
На каждом хосте открыть файл конфигурации /etc/ivasw/logic.yaml и в секции SWL прописать параметр для подключения к базе данных —
DB_CONN_STRING, содержащий новый парольivaswи корректный IP-адрес хоста (IP-адрес сервера телефонии IVA CS):SWL: DB_CONN_STRING: "postgresql://ivasw:<NEW_PASSWORD_ivasw>@<IP_ADDRESS_IVA_CS>:<PORT>/ivasw"где,
-
<NEW_PASSWORD_ivasw> — новый пароль для пользователя
ivasw -
<IP_ADDRESS_IVA_CS> — IP-адрес сервера телефонии IVA CS
-
<PORT> — порт подключения к базе данным сервера телефонии IVA CS, по умолчанию
5432Строку подключения можно передать через переменную окружения SWL_DB_CONN_STRING, задав ее для пользователяivaswс помощью systemctl
-
-
запустить сервисы IVA CS и проверить статус их выполнения
-
запустить сервисы, выполнив на любом из хостов команду:
sudo ivacs-ctl start all -
проверить доступность и работоспособность сервисов стандартными средствами мониторинга или через веб-интерфейсы системы
-