【问题标题】:How to give access to a database to only specific users?如何仅向特定用户授予对数据库的访问权限?
【发布时间】:2019-01-08 00:14:46
【问题描述】:

这可能是一个愚蠢的问题,我确信这是我的心理模型的问题。

最终,我想为一个角色设置权限,以便该角色中的任何其他角色都可以永久访问所有当前表,并自动永久访问所有未来表。但仅限于那些已明确添加到所述“组角色”的角色。

目前尚不清楚如何做到这一点。

【问题讨论】:

    标签: postgresql database-permissions


    【解决方案1】:

    没有办法得到你想要的,但你可以足够接近。

    处理现有表非常简单:只需撤销已授予表的所有权限并授予对您的组角色的访问权限。使这变得简单的命令是

    GRANT/REVOKE ALL
       ON ALL TABLES IN SCHEMA ... TO/FROM ...;
    

    为了处理未来的表格,您必须将可能创建表格的用户圈子限制为少数人,并为每个人运行

    ALTER DEFAULT PRIVILEGES FOR ROLE creating_user
       GRANT ALL ON TABLES TO ...;
    

    如果您无法枚举可以创建表的用户,则可以在每个 CREATE 语句的末尾运行一个事件触发器。

    【讨论】:

    • 如果我对您的理解正确,就数据库中表的权限而言,没有办法“设置并忘记它”,因此在创建新表时我需要重新添加每个新表的角色的 CRUD 权限?
    • 不,ALTER DEFAULT PRIVILEGES 负责将来创建的所有表。 但是您必须为将来可以使用表的每个用户运行它。所以如果你不能合理地限制创建表的数据库用户的圈子,它就不会像你想要的那样工作。然后,另一种选择可能是在 CREATE TABLE 语句末尾运行的事件触发器。
    猜你喜欢
    • 1970-01-01
    • 2014-04-11
    • 2014-02-18
    • 1970-01-01
    • 2014-08-11
    • 2012-03-10
    • 2020-09-05
    • 2013-10-01
    • 1970-01-01
    相关资源
    最近更新 更多