限制Google Cloud SQL数据库用户权限

3
我是Google Cloud SQL的新手。我创建了两个postgres数据库,并创建了两个新用户(一个是从Web仪表板创建的,另一个是从命令行创建的)。我的目标是防止两个用户能够修改彼此的数据库,但我无法使其正常工作。
这是我想要的:
- UserA对DB_A拥有所有权限 - UserA对DB_B没有任何权限 - UserB对DB_B拥有所有权限 - UserB对DB_A没有任何权限
我已经尝试从psql提示符授予/撤销权限,但最终我仍然能够以UserB身份在DB_A中创建/删除表。
我是否可以实现我想要的东西?我是否漏掉了什么?
1个回答

2

云SQL上的Postgres是标准的Postgres,因此它就像任何其他的Postgres实例一样:

赋予一个角色所有权限:

GRANT ALL ON <db_name> TO <role_name>;

要移除所有权限:

REVOKE ALL ON <db_name> TO <role_name>; 

PostgreSQL的特权文档对于以下内容提供了警告:

对象所有者的特殊权限(即修改或销毁对象的权利)始终隐含在其所有者身份中,不能授予或撤消

因此,请记住 - 如果UserA拥有这两个数据库,他们始终可以修改它们。

不幸的是,这似乎不起作用:我通过“postgres”用户创建了所有数据库/用户,然后根据需要授予/撤销权限,但问题仍然存在。 - Stefano Ansaloni
以上答案中提供的链接已经解释了:对象所有者拥有特殊权限(即修改或销毁对象的权利)始终隐含在所有权中,不能被授予或撤销。但是所有者可以选择撤销自己的普通权限,例如使表只读...您可以像UserB或UserA一样修改表,因为基本上您是创建对象的所有者。尝试让您分配这些角色的人进行修改,看看会发生什么。 - Victor M Perez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接