【问题标题】:Minimum permission required to access Redshift External table访问 Redshift External 表所需的最低权限
【发布时间】:2020-03-03 15:02:42
【问题描述】:

根据 AWS 文档,

要运行 Redshift Spectrum 查询,您需要以下权限:

  • 架构的使用权限

  • 在当前数据库中创建临时表的权限

我有一个外部数据库、架构和在该架构中创建的表。 我创建了一个新的 Redshift 用户,我授予该用户对外部架构的“使用”权限:

grant usage on external_schema to new_user;

但我没有将 external_database 上的“临时”权限提供给我的 new_user。

此外,没有默认权限,因为我使用主用户检查了 PG_DEFAULT_ACL 并且其中没有行。

谁能告诉我为什么我可以查询外部表?

【问题讨论】:

  • 我认为这是说他们需要“当前数据库”的权限,这意味着 Redshift(不是外部数据库)。
  • 不,我不是这样......它是频谱数据库,其中元数据将被存储,因为他们网站上的这个示例授权声明建议:“在数据库频谱数据库上授予 temp 以组频谱用户;”。即使在你的情况下,'temp' 权限是否应该出现在 pg_default_Acl 结果中?

标签: amazon-redshift grant amazon-redshift-spectrum


【解决方案1】:

在 Amazon Redshift 中,数据库和架构是不同的概念。用户对象(Redshift 和外部)在 Schema 中创建,TEMP 对象在“temp”模式中创建并且在数据库级别可用。

在某些情况下,在应用 Spectrum 表和 Redshift 表之间的连接时,Redshift 需要创建临时表,这就是文档中提到它以避免用户出现任何故障/错误的原因。

documentation 是这样说的:

授予在指定数据库中创建临时表的权限。要运行 Amazon Redshift Spectrum 查询,数据库用户必须有权在数据库中创建临时表。

注意 默认情况下,用户通过其在 PUBLIC 组中的自动成员资格被授予创建临时表的权限。要删除任何用户创建临时表的权限,请撤消 PUBLIC 组的 TEMP 权限。然后将创建临时表的权限显式授予特定用户或用户组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-06
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    • 1970-01-01
    • 2020-05-03
    相关资源
    最近更新 更多