单一模式上的雪花授予选择

Posted

技术标签:

【中文标题】单一模式上的雪花授予选择【英文标题】:Snowflake Grant Select on single schema 【发布时间】:2019-10-30 09:18:17 【问题描述】:

数据库:my_db

架构:my_schema_1、my_schema_2

表格:

my_schema_1:table_a,table_b my_schema_2:table_c,table_d

我想为 my_schema_2 中的所有表授予选择权限。

use role securityadmin;
grant usage 
  on database my_db 
  to role dw_ro_role;

grant usage on schema my_db.my_schema_2
  to role dw_ro_role;

grant select
  on all tables in schema my_db.my_schema_2
  to role dw_ro_role;

但是,这将授予对数据库中所有模式的访问权限。 (我认为通过授权使用)事实上,如果我:

grant usage on my_db...
revoke select on all tables in my_schema_2

我仍然可以查询所有内容。

如果我撤销对数据库 my_db 的使用,我将无法查询任何内容。

my_db 的所有者是系统管理员。架构的所有者是 etl_tool_role。

如何允许从仅选择的架构中的表中进行选择?

【问题讨论】:

【参考方案1】:

您的赠款看起来不错,所以我想知道您是如何访问/测试它的。 或者role dw_ro_role 的实际授权可能比您在上面显示的要多。

如果您使用只有role dw_ro_role 且与默认角色相同的用户登录数据库,您应该只能访问schema my_db.my_schema_2

【讨论】:

我同意上面的答案。这些看起来不错,或者您正在使用不同的角色进行测试,或者该角色已经获得了更多的授权。唯一的附加评论是,您可能还需要考虑向架构中的未来表添加授权,因此您无需在创建新表时继续运行授权。 就像 Mike 说的那样检查你的 PUBLIC 角色或任何其他已经获得授权的角色。

以上是关于单一模式上的雪花授予选择的主要内容,如果未能解决你的问题,请参考以下文章

雪花数据共享 - 授予部分执行 |授予未执行

在雪花中,在授予对存储过程的“使用”访问权限时,我遇到了语法错误

在雪花上创建安全视图

Quicksight 数据集 - 无法查看雪花模式和表

雪花数据库中的公共模式

根据雪花中的条件选择列