gpt4 book ai didi

postgresql - postgres 中的角色、组和设置 session 授权

转载 作者:行者123 更新时间:2023-11-29 11:51:42 26 4
gpt4 key购买 nike

我正在研究 Multi-Tenancy 应用程序的 postgres 行级安全性。我想通过一个基于 tenant_name 分隔行的策略来实现这一点,tenant_name 是我表中的一列。我有每个租户的角色。但是,我通过 super 用户连接维护一个连接池。这样我就只能有一个连接池。一旦我收到来自租户的查询,我想先放弃该租户的权限,然后再执行查询。

因此,我以 super 用户身份连接到数据库,然后执行“设置 session 授权租户角色”。这会设置 session_user 和 current_user 变量。然而,问题是这个租户用户可以自己做一个“set session authorization some_other_tenant”然后行安全无关紧要。我猜这是因为数据库登录上下文是 super 用户。

那么我该如何实现呢?一旦我对某个用户执行“设置 session 授权”或“设置角色”,该用户就不能再运行相同的操作。

谢谢

最佳答案

您可能想阅读 this , 为您解答。

本质上,创建一个无特权用户并通过它登录到池(而不是作为主管角色的连接池)。登录后,将角色升级为实际连接的用户。上面的 URL 告诉你如何做到这一点。

我无法理解的是,如果这是一个不受控制的环境,那么即使使用此解决方案,用户也可以升级为其他人的角色,并且仍然会造成破坏。所以即使这回答了问题,但它可能仍然不是你最终想要做的!

关于postgresql - postgres 中的角色、组和设置 session 授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35353937/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com