有没有一种方法可以在 Snowflake 中的所有数据库和模式中创建可访问的屏蔽策略?

Is there a way to create a masking policy accessible across all databases and schemas in Snowflake?

我创建了一个可以跨不同模式和数据库应用的屏蔽策略。但是,除非我在每个数据库模式组合中重新创建屏蔽策略,否则它不会让我应用该策略。它会抛出 Masking policy 'DATABASE_NAME.SCHEMA_NAME.POLICY_NAME' does not exist or not authorized. 直到我使用所选的数据库和模式创建屏蔽策略。

@Kyle 你只需在单独的 DB/Schema 中定义你的屏蔽策略,你可以从任何其他 DBs/Schemas.

引用它

例如,您创建policy_db.policy_schema.email_mask,那么您可以在应用查询中使用绝对路径引用此策略。

alter table if exists user_info 
  modify column email set masking policy policy_db.policy_schema.email_mask;

该政策不必与您要申请的 table 所在的 DB/Schema 相同。