繁体   English   中英

将创建表特权限制为RDS PostgreSQL 9.6中的新创建用户

[英]Restrict create table privilege to newly created users in RDS PostgreSQL 9.6

在RDS PostgreSQL 9.6中创建只读用户时遇到问题。 我正在执行以下SQL命令:

---- ###### CREATE ROLE ################
CREATE ROLE readonlyrole_dev;

-- Grant access to existing tables
GRANT USAGE ON SCHEMA public TO readonlyrole_dev;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonlyrole_dev;

-- set the privileges that will be applied to objects created in the future.
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO readonlyrole_dev;



CREATE USER readonly_dev WITH PASSWORD 'welcome1';
GRANT readonlyrole_dev TO readonly_dev;

当我使用readonly_dev用户登录时,默认情况下它具有创建新表的特权,但我不想这样做。 我想让readonly_dev只保留一个只读用户。

注意:要撤消我正在执行的用户的访问

REVOKE CREATE ON SCHEMA public FROM PUBLIC;

也会撤销所有旧用户的创建对象特权。 我只想撤销新创建用户的创建特权。

我怎样才能做到这一点?

您不能这样做,也没有必要。

只需拒绝用户对所有架构的CREATE权限即可。 您应该为此使用用户组-将所有应具有特权的用户都放在对模式具有所需特权的组中创建表,并从PUBLIC撤消CREATE

如果您坚持必须这样做,请尝试创建一个事件触发器 ,该触发器将在特定用户尝试创建表时引发异常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM