33.1. Параметры инициализации кластера по настройке управления доступом #

Параметры кластера Postgres Pro Shardman, связанные с безопасностью, берутся из файла инициализации. Можно изменить их позднее, но это следует делать с осторожностью, помня, что в большинстве случаев любое изменение потребует перезапуска СУБД.

В кластере Postgres Pro Shardman есть два специальных пользователя: администратор и пользователь репликации. Shardman управляет экземплярами СУБД через администраторов. Репликация между контролируемыми экземплярами СУБД осуществляется BiHA через пользователей репликации.

Параметры безопасности в файле инициализации задают:

  • Методы аутентификации для администраторов и пользователей репликации — PgSuAuthMethod, PgReplAuthMethod.

  • Имена для администраторов и пользователей репликации — PgSuUsername, PgReplUsername

  • Пароли для администраторов и пользователей репликации — PgSuPassword, PgReplPassword

  • Правила в файле pg_hba.conf, используемые экземплярами СУБД — StolonSpec.pgHBA

Более подробно эти параметры рассматриваются в описании Подраздел 19.21.2.

Чтобы задать параметры безопасности, выполните следующие действия:

  1. Проверьте, что пользователь, который будет указан в PgReplUsername/PgSuUsername, имеет права REPLICATION/SUPERUSER во всех группах репликации в кластере, и укажите его действующий пароль в PgReplPassword/PgSuPassword.

  2. Если всё верно, создайте дамп ключа etcd shardman/cluster0/data/cluster (здесь и далее имя кластера Postgres Pro Shardmancluster0). Например:

    $ etcdctl --endpoints etcdserver:2379 get --print-value-only  shardman/cluster0/data/cluster |jq . > clusterdata.json
    

    В этом примере создаётся дамп ключа data/cluster для кластера Postgres Pro Shardman с именем cluster0 с сервера etcd etcdserver, принимающего подключения через порт 2379, дамп форматируется при помощи jq и сохраняется в файл clusterdata.json.

  3. При необходимости отредактируйте дамп и сохраните его обратно в etcd:

    $ cat clusterdata.json | etcdctl --endpoints etcdserver:2379 put shardman/cluster0/data/cluster
    

Изменение этих параметров приведёт к перезапуску СУБД.

В отличие от вышеуказанных параметров, параметр StolonSpec.pgHBA может быть изменён без перезапуска СУБД. Чтобы изменить его, выполните следующие действия:

  1. Извлеките определение 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
    
  2. Отредактируйте в файле 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"
          ],
  3. Примените изменения, внесённые в файл shardspec.json:

    $ shardmanctl --store-endpoints etcdserver:2379 --cluster-name cluster0 config update -f shardspec.json