配置和执行数据脱敏

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

数据安全中心DSC(Data Security Center)支持静态脱敏和动态脱敏。静态脱敏通过创建脱敏任务,指定目标数据资产,并依据脱敏规则匹配目标敏感字段,采用脱敏算法(如遮盖、加密或替换等)对指定字段进行处理,最终将脱敏后的数据保存至用户选择的目标位置。而动态脱敏则是通过调用ExecDatamask接口,依照脱敏规则对JSON格式数据中指定字段进行数据脱敏处理。

选择脱敏方式

脱敏方式

支持脱敏的数据源

应用场景

操作方式

静态脱敏

  • RDS表、PolarDB-X表、MaxCompute表、PolarDB表、OceanBase表、ADB-MySQL表、ECS自建数据库表。

  • OSS Bucket中结构化TXT、CSV、XLSX和XLS格式文件。

  • 本地计算机保存的结构化TXT、CSV、XLSX和XLS格式文件。

需要将目标数据源与其他用户共享,但不能泄露某些敏感字段数据的业务场景。

使用静态脱敏方式,脱敏指定数据表或文件后,可将脱敏后数据另存到其他数据表或文件中,实现数据共享,且不会影响原始的数据。

在DSC控制台,通过新增脱敏任务,设置脱敏数据、脱敏规则、脱敏后数据保存的目的地、执行任务周期等。

动态脱敏

自行构造符合以下JSON格式的数据,其中dataHeaderList定义数据的列名,dataList定义脱敏的数据,dataHeaderList中列名顺序和dataList中数据顺序必须一一对应。ruleList用于匹配脱敏规则,详细说明,请参见ExecDatamask - 对数据进行动态脱敏

{
    "dataHeaderList": ["name", "age"],
    "dataList": [
        ["lily", 18],
        ["lucy", 17]
    ],
    "ruleList": [1002, null]
}

脱敏方式更加灵活,可由您自行构造待脱敏的数据源。

通过OpenAPI在线调试、阿里云SDK或自定义封装API的调用方式,调用接口ExecDatamask - 对数据进行动态脱敏进行开发与部署。

具体内容,请参见集成概览

脱敏结果示例

DSC提供的脱敏算法包含哈希脱敏、遮盖脱敏、替换脱敏、变换脱敏、加密脱敏和洗牌脱敏。不同脱敏算法脱敏后示例如下。

哈希脱敏

适用类型和典型场景

算法描述

算法配置示例

脱敏前数据示例

脱敏结果示例

不可逆算法。

支持常见的哈希算法,并支持偏移量(加盐值)配置。

适用于密码或需要通过对比进行敏感数据确认的场景。

  • 敏感类型:密钥类。

  • 适用场景:数据存储。

MD5

加盐值为测试

123456

d6f82c64df3dc34921d79e5f22e5d43a

SHA-1

59056c7c6faa5eeb7151d30a01c17b25f35b021c

SHA-256

84ca63076a5966e9b726490c8b6a5c9c6d6bdc018bb0a05df754c0c2770aca72

HMAC

ed029027322fedb0ac40b7759ac1521f0121cb018cf0f6f078e61764d810e00f

遮盖脱敏

适用类型和典型场景

算法描述

算法配置示例

脱敏前数据示例

脱敏结果示例

不可逆算法。

通过使用特殊字符星号(*)或者井号(#),对部分文字进行遮盖实现敏感数据的脱敏。

适用于前端展示或敏感数据分享的场景。

  • 敏感类型:个人敏感。

  • 适用场景:

    • 数据使用。

    • 数据分享。

保留前n后m

遮盖字符为*,n=1、m=1

123456

1****6

保留自x至y

遮盖字符为*,x=3、y=4

**34**

遮盖前n后m

遮盖字符为*,n=2、m=2

**34**

遮盖自x至y

遮盖字符为*,x=2、y=5

1****6

特殊字符(@&.)前遮盖(针对首次出现该字符)

&

1@34&6

****&6

特殊字符((@&.))后遮盖(针对首次出现该字符)

@

1@****

替换脱敏

待脱敏数据会根据算法描述对应算法配置的随机码表完成数据脱敏,每次脱敏结果都不同。例如,手机号随机替换,脱敏“13900001234”的结果可能为“13271561461”、“18355370496”、“18856540773”等。

适用类型和典型场景

算法描述

算法配置

部分可逆算法。

使用替换码表进行映射替换(可逆),或使用随机区间进行随机替换(不可逆),实现字段整体或者部分内容的脱敏。

系统预置多套码表可供选择,并支持用户自定义替换算法。

适用于证件号等构成规则固定的字段脱敏。

  • 敏感类型:

    • 个人敏感。

    • 企业敏感。

    • 设备敏感。

  • 适用场景:

    • 数据存储。

    • 数据分享。

身份证映射替换

行政区划随机码表

身份证随机替换

行政区划随机码表

军官证随机替换

行政区划随机码表

护照随机替换

用途字段随机码

港澳通行证随机替换

用途字段随机码

银行卡随机替换

Bin码随机码表

座机号码随机替换

行政区划随机码表

手机号随机替换

网号

统一信用码随机替换

登记部门随机码表、类别码随机码表、行政区划随机码表

通用保格映射替换

大写字母映射码 、小写字母映射码、数字映射码、特殊映射码

通用保格随机替换

大写字母随机码 、小写字母随机码、数字随机码 、特殊随机码

变换脱敏

适用类型和典型场景

算法描述

算法配置示例

脱敏前数据示例

脱敏结果示例

部分可逆算法。

提供对数字或日期等进行取整操作(不可逆)和对文字进行位移操作(可逆)两类变换脱敏算法。

适用于对敏感数据集进行分析和统计类场景。

  • 敏感类型:通用敏感。

  • 适用场景:

    • 数据存储。

    • 数据使用。

数字取整:

保留小数点前第N位。N的取值范围:1~19。

N=4

12345.6789

12000

日期取整:日期取整保留到年、月、日、小时或分钟。

小时

2023-04-15 14:30:45

2023-04-15 14:00:00

字符位移:整体循环位移Bit数、向左或向右。

向左位移3 Bit数

test

ttes

加密脱敏

适用类型和典型场景

算法描述

算法配置示例

脱敏前数据示例

脱敏结果示例

可逆算法。

支持常见的对称加密算法。

适用于对需要回源的字段进行加密的场景。

  • 敏感类型:

    • 个人敏感。

    • 企业敏感。

  • 适用场景:数据存储。

DES算法

加密密钥:121212

123456

c2TwheTI+rw=

3DES算法

加密密钥:1231232131123123

XUwzslGadsk=

AES算法

加密密钥:123131

YueDcm92UuqvKpVbeS+0Ng==

洗牌脱敏

适用类型和典型场景

算法描述

算法配置

不可逆算法。

在源数据表抽取数据并确认数值范围后,对该字段(在范围内)进行列级别的打散重排和随机选择,实现混淆脱敏。

适用于结构化数据列级别的数据脱敏场景。

  • 敏感类型:

    • 设备敏感。

    • 位置敏感。

  • 适用场景:数据存储。

随机洗牌

  • 打散重排

  • 随机选择

例如对一组设备所属的城市信息打散重排:

脱敏前的数据

脱敏后的数据

设备ID

城市

设备ID

城市

D001

上海

D001

西安

D002

杭州

D002

上海

D003

西安

D003

成都

D004

成都

D004

杭州

计费说明

目前,仅企业版DSC实例支持使用数据脱敏功能。购买企业版实例后,即可使用数据脱敏功能。DSC采用包年包月模式计费,详细说明,请参见计费概述。使用静态脱敏时可能会包含额外计费。

脱敏方式

数据源

DSC侧计费

额外计费

静态脱敏

  • RDS表、PolarDB-X表、MaxCompute表、PolarDB表、OceanBase表、ADB-MySQL表、ECS自建数据库表。

  • OSS Bucket中结构化TXT、CSV、XLSX和XLS格式文件。

待脱敏数据资产需要授权接入DSC,会抵扣购买的数据库防护实例数存储防护容量

如果您需要脱敏的云产品使用的是按量付费的方式,对应云产品会按照访问或写入数据量收取相应的费用。

本地计算机保存的结构化TXT、CSV、XLSX和XLS格式文件。

目前不抵扣实例的资源。

不额外收费。

动态脱敏

自行构造的数据。

目前不抵扣实例的资源。

不额外收费。

开通服务

  • 如果您当前账号未开通过DSC服务或仅开通免费版服务,您可以先开通7天免费试用的企业版实例或直接购买企业版DSC实例。具体内容,请参见开通7天免费试用购买数据安全中心

  • 如果您已开通DSC免费版服务但不是企业版实例,您需要升级版本才能使用数据脱敏功能。升级操作,请参见包年包月实例变配

重要

如果使用静态脱敏,相关数据资产需要先授权接入DSC,您需要确保已购买足够可用的数据库防护实例数和OSS防护量。

静态脱敏

功能说明

创建静态脱敏任务时,可以选择已配置脱敏模板作为任务的脱敏规则,也可以直接设置目标敏感字段脱敏算法作为任务的脱敏规则。脱敏模板配置,请参见配置脱敏模板和算法

image

前提条件

如果使用静态脱敏方式脱敏数据库或OSS文件,需要已完成DSC授权和接入待脱敏数据资产。具体操作,请参见:

重要

如果需要将脱敏后数据存储到RDS表、PolarDB-X表、MaxCompute表、PolarDB表、OceanBase表、ADB-MySQL表、自建数据库表或OSS Bucket中,DSC必须授权接入目标数据资产,且使用具有读写权限的账号连接目标数据资产。对于RDS、PolarDB-X、PolarDB、OceanBase或ADB-MySQL数据库,需要选择账密连接方式接入DSC。

新增脱敏任务

警告

如果您在生产环境中直接对数据进行脱敏,数据库的性能可能会有所下降。

通过新增脱敏任务,指定数据脱敏的范围和规则。

  1. 登录数据安全中心控制台

  2. 在左侧导航栏,选择风险治理 > 数据脱敏

  3. 静态脱敏页签的任务配置页签,单击新增脱敏任务

  4. 根据页面导航,完成数据脱敏任务配置。

    1. 填写任务基本信息,并单击下一步

      说明

      任务名称输入不受限制。

    2. 配置脱敏数据的来源文件信息,并单击下一步

      RDS表/PolarDB-X表/MaxCompute表/PolarDB表/OceanBase表/ADB-MySQL表/自建数据库表

      脱敏源配置项

      是否必填

      配置描述

      数据存储类型

      选择脱敏文件的数据存储类型为RDS表/PolarDB-X表/MaxCompute表/PolarDB表/OceanBase表/ADB-MySQL表/自建数据库表

      源产品

      选择包含脱敏数据的文件来源的产品名称。支持选择的产品包括:RDSPolarDB-XOceanBaseMaxComputeADB-MySQLPolarDB自建数据库

      源数据库/项目名

      选择包含脱敏数据的表所在的项目名称。

      源表名

      选择脱敏数据所在的数据表名称。

      源分区

      源产品选择MaxCompute时,可配置源分区

      输入需要脱敏的数据在数据表中的分区名称。不填写则代表会对整个表中的敏感数据进行脱敏。

      分区是在创建MaxCompute数据表时指定的分区空间,用于限定不同区域数据,方便快速和高效地对指定内容进行查询。更多信息,请参见分区

      抽样SQL

      源产品选择RDSPolarDB-XOceanBase自建数据库时,可配置抽样SQL

      输入SQL语句配置脱敏数据的范围。不填写则进行全表脱敏。

      OSS文件

      重要

      仅支持脱敏结构化TXT、CSV、XLSX和XLS格式的文件。

      脱敏源配置项

      是否必填

      配置描述

      数据存储类型

      选择脱敏文件的数据存储类型为OSS文件

      文件源

      选择OSS文件的来源,支持本地上传OSS Bucket

      上传文件

      文件源本地上传时,单击选择本地文件,上传需要脱敏的文件。

      源文件所在OSS Bucket

      文件源OSS Bucket时,在下拉列表中选择源文件所在的OSS Bucket。您也可以输入关键字进行搜索并选择源文件所在的OSS Bucket。

      源文件名称

      文件源OSS Bucket时,输入源文件的名称。源文件名称必须包含格式后缀。

      • 单个文件脱敏:输入指定源文件名称。例如,test.csv

      • 批量文件脱敏:开启通配功能(单击右侧的开启通配开关)。系统采用同一规则脱敏目标文件,多个文件的格式必须相同,且具有相同的列结构。

        您可以使用星号(*)的方式指定一批源文件进行批量脱敏。目前仅支持对文件名前缀进行匹配,例如,test*.xls,匹配以test开头的XLS格式文件。

      源文件描述

      文件源本地上传时,可输入对OSS源文件的描述。

      分隔符选择

      对于CSVTXT类型的文件,必须指定列分隔符,请根据源文件的分隔符类型进行选择。支持选择以下类型的分隔符:

      • 分号“;”(macOS、Linux默认)

      • 逗号“,”(Windows默认)

      • 运算符“|”

      表格包含标题行

      根据源文件是否包含标题行进行选择。

    3. 选择以下方式配置脱敏算法,然后单击下一步

      image

      • 在数据列表上方选择已配置的脱敏模板,源字段列表会按照脱敏模板配置,自动开启对应字段的脱敏开关并设置算法选择

        脱敏模板中规则列表内容必须与脱敏源数据的源字段匹配,否则脱敏模板不生效。脱敏模板配置,请参见配置脱敏模板和算法

      • 直接在源字段列表中,定位到需要脱敏的源字段,开启脱敏开关并设置算法选择

      单击脱敏算法后的参数查看修改,可查看和编辑已选择算法的规则。算法规则中分区写法,可参考分区写法参考表

      说明

      如果开启强制启用模板,不支持在当前页面修改算法参数。您需要修改对应模板规则。

      分区写法参考表

      分区类型

      分区写法

      分区示例

      后N周

      自定义分区字段名称=$[yyyymmdd+7*N]

      time=$[20190710+7*1],表示对2019年7月10日后一周的数据进行脱敏。

      前N周

      自定义分区字段名称=$[yyyymmdd-7*N]

      time=$[20190710-7*3],表示对2019年7月10日前的3周时间内的数据进行脱敏。

      后N天

      自定义分区字段名称=$[yyyymmdd+N]

      time=$[20190710+2],表示对2019年7月10日后的2天内的数据进行脱敏。

      前N天

      自定义分区字段名称=$[yyyymmdd-N]

      time=$[20190710-5],表示对2019年7月10日前的5天内的数据进行脱敏。

      后N小时

      自定义分区字段名称=$[hh24mi:ss+N/24]

      time=$[0924mi:ss+2/24],表示对9点以后的2小时的数据进行脱敏。

      前N小时

      自定义分区字段名称=$[hh24mi:ss-N/24]

      time=$[0924mi:ss-1/24],表示对9点前的1个小时内的数据进行脱敏。

      后N分钟

      自定义分区字段名称=$[hh24mi:ss+N/24/60]

      time=$[0924mi:ss+2/24/60],表示对9点过后的2分钟内的数据进行脱敏。

      前N分钟

      自定义分区字段名称=$[hh24mi:ss-N/24/60]

      time=$[0924mi:ss-2/24/60],表示对9点的前2分钟内的数据进行脱敏。

  5. 设置脱敏后数据要存储的目标位置,然后单击测试,确认写入权限通过后,单击下一步

    重要

    对于选择的目标数据资产,DSC连接数据资产的账号必须具备写入权限。

    image

  6. 确认处理逻辑。

    目标位置配置项

    是否必填

    配置项描述

    触发方式选择

    触发方式表示执行脱敏任务的方式。支持以下方式 :

    • 仅人工:通过手动的方式启动脱敏任务。

    • 仅定时触发:通过设置的时间点定时自动执行脱敏任务,可选每小时、每天、每月、每周固定时间点自动触发任务。

    • 人工+定时触发:选择该方式,支持您手动单击启动来执行脱敏任务,和系统根据配置的定时时间自动执行脱敏任务(支持每小时、每天、每月、每周固定时间点自动触发任务)。

    开启增量脱敏

    您可根据需要选择是否开启增量脱敏。增量脱敏是指每次脱敏数据为上次脱敏任务完成后新增的数据的脱敏方式。您需要选择一个源数据中随着时间递增的字段作为增量列,例如创建时间、自增ID(数据库自带的自增列)等。

    重要

    当前仅有RDS数据支持增量脱敏。

    分片字段

    DSC执行静态脱敏时会对源数据进行字段分片,通过并发处理的方式提高脱敏效率。您可根据需要选择分片字段,支持选择多个分片字段。

    • 当前仅有RDS数据库支持增量脱敏,建议使用主键或者唯一索引作为分片字段。

    • 分片字段选择框内如果未选取任何字段,DSC将会默认使用主键作为分片字段,对源数据进行脱敏处理。

      重要

      如果您的源数据中没有主键,您必须选择分片字段,否则会导致脱敏任务失败。

    • 过多的分片字段会影响查询性能以及数据准确性,请谨慎选择。

    表名冲突解决方式

    表名称存在冲突的情况下处理的方式。可选项:

    • 删除目标表建立新同名表

    • 在目标表中增加新数据。建议选择该选项。

    行冲突解决方式

    表中的行内容存在冲突时的处理方式。可选项:

    • 保留目标表冲突行,丢弃新插入数据。建议选择该选项。

    • 删除目标表中的冲突行,新增插入数据

  7. 单击提交

执行和查看脱敏任务

如果脱敏任务触发方式是仅人工,必须手动启动脱敏任务。如果脱敏任务触发方式是仅定时触发,仅支持通过设置的时间点定时自动启动脱敏任务。如果脱敏任务触发方式是人工+定时触发,支持手动和自动启动脱敏任务。

  1. 静态脱敏页签的任务配置页签,单击新创建的脱敏任务操作列的启动,执行脱敏任务。

    image

  2. 静态脱敏页签,单击任务状态子页签,查看脱敏任务的执行进度和状态。

    image

脱敏任务执行失败排查

脱敏任务执行失败后,参考以下内容查看失败原因。

执行失败错误提示

错误原因

找不到脱敏任务,有可能是因为任务已经被删除或者关闭

脱敏任务可能被删除或被关闭(脱敏任务操作列下的开关为关闭状态)。

定时任务的调度周期设置有误

每日具体任务执行时间输入有误。

找不到脱敏源实例

脱敏源表所属实例不存在。

找不到脱敏目标实例

可能的原因有实例授权取消或目标实例删除等。

找不到脱敏源表

可能的原因有实例授权取消、源表删除等。

脱敏算法参数设置有误

算法参数填写错误。

源表列为空

源分区字段的列没有数据。

写入目标表失败

目标位置配置时写入目标表失败。

从源表查询失败

源表中未查询到该数据。

创建目标表失败

目标位置中可能不存在该表格。

找不到主键

RDS源表缺少主键。

任务配置的MaxCompute分区字段有误

创建脱敏任务时,在脱敏源配置项中填写的源分区或者目标位置配置项填写的目标分区有误。

修改、删除脱敏任务

等待执行或执行中的脱敏任务不支持修改或删除。

  • 修改脱敏任务

    需要调整脱敏任务的配置时,您可以单击目标脱敏任务操作列的修改,修改脱敏任务。

  • 删除脱敏任务

    重要

    脱敏任务删除后不支持恢复,建议您谨慎操作。

    不再需要指定脱敏任务时,您可以单击目标脱敏任务操作列的删除,并在提示对话框中单击确定

动态脱敏

功能说明

动态脱敏任务必须依赖已配置脱敏模板作为脱敏规则,对指定数据进行脱敏。您可以调用ExecDatamask接口,传入待脱敏数据(Data)和脱敏模板ID(TemplateId),然后按照脱敏模板匹配方式字段名称敏感类型,对DatadataList的数据进行脱敏。

您可以在数据安全中心控制台的风险治理 > 数据脱敏页面的脱敏配置页签,获取脱敏模板ID。支持使用自定义脱敏模板,具体操作,请参见配置脱敏模板

调用ExecDatamask接口实现数据脱敏的脱敏模板中脱敏方式说明:

匹配方式

脱敏说明

字段名称

根据dataHeaderList中列名,匹配脱敏模板规则列表的字段名称及对应算法,对dataList中对应列的数据进行脱敏。

敏感类型

根据ruleList中敏感类型的规则ID,匹配脱敏模板规则列表下规则的标识ID,按照规则中字段名称及对应算法,对dataList中对应列的数据进行脱敏。

敏感类型的规则列表中字段可选范围为数据洞察中识别特征页面中的数据特征,包含内置和自定义的识别特征。该特征名称也作为规则列表规则名称,您可以调用DescribeRules接口,传入CustomType(规则类型,即数据特征来源:内置或自定义)、Name(规则名称,即数据特征名称),查询到该规则的标识ID(Id)。

脱敏示例图:

image

使用限制

您调用ExecDatamask接口对指定数据进行动态脱敏时,每次脱敏的数据(Data)必须小于2 MB。

查看动态脱敏接口调用记录

  1. 登录数据安全中心控制台

  2. 在左侧导航栏,选择风险治理 > 数据脱敏

  3. 数据脱敏页面,单击动态脱敏页签。

  4. 动态脱敏页面,查看ExecDatamask接口的调用记录。

    说明

    如果您在调用接口时使用了相同的账号和IP地址,即使多次调用接口,操作记录只会保留一条,并记录累计调用次数

使用静态脱敏实现数据共享示例

使用静态脱敏对某账号下源OSS Bucket中的结构化CSV格式文件中的敏感数据进行脱敏,然后将脱敏后的文件保存到同账号下的目标OSS Bucket,分享目标OSS Bucket给指定用户,实现数据的安全共享。具体操作,请参见对OSS表格文件中的敏感数据进行脱敏