如何防止用户在PostgreSQL中修改架构

时间:2019-02-07 18:44:55

标签: database postgresql authorization roles privileges

如何在允许用户执行创建,读取,更新和删除操作的同时,防止用户执行架构修改(例如添加新表,删除表列等)?

2 个答案:

答案 0 :(得分:0)

最好的解决方案是使用两个用户:

  • 拥有模式及其中所有对象的人
  • 另一个被授予对对象(方案和序列上的USAGE,上的SELECTINSERTUPDATEDELETE的必要权限的对象表格等)

您可以使用ALTER DEFAULT PRIVILEGES来获得将来创建的所有对象的权限。

答案 1 :(得分:0)

根据documentation,模式CREATE | USAGE有两种可能的特权,其中创建allows new objects to be created within the schema(需要防止)和使用{{1} }(您想要保留的内容)。

因此您需要allows access to objects contained in the specified schemaREVOKE CREATE ON SCHEMA ... FROM ...

但是,在此之前,请谨慎使用privileges granted on PUBLIC,您可能必须撤销对PUBLIC的所有权限,并将其授予必要的用户。