当项目用户具备查询MaxCompute项目中某些敏感数据权限,但又不希望用户看到完整的敏感数据信息时,可对查询结果进行数据动态脱敏。本文为您介绍如何开启MaxCompute的动态脱敏功能,并提供参考示例。
背景信息
MaxCompute本身不具备动态脱敏能力,依赖于DataWorks数据保护伞的数据脱敏功能。您需先开通DataWorks的数据保护伞服务,才可为目标MaxCompute项目开启动态脱敏功能。开启动态脱敏功能后,您可基于数据保护伞的数据识别规则,配置项目的脱敏规则(即对哪些敏感数据进行脱敏)。
新版MaxCompute底层脱敏功能如下:
在数据保护伞设置脱敏规则后,在MaxCompute的项目入口(例如,使用JDBC连接、使用云命令行(odpscmd)连接、使用本地客户端(odpscmd)连接)查询敏感数据时,脱敏规则也会生效。
若启用MaxCompute底层脱敏并设置相应脱敏规则,查询敏感数据时,会将MaxCompute底层脱敏作为生效规则。
该功能可以有效保护诸如手机号、身份证号、银行卡号、车牌号、IP地址等敏感信息。动态脱敏功能仅会对查询结果进行脱敏,不会影响底层存储的数据。
使用限制
仅DataWorks专业版及以上版本,才可使用此功能。DataWorks基础版暂时无法使用此功能,如您的DataWorks为基础版,请升级DataWorks为合适版本。详情请参见版本升级。
仅华北2(北京)、华东2(上海)、华东1(杭州)、西南1(成都)、华南1(深圳)、华北2(北京政务云)、华东2(上海金融云)、中国(香港)、新加坡、德国(法兰克福)、马来西亚(吉隆坡)、美国(硅谷)地域支持使用MaxCompute底层脱敏。
若启用MaxCompute底层脱敏并设置相应脱敏规则,则查询敏感数据时,会将MaxCompute底层脱敏作为生效规则;若未启用MaxCompute底层脱敏或未配置相应脱敏规则,则查询敏感数据时,会将已配置的上层脱敏场景规则作为生效规则。
MaxCompute底层脱敏不支持对MaxCompute数据表的主键字段进行脱敏。
仅当MaxCompute项目中已存在数据并且数据创建超过24小时,才能使用此功能。
准备工作
准备待脱敏的MaxCompute项目和数据。具体操作,请参见创建MaxCompute项目和导入数据。
访问数据保护伞服务并开通。具体操作,请参见进入数据保护伞。
在服务声明页面,勾选我已阅读并接受以上协议条款,单击立刻开通。
开启数据脱敏功能
选择脱敏场景。
在左侧导航栏,单击规则配置 > 数据脱敏管理,进入数据脱敏管理。
在脱敏场景区域选择。
说明如果需要在DataWorks界面上展示脱敏效果,需要打开数据开发/数据地图展示脱敏。创建数据脱敏场景更多内容请参见创建数据脱敏场景。
(可选)白名单配置。
若脱敏规则指定的数据不需要对某些用户进行脱敏展示,您可配置脱敏规则白名单。
在数据脱敏管理页面,单击白名单配置。
单击右上方的+白名单。
在新建白名单对话框,选择敏感字段类型、用户组范围和生效时间。
说明设置白名单生效时间后,若不在白名单脱敏时间的区间内,用户在查询该敏感信息时将会继续脱敏。
项目空间配置。
单击MaxCompute引擎层脱敏_新,展示MaxCompute引擎层脱敏的所有MaxCompute项目空间。
单击目标项目空间的状态开关,即可使该项目空间的MaxCompute底层脱敏规则生效。
说明若启用MaxCompute底层脱敏并设置相应脱敏规则,则查询敏感数据时,会将MaxCompute底层脱敏作为生效规则;若未启用MaxCompute底层脱敏或未配置相应脱敏规则,则查询敏感数据时,会将已配置的上层脱敏场景规则作为生效规则。
查询数据并确认脱敏结果
本文示例在odpscmd
界面通过SQL语句查询数据并确认脱敏结果。
配置访问域名。
执行具体查询SQL前,请先在
odpscmd
服务的Config配置文件中配置访问域名。不同地域的域名配置,具体如下。
上海 set odps.internet.access.list=dsg-cn-shanghai.data.aliyun.com:80,dsg-cn-shanghai.data.aliyun.com:443,dsg-oss-dic-ori.oss-cn-shanghai.aliyuncs.com:80,dsg-cn-shanghai.data.aliyun.com:443; 杭州 set odps.internet.access.list=dsg-cn-hangzhou.data.aliyun.com:80,dsg-cn-hangzhou.data.aliyun.com:443,dsg-oss-dic-ori-hz.oss-cn-hangzhou.aliyuncs.com:80,dsg-oss-dic-ori-hz.oss-cn-hangzhou.aliyuncs.com:443; 北京 set odps.internet.access.list=dsg-cn-beijing.data.aliyun.com:80,dsg-cn-beijing.data.aliyun.com:443,dsg-oss-dic-ori.oss-cn-beijing.aliyuncs.com:80,dsg-oss-dic-ori.oss-cn-beijing.aliyuncs.com:443; 成都 set odps.internet.access.list=dsg-cn-chengdu.data.aliyun.com:80,dsg-cn-chengdu.data.aliyun.com:443,dsg-oss-dic-ori-cd.oss-cn-chengdu.aliyuncs.com:80,dsg-oss-dic-ori-cd.oss-cn-chengdu.aliyuncs.com:443; 香港 set odps.internet.access.list=dsg-cn-hongkong.data.aliyun.com:80,dsg-cn-hongkong.data.aliyun.com:443,dsg-oss-hongkong.oss-cn-hongkong.aliyuncs.com:80,dsg-oss-hongkong.oss-cn-hongkong.aliyuncs.com:443;
主要参数说明如下。
命令
含义
odps.internet.access.list
表示运行执行函数时访问相关域名,用于查询数据保护伞的脱敏信息。
以杭州地域
SchemaName
为default
示例,配置文件代码如下:project_name=data_shield_hz # app access id and key are optional for individual users # app_access_id=<app_accessid> # app_access_key=<app_accesskey> access_id=客户aid access_key=客户ak # this endpoint is for office environment end_point=http://service.odps.aliyun.com/api # this url is for odpscmd update update_url=http://odps.alibaba-inc.com/official_downloads # download sql results by instance tunnel use_instance_tunnel=true # the max records when download sql results by instance tunnel instance_tunnel_max_record=10000 set odps.internet.access.list=dsg-cn-hangzhou.data.aliyun.com:80,dsg-cn-hangzhou.data.aliyun.com:443,dsg-oss-dic-ori-hz.oss-cn-hangzhou.aliyuncs.com:80,dsg-oss-dic-ori-hz.oss-cn-hangzhou.aliyuncs.com:443;
执行查询SQL。
执行具体查询SQL前,请先在当前会话中通过
set
命令调用脱敏服务,不同地域调用底层脱敏服务的命令如下。说明MaxCompute底层数据脱敏仅支持会话级别使用。
上海 set odps.output.field.formatter={"name":"aegis:<SchemaName>:masking_v2","param":["alias","index"]}; set odps.isolation.session.enable=true; 杭州 set odps.output.field.formatter={"name":"aegis_hz:<SchemaName>:masking_v2","param":["alias","index"]}; set odps.isolation.session.enable=true; 北京 set odps.output.field.formatter={"name":"aegis_bj:<SchemaName>:masking_v2","param":["alias","index"]}; set odps.isolation.session.enable=true; 成都 set odps.output.field.formatter={"name":"aegis_cd:<SchemaName>:masking_v2","param":["alias","index"]}; set odps.isolation.session.enable=true; 香港 set odps.output.field.formatter={"name":"aegis_hk:<SchemaName>:masking_v2","param":["alias","index"]}; set odps.isolation.session.enable=true;
主要参数说明如下。
命令
含义
odps.output.field.formatter
表示要调用ODPS的脱敏函数(此脱敏函数要求脱敏字段为String类型)。
aegis_hz:<SchemaName>masking_v2:表示函数名称(name)。
其中SchemaName是根据MaxCompute项目是否配置Schema三层模型,若已配置则需要配置对应的SchemaName。关于Schema的介绍详情,请参见Schema操作。
["alias","index"]:表示参数信息(默认参数)。
odps.isolation.session.enable
表示当前调用是会话级别。会话结束后,脱敏功能便会失效。
以杭州地域为例,完整实现MaxCompute底层数据脱敏脚本如下所示。
set odps.output.field.formatter={"name":"aegis_hz:default:masking_v2","param":["alias","index"]}; set odps.isolation.session.enable=true; select * from table;
查看脱敏结果。