Snowflake 标签和基于标签的掩码策略

Snowflake tags and tag based masking policies

提问人:Hazal 提问时间:1/3/2023 最后编辑:Hazal 更新时间:1/3/2023 访问量:460

问:

我一直在寻找一种方法来查询 Snowflake 标签及其所属内容,如架构、表、视图和列,以及应用的屏蔽策略。最简单的方法是从account_usage架构中查询它,如下所示。只有某些人分配了 account_admin 角色,因此我们不能使用此选项。

select * from snowflake.account_usage.tags
order by tag_name;

select * from snowflake.account_usage.tag_references
order by tag_name;

我一直在检查选项并从信息架构中查询它们,但我必须编写输入才能实现它,如下所示。

我会用

show tables 

然后使用下面列出的表格,但它不允许我在“DimCustomer”所在的位置编写变量。

select *
from table(information_schema.tag_references_all_columns('"DimCustomer"', 'table'))

对于政策;

select *
from table (information_schema.policy_references(
  POLICY_NAME  => 'CUST_KEY_MASK')
);

考虑到如果我不知道dim_customers具有标签,并且不知道该标签具有CUST_KEY_MASK策略,我将如何列出所有标记的对象并应用于屏蔽策略?

总结一下:

1-列出所有对象,表,视图

2-列出所有应用了标签的对象

3- 列出所有对象、其标签和应用的标签策略。

你能帮我解决这个问题吗?

非常感谢,

哈扎尔

标签: snowflake-cloud-data-platform data-masking

评论


答:

0赞 Lukasz Szozda 1/3/2023 #1

“最简单的方法是从account_usage模式中查询它,如下所示。只有一些人分配了account_admin角色,因此我们不能使用此选项。

可以将对数据共享和架构的访问权限授予其他角色。SNOWFLAKEACCOUNT_USAGE

为其他角色启用 Snowflake 数据库使用

默认情况下,SNOWFLAKE 数据库仅供 ACCOUNTADMIN 角色使用。

若要使其他角色能够访问数据库和架构以及查询视图,具有 ACCOUNTADMIN 角色的用户必须向所需角色授予以下数据共享权限: 导入的权限

USE ROLE ACCOUNTADMIN;
GRANT IMPORTED PRIVILEGES ON DATABASE snowflake TO ROLE SYSADMIN;
GRANT IMPORTED PRIVILEGES ON DATABASE snowflake TO ROLE customrole1;

如果需要更精细的权限分配,则:

ACCOUNT_USAGE架构 SNOWFLAKE 数据库角色

此外,您还可以使用 SNOWFLAKE 数据库角色向账户授予更精细的控制权。有关数据库角色的详细信息,请参阅数据库角色。

ACCOUNT_USAGE架构有四个定义的 SNOWFLAKE 数据库角色,每个角色都被授予对特定视图的 SELECT 特权。

按数据库角色ACCOUNT_USAGE视图

OBJECT_VIEWER、USAGE_VIEWER、GOVERNACE_VIEWER 和 SECURITY_VIEWER 角色具有 SELECT 权限,可以查询共享 SNOWFLAKE 数据库中的“帐户使用情况”视图。

“标记”视图可用于“角色”和“角色”OBJECT_VIEWERGOVERNANCE_VIEWER

USE SNOWFLAKE;

GRANT DATABASE ROLE GOVERNANCE_VIEWER TO ROLE SYSADMIN;
GRANT DATABASE ROLE GOVERNANCE_VIEWER TO ROLE CUSTOM_ROLE;

评论

1赞 Hazal 1/3/2023
非常感谢您的回答。我们不想授予帐户使用情况的访问权限的原因也是出于安全原因。我们可以只授予从 account_usage.tags 中进行选择的访问权限吗?
0赞 Lukasz Szozda 1/3/2023
@Hazal 您需要在已提供的数据库角色之间进行选择。无法在共享数据库上创建自己的 DATABASE ROLE “不允许在共享数据库'SNOWFLAKE'上创建database_role”,并且也无法向自定义角色授予个人权限:“不允许对导入的数据库授予个人权限。请改用'GRANT IMPORTED PRIVILEGES'。