【问题标题】:View Permissions In Amazon REdshift - underlying table is recreated and permissions to view is blocked在 Amazon REdshift 中查看权限 - 重新创建基础表并阻止查看权限
【发布时间】:2019-06-04 10:06:01
【问题描述】:

我的 Amazon Redshift 中有一个用户可以访问特定视图。 此视图背后的基础表每天在 ETL 过程中重新创建。当一天过去时,视图也会重新创建,因此,该视图的权限被“阻止”给该特定用户,我需要再次授予该权限。

这是格兰特声明的视图:

GRANT USAGE ON SCHEMA dwh TO monte_carlo_data_project;
GRANT SELECT ON dwh.v_dp_dim_account TO monte_carlo_data_project;

这是一个显示重新创建的视图的打印屏幕:

当用户尝试再次查询视图时(在视图重新创建后),他得到一个权限错误:

SQL 错误 [500310] [42501]:Amazon 无效操作:关系 v_dp_dim_account 的权限被拒绝;

只有当我再次运行GRANT SELECT 命令时,用户才会再次获得权限。

知道如何处理这个问题吗?

【问题讨论】:

    标签: sql amazon-web-services permissions amazon-redshift


    【解决方案1】:

    使用WITH NO SCHEMA BINDING 重新创建一次视图。

    这将允许您将表格与视图“分离”

    来自文档

    没有架构绑定 指定视图不绑定到底层数据库对象(例如表和用户定义的函数)的子句。因此,视图和它引用的对象之间没有依赖关系。即使引用的对象不存在,您也可以创建视图。因为没有依赖关系,所以可以删除或更改引用的对象而不影响视图

    更多信息

    https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_VIEW.html

    【讨论】:

    • 在实施 NO SCHEMA BINDING 之前,您需要考虑这样做的缺点。如果没有适当的模式绑定,就有可能以破坏视图的方式更改基础表,而在下次查询视图之前不会生成任何警告或错误。一些工具也无法查看没有架构绑定的视图的列信息。
    • 明白,我已经考虑过了——这是我可以使用的最佳解决方案。
    【解决方案2】:

    我最近遇到了这个问题,问题略有不同。

    我发现创建视图的用户还需要对基础表进行 SELECT 的权限

    【讨论】:

      猜你喜欢
      • 2015-02-12
      • 2014-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-08
      相关资源
      最近更新 更多