当项目用户具备查询MaxCompute项目中的某些敏感数据的权限,但又不希望用户能看到完整的敏感数据信息时,可以对查询结果进行数据动态脱敏。本文为您介绍如何开启MaxCompute的动态脱敏功能,并提供参考示例。
背景信息
MaxCompute本身不具备动态脱敏的能力,依赖DataWorks数据保护伞服务的数据脱敏功能。您需要先开通DataWorks的数据保护伞服务,才可以为目标MaxCompute项目开启动态脱敏功能。
为MaxCompute项目开启动态脱敏功能后,您可以基于DataWorks预设的数据识别规则,配置项目的脱敏规则(对哪些敏感数据进行脱敏)。当您从MaxCompute各个访问入口查询数据时,查询结果会脱敏展示脱敏规则指定的敏感数据。该功能可以有效保护诸如手机号、身份证号、银行卡号、车牌号、IP地址等敏感信息。动态脱敏功能仅会对查询结果进行脱敏,不会影响底层存储的数据。
推荐您使用DataWorks预设的数据识别规则,如果需要自定义数据识别规则,请参见数据识别规则。
使用限制
- 仅华东2(上海)地域支持该功能。
仅DataWorks增值版本支持使用此功能,DataWorks基础版暂时无法使用此功能,如果您的DataWorks实例为基础版,请升级DataWorks版本。
操作流程
在MaxCompute项目中使用动态脱敏功能的操作流程如下:
步骤一:开通数据保护伞服务
- 登录DataWorks控制台。
- 在左侧导航栏,单击工作空间列表。
- 选择工作空间所在地域后,单击相应工作空间后的数据开发。
- 单击左上方的
图标,选择 。
- 单击立即体验,进入数据保护伞。说明
- 如果阿里云主账号已授权,直接进入数据保护伞的首页。
- 如果阿里云主账号未授权,进入数据保护伞的授权页面。
- 阿里云主账号在服务声明页面,勾选我已阅读并接受以上协议条款,单击立刻开通。重要 仅阿里云主账号可以进行授权,开通数据保护伞。
步骤二:为目标MaxCompute项目开启数据脱敏功能
- 添加待脱敏的MaxCompute项目。
- 新建数据脱敏规则。说明 创建脱敏规则时,推荐您选择识别规则定义方式为预定义的敏感字段类型。
- 可选:如果脱敏规则指定的数据不需要对某些用户进行脱敏展示,您可以配置脱敏规则白名单。
- 项目所有者(Project Owner)或项目管理员登录MaxCompute客户端,执行如下语句安装脱敏Package。
install package aegis.aegis_package;
您可以执行show packages;
命令查看已安装的脱敏包。示例如下。+-------------+------------+ | PackageName | CreateTime | +-------------+------------+ +---------------+--------------------+--------------------------+--------+ | PackageName | SourceProject | InstallTime | Status | +---------------+--------------------+--------------------------+--------+ | aegis_package | aegis | 2022-02-24T11:19:34+0800 | OK | +---------------+--------------------+--------------------------+--------+ | systables | information_schema | 2021-04-12T16:29:14+0800 | OK | +---------------+--------------------+--------------------------+--------+
步骤三:使用动态脱敏功能
您可以通过如下两种方式之一使用动态脱敏功能:
- Session级别。在运行的SQL语句前添加如下脱敏参数设置语句,与SQL语句一起提交,该SQL语句运行结果会脱敏展示。
set odps.output.field.formatter=aegis:masking_v1; set odps.isolation.session.enable=true;
- Project级别。使用如下语句设置项目级别的脱敏参数,设置完成后,该项目下所有SQL语句的运行结果都会脱敏展示。
setproject odps.output.field.formatter=aegis:masking_v1;
使用示例
MaxCompute项目开启脱敏功能后,您可以在MaxCompute各个访问入口,执行脱敏查询。 假设现已为MaxCompute项目A配置了IP类型字段脱敏规则,项目A中的表iptest数据如下。
+--------+-------------+
| name | ip |
+--------+-------------+
| a | 192.0.2.10 |
| b | 198.51.2.0 |
+--------+-------------+
您可以执行如下语句实现脱敏查询。
set odps.output.field.formatter=aegis:masking_v1;
set odps.isolation.session.enable=true;
select * from iptest;
返回结果如下。+--------+----------------+
| name | ip |
+--------+----------------+
| a | 192.0.***.* |
| b | 198.51.***.* |
+--------+----------------+