Amazon Redshift Grants - 即使用户已授予架构中的所有表,也无法访问新表

时间:2016-02-03 22:20:17

标签: amazon-redshift database-permissions

我在Amazon Redshift中有一个有趣的情况,我有一个用户X在schema public中的所有表上都有grant select,但是一旦创建了一个新表,这个授权似乎不适用于新的表。这是正常的行为吗?如果是,那么如何处理它以便维护模式级别授权。谢谢。

4 个答案:

答案 0 :(得分:11)

在Redshift表和视图中,不会自动继承其父架构的权限。您新创建的表只能由创建它们的用户和超级用户访问。

在最近的Redshift补丁中,实现了一项授予默认权限的新功能,以解决此问题。

Alter Default Privileges

以下代码段仅为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>;