【发布时间】:2019-01-08 00:14:46
【问题描述】:
这可能是一个愚蠢的问题,我确信这是我的心理模型的问题。
最终,我想为一个角色设置权限,以便该角色中的任何其他角色都可以永久访问所有当前表,并自动永久访问所有未来表。但仅限于那些已明确添加到所述“组角色”的角色。
目前尚不清楚如何做到这一点。
【问题讨论】:
标签: postgresql database-permissions
这可能是一个愚蠢的问题,我确信这是我的心理模型的问题。
最终,我想为一个角色设置权限,以便该角色中的任何其他角色都可以永久访问所有当前表,并自动永久访问所有未来表。但仅限于那些已明确添加到所述“组角色”的角色。
目前尚不清楚如何做到这一点。
【问题讨论】:
标签: postgresql database-permissions
没有办法得到你想要的,但你可以足够接近。
处理现有表非常简单:只需撤销已授予表的所有权限并授予对您的组角色的访问权限。使这变得简单的命令是
GRANT/REVOKE ALL
ON ALL TABLES IN SCHEMA ... TO/FROM ...;
为了处理未来的表格,您必须将可能创建表格的用户圈子限制为少数人,并为每个人运行
ALTER DEFAULT PRIVILEGES FOR ROLE creating_user
GRANT ALL ON TABLES TO ...;
如果您无法枚举可以创建表的用户,则可以在每个 CREATE 语句的末尾运行一个事件触发器。
【讨论】:
ALTER DEFAULT PRIVILEGES 负责将来创建的所有表。 但是您必须为将来可以使用表的每个用户运行它。所以如果你不能合理地限制创建表的数据库用户的圈子,它就不会像你想要的那样工作。然后,另一种选择可能是在 CREATE TABLE 语句末尾运行的事件触发器。