ebo*_*osi 3 postgresql permissions
背景
在我的 PostgreSQL 实例中(比如只有一个表构成的一个唯一数据库),我有 2 个用户:
user_A
, 谁可以创建和填充my_table
,user_B
, 谁应该只能从中读取 ( SELECT
) 。碰巧的是,由于我无法控制的 API,user_A
不断删除并my_table
从头开始重新创建。
这会导致 上的user_B
权限重置my_table
。
因此,我被迫
my_db=# GRANT SELECT on TABLE my_table TO user_B;
Run Code Online (Sandbox Code Playgroud)
每次user_A
重新创建my_table
.
注意:
我知道(参见。为在 postgresql 中创建的任何新表授予用户权限)只能为授予它们的用户创建的对象设置默认权限(即,user_B
为创建的表设置默认权限会更容易)by user_B
)——但这里的情况并非如此。
此外,如上面链接的问题所述,文档指定“您只能更改将由您自己或您所属的角色创建的对象的默认权限”。
所以我可以有
CREATE ROLE super_role;
GRANT super_role TO user_A;
GRANT super_role TO user_B;
Run Code Online (Sandbox Code Playgroud)
然后SET ROLE super_role
在user_A
创建表之前......但不幸的是我无法控制如何user_A
创建它。
问题默认情况下,
我如何才能在由创建的表上?GRANT SELECT
user_B
user_A
PostgreSQL 具有默认权限,这是满足您需求的完美工具:
ALTER DEFAULT PRIVILEGES FOR ROLE user_a
GRANT SELECT ON TABLES TO user_b;
Run Code Online (Sandbox Code Playgroud)
现在user_b
将自动获得SELECT
对所有由user_a
.
归档时间: |
|
查看次数: |
653 次 |
最近记录: |