【问题标题】:How to prevent schema modification by the user in PostgreSQL如何防止用户在 PostgreSQL 中修改模式
【发布时间】:2019-07-01 23:25:25
【问题描述】:

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

【问题讨论】:

  • GRANT USAGE ON SCHEMA ...(必要时提前REVOKE ALL

标签: database postgresql authorization roles privileges


【解决方案1】:

根据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 的所有权限并将其授予必要的用户。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-08
      • 2015-12-25
      • 2016-07-05
      • 2021-07-26
      • 2021-09-21
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      相关资源
      最近更新 更多