在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;
而且我注意到,每当我创建新表时,组成员都无法自动从表中查询。他们收到一个Permission Denied
错误。重新运行
GRANT SELECT ON ALL TABLES IN SCHEMA reports TO GROUP data_reader;
修复权限。
这只是 Redshift 的一个怪癖,还是我应该通过另一种方式定义我的数据库组?
此语句仅授予对已创建表的访问权限:
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;
现在,所有新创建的表都将授予组以供选择。
您提供的任何授权仅适用于现有表/视图。每当创建新表时,都需要向用户/组显式提供所需的权限。我的建议是可能在 DDL 文件中包含适当的授权语句。