我在Amazon Redshift中有一个有趣的情况,我有一个用户X在schema public中的所有表上都有grant select,但是一旦创建了一个新表,这个授权似乎不适用于新的表。这是正常的行为吗?如果是,那么如何处理它以便维护模式级别授权。谢谢。
答案 0 :(得分:11)
在Redshift表和视图中,不会自动继承其父架构的权限。您新创建的表只能由创建它们的用户和超级用户访问。
在最近的Redshift补丁中,实现了一项授予默认权限的新功能,以解决此问题。
以下代码段仅为sales_admin组的销售架构中的所有未来表授予select权限。如果要将其应用于架构中的现有表,则需要将其与第二个grant语句组合使用。
alter default privileges in schema sales grant select on tables to group sales_admin;
答案 1 :(得分:7)
以超级用户(主)执行以下命令:
alter default privileges
for user staging_user
in schema staging
grant select on tables
to reporting_user;
将允许reporting_user从staging_user在架构登台中创建的所有未来表中选择数据。
答案 2 :(得分:0)
这是正常行为。默认情况下,只有对象所有者/超级用户才有权使用该对象。
http://docs.aws.amazon.com/redshift/latest/dg/r_Privileges.html
您可以将grant
命令添加到create table
语句中,并为用户授予所需的权限。
答案 3 :(得分:-1)
当我们第一次发现新表没有出现在我们的报告工具中时,我发现一个快速的解决方法是为受影响的组/用户重新执行以下SQL语句:
ALTER DEFAULT PRIVILEGES IN SCHEMA <SCHEMANAME> GRANT SELECT ON TABLES TO GROUP <USER/GROUPNAME>;