Мы переходим от MongoDB к Postgres на работе, и я настраиваю группу BDR.Сделать работу PostgreSQL BDR без привилегий пользователя суперпользователя (postgres)?
На этом этапе я смотрю на безопасность и блокирую там, где это возможно. Следовательно, я надеялся настроить пользователя (роль) replication
и позволить BDR использовать его для своих репликации. У меня уже была группа, счастливо работающая при использовании либо доверенных подключений, либо пользователя postgres
для аутентификации. Для меня это не похоже на 100%, и мне особенно не нравится, как пароль пользователя postgres будет отображаться в текстовом виде в строках соединений DSN в bdr.bdr_nodes
. Поэтому я попытался использовать этого пользователя replication
.
То есть, например. в pg_hba.conf
:
hostssl appdb,replication replication 172.17.1.2 md5
И строка соединения соответствующий DSN,
host=172.17.1.1 dbname=appdb user=replication password=secret
Проблема с этим подходом иллюстрируется следующей ошибки при выдаче bdr.bdr_group_create
:
ERROR: local dsn does not have superuser rights
DETAIL: The dsn 'host=172.17.1.1 dbname=appdb user=replication password=secret' connects successfully but does not grant superuser rights
И это где я «Я немного озадачен. Действительно ли BDR действительно нуждается в правах суперпользователя для репликации? Или я могу предоставить конкретные привилегии моей роли replication
, которая позволит ей делать свой бизнес без всемогущества?
Возможно, это просто я параноик, но я чувствую, что пользователь postgres
должен использоваться только для файлов sysadmin и что пароль для него определенно не должен появляться в таблице в строке соединения DSN с открытым текстом, даже если вам требуются специальные привилегии для чтения из указанной таблицы.
Спасибо, Крейг, за информацию :) И хорошо знать, что это может быть рассмотрено в будущем. Я буду продолжать использовать пользователя 'replication' для соединений BDR, а затем предоставить ему права суперпользователя. Таким образом, когда нужны меньшие привилегии, я могу просто отменить права, которые не нужны. Мы добавим географически отдельные датацентры в ближайшем будущем, поэтому мы остановились на BDR из разных вариантов репликации, доступных для Postgres. – DanielSmedegaardBuus
@ DanielSmedegaardBuus Cool. Пожалуйста, сначала тщательно проконсультируйтесь и тщательно рассмотрите последствия * асинхронного * мультимастера. В главе о конфликтах в руководстве действительно требуется чтение. –
О, DDL-блокировка тоже. Вы действительно хотите избежать DDL во время нормальной работы. –