Redshift:新 table 但群组成员无法查询

Redshift : New table but Group members can't query

在 Redshift 中,我有一个 data_reader 数据库组定义如下

CREATE GROUP data_reader;
GRANT USAGE ON SCHEMA reports TO GROUP data_reader;
GRANT SELECT ON ALL TABLES IN SCHEMA reports TO GROUP data_reader;

而且我注意到,每当我创建一个新的 table 时,群组成员都无法自动从 table 查询。他们收到 Permission Denied 错误。再运行

GRANT SELECT ON ALL TABLES IN SCHEMA reports TO GROUP data_reader;

修复了权限。

这只是 Redshift 的一个怪癖,还是我应该用另一种方式来定义我的数据库组?

您提供的任何 GRANTS 仅适用于现有 tables/views。每当创建新的 table 时,您都需要明确向 users/groups 提供所需的权限。我的建议是可能在 DDL 文件中包含适当的授权声明。

此语句仅授予对已创建表的访问权限:

GRANT SELECT ON ALL TABLES IN SCHEMA reports TO GROUP data_reader;

为了默认授予访问权限,您必须设置默认权限:

GRANT USAGE ON SCHEMA reports TO group data_reader; --Most probably already granted
ALTER DEFAULT PRIVILEGES IN SCHEMA reports GRANT SELECT ON TABLES to group data_reader;

现在所有新创建的表都将被授予 select 组。