有没有办法阻止用户在 PostgreSQL 中运行“重置角色”,从而获得他可能没有的权限?
我有一个架构,在一台服务器上有很多数据库。API 连接到本地 PostgreSQL 服务器上的多个数据库。我曾计划使用 Pgbouncer,但听起来我必须将 pgbouncer 中的一个数据库/用户映射到 PostgreSQL 中的同一数据库/用户,这听起来适得其反。相反,我希望能够重用连接,但在连接时对不同的用户有不同的授权。
有没有办法阻止用户在 PostgreSQL 中运行“重置角色”,从而获得他可能没有的权限?
我有一个架构,在一台服务器上有很多数据库。API 连接到本地 PostgreSQL 服务器上的多个数据库。我曾计划使用 Pgbouncer,但听起来我必须将 pgbouncer 中的一个数据库/用户映射到 PostgreSQL 中的同一数据库/用户,这听起来适得其反。相反,我希望能够重用连接,但在连接时对不同的用户有不同的授权。
1
RESET ROLE
只会将您“返回”到您用于登录的角色。这里 也SET ROLE rolename
所以“获得他可能没有的许可”并非如此。
2 pgbouncer 确实需要这样的映射。
3 “重用连接,但在连接时对不同的用户有不同的授权。” 您可以使用与 非常相似的设置授权
SET ROLE
。我相信没有会话池可以为你做这件事......
带有令牌的PostgreSQL set_user 扩展模块可能是一个选项。
您可以让 PgBouncer 使用
server_reset_query
.