在Snowflake中,如何正确授予对由另一个角色创建和编辑的数据库上的角色的读取访问权限?

时间:2020-07-30 06:52:46

标签: snowflake-cloud-data-platform

我已经设置了用户和角色访问权限,如下所示。我只包括了SYSADMIN树,其余的都是默认的。

enter image description here

问题描述::我正在尝试对其进行设置,以便DEV_ROLE可以将新数据写入DEV,而TABLEAU_ROLE应该能够从DEV读取数据。问题是当我在DEV中创建新表时(例如DEV.LUDWIG.DELIVERY_STOCK_ITEM)。从TABLEAU_ROLE中看不到该表。

我的角色设置。

  • 我使用SYSADMIN创建了仓库和数据库

  • 我使用SECURITYADMIN创建了角色,并使用SECURITYADMIN授予了访问权限

  • 授予TABLEAU_ROLE的特权如下所示:

    在数据库DEV上的GRANT使用到角色TABLEAU_ROLE;

    在数据库DEV中所有模式上的GRANT用途到角色TABLEAU_ROLE;

    将来在数据库DEV中的模式上使用GRANT的作用是TABLEAU_ROLE;

    在数据库DEV中的所有表上进行GRANT选择,以达到TABLEAU_ROLE的作用;

    在数据库DEV中的未来表上进行GRANT选择以达到TABLEAU_ROLE的作用;

我很困惑,即使TABLEU_ROLE已被授予对DEV中所有当前和将来的表的访问权限,为什么TABLEAU_ROLE却看不到DEV中的DEV_ROLE创建的表。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

对不起。我发现了问题!

原来我创建的“表”不是“表”,而是“视图”,而且我从未授予“视图”任何特权

添加了以下两行,现在一切正常。

GRANT SELECT ON ALL VIEWS IN DATABASE DEV TO ROLE TABLEAU_ROLE;

GRANT SELECT ON FUTURE VIEWS IN DATABASE DEV TO ROLE TABLEAU_ROLE;