Amazon redshift Amazon红移授权-即使用户已授权架构中的所有表,也无法访问新表

Amazon redshift Amazon红移授权-即使用户已授权架构中的所有表,也无法访问新表,amazon-redshift,database-permissions,Amazon Redshift,Database Permissions,在AmazonRedshift中有一个有趣的情况,我有一个用户X,他对模式公共中的所有表都授予select权限,但是一旦创建了一个新表,这个权限似乎就不适用于新表。这是正常的行为吗?如果是,如何处理它,以保持模式级别的授权。谢谢。这是正常的行为。默认情况下,只有对象所有者/超级用户有权使用该对象 您可以将grant命令添加到create table语句中,并为用户授予所需的权限。在红移中,表和视图不会自动继承其父架构的权限。新创建的表只能由创建它们的用户和超级用户访问 在最近的一个红移补丁中,实

在AmazonRedshift中有一个有趣的情况,我有一个用户X,他对模式公共中的所有表都授予select权限,但是一旦创建了一个新表,这个权限似乎就不适用于新表。这是正常的行为吗?如果是,如何处理它,以保持模式级别的授权。谢谢。

这是正常的行为。默认情况下,只有对象所有者/超级用户有权使用该对象


您可以将grant命令添加到create table语句中,并为用户授予所需的权限。

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

在最近的一个红移补丁中,实现了一个授予默认特权的新功能,解决了这个问题

下面的代码段将仅向sales_admin组授予sales架构中所有未来表的select权限。如果希望将此应用于架构中的现有表,则需要将其与第二条grant语句结合使用

alter default privileges in schema sales grant select on tables to group sales_admin;

当我们第一次发现新表没有出现在我们的报告工具中时,我发现一个快速的解决方法是为受影响的组/用户重新执行以下SQL语句:

ALTER DEFAULT PRIVILEGES IN SCHEMA <SCHEMANAME> GRANT SELECT ON TABLES TO GROUP <USER/GROUPNAME>;

以超级用户主机的身份执行以下命令:

alter default privileges 
  for user staging_user 
  in schema staging 
  grant select on tables 
  to reporting_user;

将允许报告用户从模式暂存中暂存用户创建的所有未来表中选择数据。

似乎只有超级用户创建相关对象时,才会应用alter default权限;当具有创建权限的普通用户创建对象时,不会添加默认权限。有人看到了吗?我也看到了@JesseMacNett@JesseMacNett,文档没有很好地描述它是如何工作的,但是您必须将FOR USER子句添加到语句中,如果不添加,它将假定当前用户。因此,如果您有一个创建表的用户X,并且您运行ALTER DEFAULT PRIVITES。。。它假定您的意思是更改当前用户的默认权限,而不是更改用户的默认权限。。。,因此,只有当前用户创建的新表才会更改其默认权限。在文档中,它表示您更改了用户目标用户和架构目标用户的默认权限,或者同时更改了两者的默认权限,然后向用户或组授予或撤销SELECT或其他权限。令人困惑的是,target_用户不是授予或撤销的目标,而是表的所有者,通常是表的创建者。因此,您确实需要在模式sales grant select on tables to group sales_admin;…中运行类似于alter default PRIVITES for user table_owner的操作。。。@SteveS所说的这并不能回答这个问题。一旦你有足够的钱,你将能够;相反奇怪的是,我现在无法复制这篇文章,但如果我发现任何新的东西,我会把帖子贴出来@Micho-我之前无法发表评论,但现在我可以了,这是我当时唯一的选择,哇,让一个新女孩休息一下!谢谢你的解释。如果AWS能够提供一个特性来执行组的alter特权,那就太好了。i、 将模式中组的默认权限GRANT SELECT ALL表上的SELECT改为yes-您可以有一个用户列表:FOR user