postgresql - 允许架构中所有表的“SELECT”权限,包括由不同用户创建的新表(AWS RDS;PostgreSQL 11)
问题描述
我有一个readonly
用户,我定义如下:
CREATE ROLE readonly;
GRANT CONNECT ON DATABASE dbname TO readonly;
GRANT USAGE ON SCHEMA public TO readonly;
GRANT USAGE ON SCHEMA schema_name TO readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA schema_name TO readonly;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO readonly;
ALTER DEFAULT PRIVILEGES IN SCHEMA schema_name GRANT SELECT ON TABLES TO readonly;
我目前正在以postgres
用户身份运行这些命令rds_superuser
(我正在使用 AWS RDS)。这工作正常,并允许readonly
角色读取postgres
用户创建的现有表,以及创建的任何新表postgres
。但是,当新角色创建表时,readonly
不能创建新角色创建的表SELECT
。例如,我也有一个readwrite
角色,并且在该架构中创建的表 byreadwrite
不能是SELECT
by readonly
。
如何在 PostgreSQL 中创建只读用户?建议默认情况下ALTER DEFAULT PRIVILEGES ...
仅适用于发出命令的用户创建的对象。
我怎样才能更一般地只允许readonly
用户对SELECT
架构中创建的任何表具有特权,而不管是谁创建它。
解决方案
您将需要更改任何潜在创建者的默认权限,例如对于您的readwrite
角色,使用以下
ALTER DEFAULT PRIVILEGES for role readwrite
IN SCHEMA public GRANT SELECT ON TABLES TO readonly;
推荐阅读
- django - 如何将我的根域与已部署的应用程序连接起来
- java - 如何修复 Spring 框架上的“Whitelabel 错误页面”-GET 请求不起作用
- python - 如何创建一个通用的基于身份的哈希字典?
- javascript - 无法让地理围栏出现在谷歌地图中
- javascript - 在属性之前动态更新的问题
- excel - 在一张纸上创建唯一值列表并在工作表上输出时遇到问题
- sqlite - 从数据库中选择不同的值,然后计算与结果匹配的每个值
- node.js - 存储 JWT 服务器端 express.js
- coldfusion - ColdFusion 不跨 cfhttp 调用维护会话
- http - 原生 Delphi HTTPClient 是否支持 SNI?