2015-09-02 5 views
2

Мы переходим от 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 с открытым текстом, даже если вам требуются специальные привилегии для чтения из указанной таблицы.

ответ

2

В настоящее время вы не можете использовать BDR без подключения суперпользователя для репликации. Это требуется путем логического декодирования. Мы надеемся решить это в выпуске BDR 9.6.

Пожалуйста, подумайте, что очень тщательно о том, действительно ли вам нужен мультимастер, прежде чем идти по этому пути. Вы уверены, что активная/резервная настройка с чтением реплик недостаточно для ваших нужд? Пожалуйста, внимательно прочитайте раздел руководства по ограничениям BDR и дополнительным соображениям разработки приложений.

+0

Спасибо, Крейг, за информацию :) И хорошо знать, что это может быть рассмотрено в будущем. Я буду продолжать использовать пользователя 'replication' для соединений BDR, а затем предоставить ему права суперпользователя. Таким образом, когда нужны меньшие привилегии, я могу просто отменить права, которые не нужны. Мы добавим географически отдельные датацентры в ближайшем будущем, поэтому мы остановились на BDR из разных вариантов репликации, доступных для Postgres. – DanielSmedegaardBuus

+0

@ DanielSmedegaardBuus Cool. Пожалуйста, сначала тщательно проконсультируйтесь и тщательно рассмотрите последствия * асинхронного * мультимастера. В главе о конфликтах в руководстве действительно требуется чтение. –

+0

О, DDL-блокировка тоже. Вы действительно хотите избежать DDL во время нормальной работы. –