Для обеспечения безопасности данных при логической репликации в PostgreSQL рекомендуется следующее:
- Ограничить круг владельцев и ролей, имеющих право TRIGGER для таблиц. 12 Доверенные роли должны иметь право на изменение схемы таблиц на стороне подписчика. 12
- Использовать публикации, которые явно перечисляют таблицы. 14 Если ненадёжные пользователи могут создавать таблицы, нужно включать в публикацию только таблицы по списку. 2
- Создавать подписку FOR ALL TABLES только тогда, когда есть доверие ко всем пользователям, имеющим право создавать таблицы на стороне публикации или подписки. 12
- Использовать роль с атрибутом REPLICATION или суперпользователя для подключения репликации. 12 Если у роли отсутствуют свойства SUPERUSER и BYPASSRLS, при репликации могут выполняться политики защиты строк. 2
- Добавить в строку подключения параметр options=-crow_security=off. 2 Если владелец таблицы добавит политику защиты строк позже, при таком значении параметра репликация остановится, но политика выполняться не будет. 2
Также для дополнительной защиты можно создать одну «стерильную» базу данных для каждой публикации и предоставлять внешнему пользователю подключение только к ней, а не к основной базе данных. 5