如何授予对 Redshift 中所有模式的使用权?
How to grant usage on all schemas in Redshift?
我想创建一个只读用户,该用户应该 SELECT 访问所有模式中的所有表。我检查了 redshift 文档,但看起来我们只能在单个 sql 语句中授予对特定模式的访问权限。 (不是一次所有模式这个只读用户应该只读访问所有 tables/schemas 将来创建的内容。我不知道该怎么做。
我是不是遗漏了什么或者这是 AWS 故意做的?如果这是一个限制,那么解决这个问题的可能解决方法是什么?
您不能在 Redshift 中一次授予对多个模式的 SELECT ("read only") 权限,因为您已经发现这只能在每个模式的基础上完成。也不可能设置权限以使用户自动获得对新创建的模式的任何类型的权限,除非该用户是 "superuser"。这是大多数数据库平台的典型情况,即必须在创建模式后创建模式级权限。
我建议您最好的选择是查看正在创建新模式的过程,并查看权限 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;
我想创建一个只读用户,该用户应该 SELECT 访问所有模式中的所有表。我检查了 redshift 文档,但看起来我们只能在单个 sql 语句中授予对特定模式的访问权限。 (不是一次所有模式这个只读用户应该只读访问所有 tables/schemas 将来创建的内容。我不知道该怎么做。
我是不是遗漏了什么或者这是 AWS 故意做的?如果这是一个限制,那么解决这个问题的可能解决方法是什么?
您不能在 Redshift 中一次授予对多个模式的 SELECT ("read only") 权限,因为您已经发现这只能在每个模式的基础上完成。也不可能设置权限以使用户自动获得对新创建的模式的任何类型的权限,除非该用户是 "superuser"。这是大多数数据库平台的典型情况,即必须在创建模式后创建模式级权限。
我建议您最好的选择是查看正在创建新模式的过程,并查看权限 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;