数据脱敏

最近更新时间:2025-08-19 11:22:42

我的收藏

概述

数据湖计算 DLC 产品支持列级数据脱敏,您可以使用数据脱敏功能,为涉及敏感数据的列关联脱敏规则,并配置一系列针对不同用户组的脱敏算法,实现基于角色的精细化脱敏应用。例如,对于手机号数据,您可能希望向您的客服人员组授予完整访问权限、向您的分析人员组授予仅查看后4位的权限,而向您的财务人员组则使用显示为 NULL 的严格脱敏权限。

约束与限制

DLC 数据脱敏功能目前约束与限制如下。

支持的引擎类型

目前仅支持内核版本在2024年10月1日后的 Spark 标准引擎、SuperSQL Spark 作业引擎、SuperSQL SparkSQL 引擎。其中 SuperSQL SparkSQL 引擎脱敏为白名单功能,若需使用,请提交工单申请开通。关于 DLC 引擎类别,请参见 数据引擎介绍

生效范围

1. 数据脱敏功能仅对 DLC 普通用户会生效。关于 DLC 用户类型,请参见 DLC 权限概述
2. 完成脱敏策略标签配置后,约需要等1分钟左右生效时间。
3. 仅对默认数据目录 DataLakeCatalog 下的元数据生效。

特殊限制

1. 若使用 SuperSQL SparkSQL 引擎,脱敏策略不支持视图。
2. 需要用户/工作组配有对库表的 SELECT 权限,否则用户/工作组查询该表会显示报错。关于 DLC 权限类型,请参见 子账号权限管理

支持的脱敏方法

当前 DLC 支持以下的列值数据脱敏方法:

默认值

根据列的数据类型返回列的默认脱敏值。如果要隐藏列值但显示其数据类型,则可以考虑使用此规则。
支持的数据类型: STRING BINARY INT BIGINT DOUBLE FLOAT DECIMAL BOOLEAN TIMESTAMP DATE ARRAY
数据类型
默认脱敏值
STRING
""
BINARY
[]
INT
0
DECIMAL
0
BIGINT
0
FLOAT
0
DOUBLE
0
BOOLEAN
false
TIMESTAMP
1970-01-01 08:00:00
DATE
1970-01-01
ARRAY
[]

保留前四个字符

返回列值的前 4 个字符,将字符串的其余部分替换为 XXXXX。如果列值的长度等于或小于 4 个字符,则返回通过 SHA-256 哈希函数运行后该列的值。此规则只能用于使用 STRING 数据类型的列。
支持的数据类型: STRING
示例值
脱敏值
abcd@example.com
abcdxxxxxxxxxx
abc
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad

保留后四个字符

返回列值的后 4 个字符,将字符串的其余部分替换为 XXXXX。如果列值的长度等于或小于 4 个字符,则返回通过 SHA-256 哈希函数运行后该列的值。此规则只能用于使用 STRING 数据类型的列。
支持的数据类型: STRING
示例值
脱敏值
abcd@example.com
xxxxxxxxxx.com
abc
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad

哈希

返回通过 SHA-256 哈希函数运行后的列值。如果您希望最终用户能够在查询的 JOIN 操作中使用此列,则可以使用此规则。只能对 STRING 或 BYTES 数据类型的列使用此规则。
支持的数据类型: STRING BYTES
示例值
脱敏值
abcd@example.com
3f7768839b5bcba43f589cc3af54efaea18bceb1df8b05a7dffaec3e7b43b269

设为 NULL

无论列的数据类型,均返回 NULL 。如果要隐藏列值及其数据类型,则使用此规则。
支持的数据类型: 不限
示例值
脱敏值
abcd@example.com
NULL

日期脱敏

仅显示日期字符串的年份部分,并将月份和日期默认为01/01。只能对使用 DATE、 TIMESTAMP 数据类型的列使用此规则。
支持的数据类型: TIMESTAMP DATE
示例值
脱敏值
2015-03-05T09:32:05.359
2015-01-01 00:00:00

不脱敏

显示列值明文,不做任何脱敏处理。
支持的数据类型:不限

脱敏方法选择建议

您可根据以下建议,为列值灵活选择需要的脱敏方法:
脱敏方法
场景建议
默认值
希望隐藏列值,但有需要向用户显示其数据类型
保留前四个字符
希望隐藏列值明文,但显示部分字符用于信息确认。如用于客服人员向顾客确认电子邮箱的前4个字符
保留后四个字符
希望隐藏列值明文,但显示部分字符用于信息确认。如用于客服人员向顾客确认手机号的后4位
哈希
希望用户能够在查询的 JOIN 操作中使用此列,或做 GROUP BY 统计,则可以使用此规则
设为 NULL
如果要隐藏列值及其数据类型,则使用此规则
日期脱敏
用于仅显示年份,隐藏其余日期信息的场景,如出生年份确认
不脱敏
针对有需要使用明文的用户

数据脱敏工作流

您可以按照以下步骤配置 DLC 数据脱敏:

脱敏策略标签简介

脱敏策略标签指由用户自定义、用于关联到敏感数据列的标签,在一个脱敏策略标签中您可配置多个用户组的精细化脱敏方法。例如,设定一个命名为“手机号”的脱敏策略标签,并设定3个 DLC 工作组的脱敏方法如下:
脱敏策略标签名称:手机号脱敏
工作组脱敏方法配置:
工作组
脱敏方法
客服人员组
不脱敏
分析人员组
显示后4位
财务人员组
设为 NULL
效果:
将上述脱敏策略标签关联到例如 Phone_number1、Phone_number2 两个列后,属于客服人员组的 DLC 用户查询 Phone_number1、Phone_number2 将显示明文; 分析人员组的 DLC 用户查询得到如 *********4320的结果; 财务人员组 DLC 用户查询将显示NULL。

脱敏策略生效优先级

假设一个 DLC 用户被添加到多个工作组中,不同工作组被关联了不同脱敏方法,在这种情况下特定用户会存在多个脱敏策略。如用户存在多个脱敏方法冲突,系统会选择所属工作组中最高优先级的方法生效,工作组排序越靠上优先级越高
例如上方的脱敏策略标签,若张三同时属于分析人员组和财务人员组,则张三查询将显示如*********4320的结果。

步骤一:新建脱敏策略标签

创建脱敏策略标签

1. 进入 数据湖计算 DLC 控制台,选择元数据管理 > 数据脱敏,点击创建数据脱敏策略标签,在弹出的对话框新建脱敏策略标签:

2. 在配置脱敏方法中,勾选对应工作组添加到“已选择”对话框,并为每个工作组配置脱敏方法。
3. 配置完成后,可上下拖动工作组模块,对策略优先级进行从上到下排序。工作组越靠上优先级越高。若不拖动排序,则默认按照由上到下优先级生效。
4. 点击确定,完成创建。
注意:
1. DLC 数据脱敏功能,当前仅对已配置脱敏方法的用户组内的用户生效,对于未配置脱敏方法的用户组,或未添加到任何用户组的用户不会生效。
2. 如要对全部 DLC 用户生效,建议:
2.1 为所有用户组配置脱敏方法。
2.2 将所有 DLC 用户均添加到用户组。

步骤二:绑定标签到数据列

1. 进入 数据湖计算 DLC 控制台,选择元数据管理,选择数据目录中需要脱敏字段所在的数据表。
2. 找到需要脱敏的字段,或在右上角搜索框搜索字段名称,后在脱敏策略标签中点击

,在对话框选择需要绑定的脱敏策略标签。
3. 如果未找到适配的脱敏策略标签,可点击对话框的创建脱敏策略标签快速创建。

注意:
1. DLC 内置的各类脱敏方法有字段类型限制,如日期脱敏仅能被关联到 TIMESTAMP,DATE 数据类型的列,详情请参见 支持的脱敏方法
2. 一个字段仅可关联一个脱敏策略标签,脱敏策略标签可被复用到多个数据列。
生效时间:
完成脱敏策略标签配置并绑定列后,约需要等1分钟左右生效时间,期间用户查询可能仍会得到明文结果,稍后片刻即可。

步骤三:执行查询

将脱敏策略标签绑定到需脱敏的列后,若该列的数据类型支持此脱敏策略标签中的所有脱敏方法,则配置成功。相关用户在查询相关列数据时,将根据用户所在用户组的脱敏方法显示对应脱敏后的结果。以下用一个虚拟案例进一步展示 DLC 数据脱敏功能可实现的效果。

案例说明

假设 A 公司拥有一张敏感客户信息表 customer_list,详细字段如下:
手机号
客户等级
消费额
电子邮件
123456789
High
45,600
abc@example.com
234567891
Medium
15,000
bcd@example.com
345678912
Low
2,000
cde@example.com
456789123
Low
1,000
def@example.com
A 公司内部共有客服人员组、财务人员组和分析人员组3个用户组,目前希望手机号和电子邮件两个涉及用户 PII 信息的敏感字段,仅被客服人员组使用;消费额字段仅被财务人员使用,客户等级标签仅被财务人员使用,但分析人员可查看客户等级的哈希值,从而可进行客户分层的统计分析。
根据上述需求,可创建以下3个脱敏策略标签:
联系信息脱敏
(绑定到字段:手机号+电子邮件)
消费金额脱敏
(绑定到字段:消费额)
客户等级脱敏
(绑定到字段:客户等级)
客服人员组:不脱敏
财务人员组:NULL
分析人员组:NULL
客服人员组:NULL
财务人员组:不脱敏
分析人员组:NULL
客服人员组:NULL
财务人员组:不脱敏
分析人员组:哈希
假定脱敏标签按照上表与对应列绑定后:
1. 对仅存在于某一工作组的用户,运行 SELECT * FROM customer_list; 会产生以下结果:
客服人员组:此工作组已被授予联系信息不脱敏的规则。会返回以下结果:
手机号
客户等级
消费额
电子邮件
123456789
NULL
NULL
abc@example.com
234567891
NULL
NULL
bcd@example.com
345678912
NULL
NULL
cde@example.com
456789123
NULL
NULL
def@example.com
财务人员组:此工作组已被授予消费金额+客户等级不脱敏的规则。会返回以下结果:
手机号
客户等级
消费额
电子邮件
NULL
High
45,600
NULL
NULL
Medium
15,000
NULL
NULL
Low
2,000
NULL
NULL
Low
1,000
NULL
分析人员组:此工作组给予了客户等级哈希脱敏。会返回以下结果,虽然无法了解到真实客户等级,但通过哈希值仍然能进行统计分析:
手机号
客户等级
消费额
电子邮件
NULL
4fa3c0d004d0750fc7bf8631993bd7c668fd33f8d089e0103ad8ef3fc1d9f4bb
45,600
NULL
NULL
35d8f8d59e2630de970e35271547d087278074addd61ce31940da69d82d19929
15,000
NULL
NULL
49542bc83b9d59935686144f352b6acb2264992720d0dbe780be50b56b87fef7
2,000
NULL
NULL
49542bc83b9d59935686144f352b6acb2264992720d0dbe780be50b56b87fef7
1,000
NULL
2. 若某用户同时存在于客服人员组财务人员组,按照从上到下优先级生效脱敏规则,则该用户生效的脱敏规则如下:
联系信息脱敏
(绑定到字段:手机号+电子邮件)
消费金额脱敏
(绑定到字段:消费额)
客户等级脱敏
(绑定到字段:客户等级)
客服人员组:不脱敏
客服人员组:NULL
客服人员组:NULL
运行 SELECT * FROM customer_list; 会产生以下结果:
手机号
客户等级
消费金额
电子邮件
123456789
NULL
NULL
abc@example.com
234567891
NULL
NULL
bcd@example.com
345678912
NULL
NULL
cde@example.com
456789123
NULL
NULL
def@example.com