如何授予 Redshift 中所有模式的使用权限?
Posted
技术标签:
【中文标题】如何授予 Redshift 中所有模式的使用权限?【英文标题】:How to grant usage on all schemas in Redshift? 【发布时间】:2018-09-17 22:47:05 【问题描述】:我想创建一个只读用户,该用户应该对所有模式中的所有表具有 SELECT 访问权限。我检查了 redshift 文档,但看起来我们只能在单个 sql 语句中授予对特定模式的访问权限。 (不是所有模式一次该只读用户应该对将来创建的所有表/模式具有只读访问权限。我不知道该怎么做。
是我遗漏了什么还是 AWS 故意这样做的?如果这是一个限制,那么解决此问题的可能解决方法是什么?
【问题讨论】:
你是对的,这就是它的工作原理。它不是由 AWS 故意完成的,它是 postgres 的一个特性。您可以在 redshift 之外设置一个脚本来自动化该过程。 我明白了。谢谢您的答复。然后我会写一个 udf 来完成它。 正确 - 但不是红移 UDF。它需要在红移之外。 我明白了,但出于好奇 - 为什么它不能是红移 UDF?我正在考虑从系统表中获取所有模式并循环运行命令。 您无法访问 Redshift UDF 中的表 docs.aws.amazon.com/redshift/latest/dg/… 【参考方案1】:您不能在 Redshift 中一次授予对多个架构的 SELECT(“只读”)权限,因为您已经发现这只能在每个架构的基础上完成。也无法设置权限,以便用户自动获得对新创建的模式的任何类型的权限,除非该用户是“超级用户”。这是大多数数据库平台的典型特征,即必须在创建架构后创建架构级别权限。
我建议您最好的选择是查看创建新模式的过程,并查看权限 GRANT 是否可以作为该过程的一部分来完成。考虑使用用户组而不是用户,这样在您需要添加或更改具有这些权限的用户时更易于管理。
例如
CREATE GROUP readonlyusers;
CREATE USER my_readonly_user WITH PASSWORD 'abc' IN GROUP readonlyusers;
-- when creating a new schema
CREATE SCHEMA IF NOT EXISTS myschema;
GRANT SELECT ON ALL TABLES IN SCHEMA myschema TO GROUP readonlyusers;
【讨论】:
此外,如果您希望架构中所有新创建的TABLE
s自动将权限设置为某些角色,您可以ALTER DEFAULT PRIVILEGES
以上是关于如何授予 Redshift 中所有模式的使用权限?的主要内容,如果未能解决你的问题,请参考以下文章
如何授予 Amazon Redshift 用户读取系统表、视图、日志等的访问权限?