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

时间:2018-07-13 13:15:59

标签: postgresql google-cloud-sql

我是Google Cloud SQL的新手。我创建了两个具有两个新用户的postgres数据库(一个是从Web仪表板创建的,另一个是从命令行创建的)。我的目标是阻止这两个用户能够互相修改数据库,但是我无法使其正常工作。

这就是我想要的:

  • UserA对DB_A的所有特权
  • UserA在DB_B上没有特权
  • UserB对DB_B的所有特权
  • UserB在DB_A上没有特权

我已经尝试从psql提示符授予/撤消权限,但是最后我仍然能够以UserB身份在DB_A中创建/删除表。

能否实现我想要的?我想念什么吗?

1 个答案:

答案 0 :(得分:0)

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

授予角色所有特权:

GRANT ALL ON <db_name> TO <role_name>;

要删除所有特权:

REVOKE ALL ON <db_name> TO <role_name>; 

有关特权的Postgres docs确实提供了以下警告:

  

对象所有者的特殊特权(即修改权)   或销毁对象)总是隐含在所有者中,并且   无法授予或撤销

因此请记住-如果UserA拥有两个数据库,则他们可以随时对其进行修改。