CREATE MASKING POLICY
ClickHouse Cloud only
创建一个掩码策略(masking policy),用于在特定用户或角色查询表时,对列值进行动态转换或掩盖。
提示
掩码策略通过在查询时转换敏感数据而不修改已存储的数据,从而实现列级数据安全。
语法:
UPDATE 子句
UPDATE 子句指定要对哪些列进行脱敏以及如何转换它们。可以在单个策略中脱敏多个列。
示例:
- 简单脱敏:
UPDATE email = '***masked***' - 部分脱敏:
UPDATE email = concat(substring(email, 1, 3), '***@***.***') - 基于哈希的脱敏:
UPDATE email = concat('masked_', substring(hex(cityHash64(email)), 1, 8)) - 多列脱敏:
UPDATE email = '***@***.***', phone = '***-***-****'
WHERE 子句
可选的 WHERE 子句允许基于行的取值进行条件脱敏。只有满足条件的行才会应用脱敏。
示例:
TO 子句
在 TO 子句中,指定该策略应应用到哪些用户和角色。
TO user1, user2:应用于特定用户/角色TO ALL:应用于所有用户TO ALL EXCEPT user1, user2:应用于除指定用户外的所有用户
注意
与行策略不同,掩码策略不会影响未被应用该策略的用户。如果某个用户没有任何适用的掩码策略,他们将看到原始数据。
PRIORITY 子句
当多个掩码策略应用于同一用户的同一列时,PRIORITY 子句决定它们的应用顺序。策略会按从最高优先级到最低优先级的顺序应用。
默认优先级为 0。具有相同优先级的策略会以不确定的顺序应用。
示例:
性能注意事项
- 掩码策略可能会因表达式的复杂度而影响查询性能
- 对于启用了掩码策略的表,某些优化可能会被禁用