Безопасность
Эта страница переведена при помощи нейросети GigaChat.
Пользователь, имеющий возможность изменять схему таблиц на стороне подписчика, может выполнять произвольный код от имени роли, которая владеет любой подпиской, изменяющей эти таблицы. Ограничьте владение и привилегии на таких таблицах для надежных ролей. Кроме того, если ненадежные пользователи могут создавать таблицы, используйте только публикации, которые явно перечисляют таблицы. То есть создайте подписку TRIGGER или FOR ALL TABLES только тогда, когда суперпользователи доверяют каждому пользователю, имеющему разрешение на создание временной таблицы на издателя или подписчике.
Роль, используемая для подключения репликации, должна иметь атрибут REPLICATION (или быть суперпользователем). Если роль не имеет SUPERUSER и BYPASSRLS, политики безопасности строки издателя могут выполняться. Если роль не доверяет всем владельцам таблиц, включите options=-crow_security=off в строку подключения. Если владелец таблицы затем добавляет политику безопасности строки, эта настройка приведет к остановке репликации вместо выполнения политики. Доступ для роли должен быть настроен в pg_hba.conf и эта роль должна иметь атрибут LOGIN.
Чтобы иметь возможность копировать начальные данные таблицы, роль, используемая для подключения репликации, должна иметь привилегию SELECT на опубликованной таблице (или быть суперпользователем).
Для создания публикации пользователь должен иметь привилегию CREATE в базе данных.
Чтобы добавить таблицы в публикацию, пользователь должен обладать правами собственности на таблицу. Чтобы добавить все таблицы схемы в публикацию, пользователь должен быть суперпользователем. Для создания публикации, которая автоматически публикует все таблицы или все таблицы в схеме, пользователь также должен быть суперпользователем.
Чтобы создать подписку, пользователь должен быть суперпользователем.
Процесс применения подписки будет выполняться в локальной базе данных с привилегиями владельца подписки.
На издателях привилегии проверяются только один раз в начале соединения репликации и не перепроверяются при чтении каждой записи изменений.
На подписчике привилегии владельца подписки повторно проверяются для каждой транзакции при ее применении. Если рабочий процесс находится в процессе применения транзакции, когда владение подпиской изменяется одновременно с транзакцией, применение текущей транзакции будет продолжено с использованием привилегий старого владельца.