能否在Unity Catalog中实现基于标签的访问控制?附示例代码
Unity Catalog 基于标签的访问控制问题解答
1. 是否可以使用Unity Catalog实现基于标签的访问控制?
可以。Unity Catalog支持基于**数据分类标签(Data Classification Tags)**的访问控制,你可以给数据对象(表、列等)打上敏感度标签(比如PII),再基于这些标签配置权限规则,实现精细化的访问管控。
2. 能否按照示例代码在Unity Catalog中实现该功能?
你提供的示例代码语法和Unity Catalog的实际语法不匹配,Unity Catalog使用TAG关键字而非ATTRIBUTE,正确的实现步骤如下:
步骤1:创建PII标签
CREATE TAG pii;
步骤2:为目标列添加标签
ALTER TABLE CUSTOMER ALTER COLUMN CUSTOMER_CREDIT_CARD SET TAG pii = 'true';
步骤3:基于标签配置权限
Unity Catalog实现这类需求通常有两种方式:
方式一:使用列屏蔽规则隐藏PII列
先授予基础SELECT权限,再通过屏蔽规则限制敏感列的访问:
-- 授予对数据库的基础SELECT权限 GRANT SELECT ON DATABASE CUSTOMER TO NON_PII_ROLE; -- 创建屏蔽规则:当访问角色为NON_PII_ROLE时,返回NULL隐藏PII列 CREATE MASKING POLICY pii_masking WITH (col_name STRING) USING (CASE WHEN CURRENT_ROLE() = 'NON_PII_ROLE' THEN NULL ELSE col_name END); -- 将规则应用到所有带pii标签的列 APPLY MASKING POLICY pii_masking ON ALL COLUMNS IN DATABASE CUSTOMER WHERE TAG(pii) = 'true';
方式二:直接基于标签条件授予权限
如果需要仅允许访问不含PII标签的对象,可以用标签过滤条件:
GRANT SELECT ON DATABASE CUSTOMER TO NON_PII_ROLE WHERE NOT TAG(pii) = 'true';
注意:不同版本的Unity Catalog在标签权限语法上可能存在细微差异,需结合你使用的Databricks版本调整。
内容的提问来源于stack exchange,提问作者Rajib Deb
相关产品推荐
相关产品推荐

