我正在尝试创建一个默认情况下不“打开”但需要通过 SET ROLE 命令“打开”的角色。我以为 NOINHERIT 会是问题,但这不起作用(在 Postgres v. 15 中):
create role admin_role NOINHERIT;
create role user login password 'secret';
grant admin_role to user;
create table t(i integer);
alter table revoke insert from user;
-- login as user1
insert into t values (1); -- does happen!!!
我希望 user1 只能在 SET ROLE admin_role 之后插入数据。
您必须在会员上使用
NOINHERIT
,而不是在 admin_role
上。
NOINHERIT
表示“不继承其所属角色的特权”。