33.1. Параметры инициализации кластера по настройке управления доступом #
Параметры кластера Postgres Pro Shardman, связанные с безопасностью, берутся из файла инициализации. Можно изменить их позднее, но это следует делать с осторожностью, помня, что в большинстве случаев любое изменение потребует перезапуска СУБД.
В кластере Postgres Pro Shardman есть два специальных пользователя: администратор и пользователь репликации. Shardman управляет экземплярами СУБД через администраторов. Репликация между контролируемыми экземплярами СУБД осуществляется BiHA через пользователей репликации.
Параметры безопасности в файле инициализации задают:
Методы аутентификации для администраторов и пользователей репликации —
PgSuAuthMethod
,PgReplAuthMethod
.Имена для администраторов и пользователей репликации —
PgSuUsername
,PgReplUsername
Пароли для администраторов и пользователей репликации —
PgSuPassword
,PgReplPassword
Правила в файле
pg_hba.conf
, используемые экземплярами СУБД —StolonSpec.pgHBA
Более подробно эти параметры рассматриваются в описании Подраздел 19.21.2.
Чтобы задать параметры безопасности, выполните следующие действия:
Проверьте, что пользователь, который будет указан в
PgReplUsername
/PgSuUsername
, имеет праваREPLICATION
/SUPERUSER
во всех группах репликации в кластере, и укажите его действующий пароль вPgReplPassword
/PgSuPassword
.Если всё верно, создайте дамп ключа etcd
shardman/cluster0/data/cluster
(здесь и далее имя кластера Postgres Pro Shardman —cluster0
). Например:$
etcdctl --endpoints etcdserver:2379 get --print-value-only shardman/cluster0/data/cluster |jq . > clusterdata.json
В этом примере создаётся дамп ключа
data/cluster
для кластера Postgres Pro Shardman с именемcluster0
с сервера etcdetcdserver
, принимающего подключения через порт2379
, дамп форматируется при помощи jq и сохраняется в файлclusterdata.json
.При необходимости отредактируйте дамп и сохраните его обратно в etcd:
$
cat clusterdata.json | etcdctl --endpoints etcdserver:2379 put shardman/cluster0/data/cluster
Изменение этих параметров приведёт к перезапуску СУБД.
В отличие от вышеуказанных параметров, параметр StolonSpec.pgHBA
может быть изменён без перезапуска СУБД. Чтобы изменить его, выполните следующие действия:
Извлеките определение
StolonSpec
изshardman/cluster0/data/cluster
, сохраните в какой-нибудь файл, измените при необходимости и обновите параметры кластера командойshardmanctl config update
:$
etcdctl --endpoints etcdserver:2379 get --print-value-only shardman/cluster0/data/cluster | jq .Spec.StolonSpec . > shardspec.json
Отредактируйте в файле
shardspec.json
определениеStolonSpec.pgHBA
соответствующим образом, например:"pgHBA": [ "host all postgres 0.0.0.0/0 scram-sha-256", "host replication postgres 0.0.0.0/0 scram-sha-256", "host replication postgres ::0/0 scram-sha-256", "host all someuser 0.0.0.0/0 scram-sha-256" ],
Примените изменения, внесённые в файл
shardspec.json
:$
shardmanctl --store-endpoints etcdserver:2379 --cluster-name cluster0 config update -f shardspec.json