文档说
如果订阅已配置 run_as_owner = true,则不会发生用户切换。相反,所有操作都将在订阅所有者的权限下执行。在这种情况下,订阅所有者只需要对目标表进行 SELECT、INSERT、UPDATE 和 DELETE 的权限,而不需要对表所有者设置 ROLE 的权限。但是,这也意味着拥有正在复制的表的任何用户都可以使用订阅所有者的权限执行任意代码。例如,他们可以通过简单地将触发器附加到他们拥有的表之一来完成此操作。由于通常不希望允许一个角色自由地承担另一个角色的权限,因此应避免使用此选项,除非不关心数据库内的用户安全。
我不确定我是否理解为什么这是一个安全风险。表所有者不是总是可以强制使用其表的角色执行代码吗?我天真的直觉是,表所有者是一个敏感角色,正是因为它具有这些权限,而订阅所有者角色可以具有非常严格的权限(仅对其表进行 CRUD),为什么这种直觉是错误的?