当项目用户具备查询MaxCompute项目中的某些敏感数据的权限,但又不希望用户能看到完整的敏感数据信息时,可以对查询结果进行数据动态脱敏。本文为您介绍如何开启MaxCompute的动态脱敏功能,并提供参考示例。

背景信息

MaxCompute本身不具备动态脱敏的能力,依赖DataWorks数据保护伞服务的数据脱敏功能。您需要先开通DataWorks的数据保护伞服务,才可以为目标MaxCompute项目开启动态脱敏功能。

为MaxCompute项目开启动态脱敏功能后,您可以基于DataWorks预设的数据识别规则,配置项目的脱敏规则(对哪些敏感数据进行脱敏)。当您从MaxCompute各个访问入口查询数据时,查询结果会脱敏展示脱敏规则指定的敏感数据。该功能可以有效保护诸如手机号、身份证号、银行卡号、车牌号、IP地址等敏感信息。动态脱敏功能仅会对查询结果进行脱敏,不会影响底层存储的数据。

推荐您使用DataWorks预设的数据识别规则,如果需要自定义数据识别规则,请参见数据识别规则

使用限制

  • 仅华东2(上海)地域支持该功能。
  • 仅DataWorks增值版本支持使用此功能,DataWorks基础版暂时无法使用此功能,如果您的DataWorks实例为基础版,请升级DataWorks版本。

操作流程

在MaxCompute项目中使用动态脱敏功能的操作流程如下:

  1. 步骤一:开通数据保护伞服务
  2. 步骤二:为目标MaxCompute项目开启数据脱敏功能
  3. 步骤三:使用动态脱敏功能

步骤一:开通数据保护伞服务

  1. 登录DataWorks控制台
  2. 在左侧导航栏,单击工作空间列表
  3. 选择工作空间所在地域后,单击相应工作空间后的数据开发
  4. 单击左上方的图标图标,选择全部产品 > 数据治理 > 数据保护伞
  5. 单击立即体验,进入数据保护伞。
    说明
    • 如果阿里云主账号已授权,直接进入数据保护伞的首页。
    • 如果阿里云主账号未授权,进入数据保护伞的授权页面。
  6. 阿里云主账号在服务声明页面,勾选我已阅读并接受以上协议条款,单击立刻开通
    授权页面
    重要 仅阿里云主账号可以进行授权,开通数据保护伞。

步骤二:为目标MaxCompute项目开启数据脱敏功能

  1. 添加待脱敏的MaxCompute项目。
    1. 登录数据保护伞控制台。
    2. 在左侧导航栏,选择规则配置 > 数据脱敏管理,进入数据脱敏管理
    3. 脱敏场景下拉列表选择MaxCompute底层脱敏(maxcompute_desense_code),并单击右侧选择脱敏project
    4. 授权账号脱敏对话框,从未脱敏project列表选择需要脱敏的项目显示在脱敏project列表中,选中我同意授权数据保护伞对以上项目进行MaxCompute底层脱敏,并单击确定
  2. 新建数据脱敏规则
    说明 创建脱敏规则时,推荐您选择识别规则定义方式预定义的敏感字段类型。
  3. 可选:如果脱敏规则指定的数据不需要对某些用户进行脱敏展示,您可以配置脱敏规则白名单。
    1. 数据脱敏管理界面,单击白名单配置管理页签。
    2. 白名单配置管理页签,单击右上方的新增白名单
    3. 新增白名单对话框中,选择规则用户组生效时间
      说明 设置白名单生效时间后,如果不在白名单脱敏时间的区间内,用户在查询该敏感信息时将会继续脱敏。
  4. 项目所有者(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.***.*   |
+--------+----------------+