【发布时间】:2019-07-01 23:25:25
【问题描述】:
如何在允许用户执行创建、读取、更新和删除操作的同时,防止用户执行架构修改,例如添加新表、删除表列等?
【问题讨论】:
-
GRANT USAGE ON SCHEMA ...(必要时提前REVOKE ALL)
标签: database postgresql authorization roles privileges
如何在允许用户执行创建、读取、更新和删除操作的同时,防止用户执行架构修改,例如添加新表、删除表列等?
【问题讨论】:
GRANT USAGE ON SCHEMA ...(必要时提前REVOKE ALL)
标签: database postgresql authorization roles privileges
根据documentation,架构CREATE | USAGE 有两种可能的权限,其中CREATE allows new objects to be created within the schema(您需要防止)和USAGE allows access to objects contained in the specified schema(您想要保持)。
所以你需要REVOKE CREATE ON SCHEMA ... FROM ... 和GRANT USAGE ON SCHEMA ... TO ...
但是,在此之前,请注意privileges granted on PUBLIC,可能您必须撤销对 PUBLIC 的所有权限并将其授予必要的用户。
【讨论】:
最好的解决方案是使用两个用户:
USAGE 对模式和序列,SELECT、INSERT、UPDATE 和 DELETE 对表等)您可以使用ALTER DEFAULT PRIVILEGES 来获取未来创建的所有对象的权限。
【讨论】: