我正在为多租户应用程序处理 postgres 行级安全性。我想通过一个策略来实现这一点,该策略基于我表中的一列租户名称来分隔行。我有每个租户的角色。但是,我通过超级用户的连接来维护一个连接池。这样我就可以只有一个连接池。一旦我有来自租户的查询,我想先删除该租户的权限,然后执行查询。
所以我以超级用户身份连接到数据库,然后执行“设置会话授权租户角色”。这将设置 session_user 和 current_user 变量。但是,问题在于该租户用户可以自己执行“设置会话授权 some_other_tenant”,然后行安全性无关紧要。我猜这是因为数据库登录上下文是超级用户。
那么我该如何实现呢?一旦我对某个用户执行“设置会话授权”或“设置角色”,该用户将无法再次运行相同的操作。
谢谢