历史版本。 PostgreSQL 11 已结束支持。 2023-11-09. 请参阅 当前版本手册.
31.7. 安全性 #
能够修改订阅端表模式的用户可以以超级用户身份执行任意代码。限制此类表的所有权和 TRIGGER 权限,仅授予超级用户信任的角色。此外,如果不受信任的用户可以创建表,则仅使用显式列出表的发布。也就是说,只有在超级用户信任发布端或订阅端上允许创建非临时表的每个用户时,才创建 FOR ALL TABLES 的订阅。
用于复制连接的角色必须具有 REPLICATION 属性(或者是超级用户)。如果该角色缺少 SUPERUSER 和 BYPASSRLS,发布端的行安全策略可能会被执行。如果该角色不信任所有表的所有者,可在连接字符串中包含 options=-crow_security=off;这样如果某个表所有者添加了行安全策略,该设置将导致复制停止而不是执行该策略。必须在 pg_hba.conf 中配置该角色的访问权限,并且该角色必须具有 LOGIN 属性。
为了能够复制初始表数据,用于复制连接的角色必须对已发布的表具有
SELECT 权限(或者是超级用户)。
要创建发布,用户必须在数据库中具有 CREATE 权限。
要向发布添加表,用户必须对该表拥有所有权。要创建自动发布所有表的发布,用户必须是超级用户。
要创建订阅,用户必须是超级用户。
订阅应用进程将以超级用户的权限在本地数据库中运行。
权限只在复制连接开始时检查一次。不会在读取发布端的每条变更记录时重新检查,也不会在应用每条变更时重新检查。