
# 订阅动态脱敏策略
通过动态脱敏订阅，数据安全可以实现同步第三方平台的动态脱敏策略。
第三方平台的动态脱敏策略发布到Kafka消息队列后，数据安全进行订阅和消费。消息格式满足要求时，待消息消费成功后，数据安全会生成动态脱敏策略（策略名为Kafka消息中的策略名）并同步到MRS Ranger组件中生效。
图1动态脱敏订阅原理   
![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000001800240040.png)
值得注意的是，动态脱敏订阅为DataArts Studio实例级别配置，各工作空间之间数据互通，全局可见并生效。
 #### 前提条件
- 第三方平台的动态脱敏策略需要发布到Kafka消息队列，且消息格式满足要求，详见[参考：Kafka消息格式要求]。
- 已在管理中心创建MapReduce服务（MRS Kafka）类型的数据连接，请参考[创建DataArts Studio数据连接](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1299.html)。注意，Kafka应为第三方平台发布消息所在的Kafka，数据连接中的账户要具备kafkaadmin用户组的权限。
 
#### 约束与限制
- 仅DAYU Administrator、Tenant Administrator用户或者数据安全管理员可以创建、编辑、启动、停止或同步动态脱敏订阅任务，其他普通用户无权限操作。
- 动态脱敏订阅仅支持订阅第三方平台中MRS Hive类型的动态脱敏策略，且动态脱敏策略中支持的脱敏规则仅限于数据安全中已支持的规则（暂不支持"自定义/保留前x后y"和"自定义/掩盖前x后y"两个自定义规则），详见[表3](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1036.html#dataartsstudio_01_1036__zh-cn_topic_0000001678592057_table139309280483)。
- 通过订阅生成的动态脱敏策略名为Kafka消息中的策略名，由于数据安全不允许策略名重复，因此数据安全已有动态脱敏策略名需要避免与Kafka消息中的策略名重复。
- 订阅生成的动态脱敏策略名同步到Ranger后策略名为"dlsMasking-*库名* -*表名* -*列名*"，由于Ranger不允许策略名重复，因此Ranger已有策略名需要避免与新生成的策略命名重复。
- 动态脱敏订阅时，数据安全通过订阅任务中的"MRS集群"+Kafka消息动态脱敏策略中的"库表列"来标识一条动态脱敏策略。当消息队列或数据安全中已存在同集群同库表列的动态脱敏策略时，则跳过不再重复生成。
- MRS Hive数据源的"SM3"、"自定义/保留前x后y"和"自定义/掩盖前x后y"这几种脱敏规则非MRS Ranger组件提供，而是通过UDF自定义函数实现的算法。因此如果使用这几种脱敏规则之一，则会上传算法依赖的JAR包到MRS集群，并需要提前授予Ranger数据连接中账号的创建UDF权限以及所有用户的使用UDF权限，详见[参考：配置Ranger组件中的UDF相关权限](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1036.html#dataartsstudio_01_1036__section9772147131320)。
  
- 数据安全消费Kafka消息时，需要消息的格式满足要求，详见[参考：Kafka消息格式要求]。
  - Kafka消息不满足消息格式：则记录同步失败消息日志，继续消费下一条消息，最终状态为部分失败或者同步失败。
  
  - Kafka消息合法，但是由于网络资源等原因消费失败：触发Kafka重试机制，重试3次，间隔分别为4、6、9s，如果依然失败，则记录日志，终止此次调度。
  
  - Kafka消息合法，正常消费，但是生成策略或同步Ranger时失败：记录同步失败消息日志，继续消费下一条，最终状态为部分失败或者同步失败。
  
  - 失败的kafka消息最多存储16M数据。
   
 
#### 订阅动态脱敏策略
1. [登录DataArts Studio管理控制台](https://console.huaweicloud.com/dayu/)。
   
   详情请参考[访问DataArts Studio实例控制台](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0001.html)。
   
   
2. 在DataArts Studio控制台首页，选择对应工作空间的"数据安全"模块，进入数据安全页面。
3. 单击左侧导航树中的"隐私保护管理 \> 动态脱敏"，进入动态脱敏页面，然后切换到"动态脱敏订阅"页签。 
   图2进入动态脱敏订阅页签   
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002546768407.png "点击放大")
   
   
   
4. 单击"创建订阅"，弹出创建订阅窗口，参数配置参考[表1]。
   
   图3创建订阅参数配置   
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002515089574.png "点击放大")
   
   创建动态脱敏订阅任务参数配置说明：
    表1配置任务参数 
   | 参数名         | 参数说明                                                                                                                                                                  |
   |:---|:---|
   | **连接配置**                                                                                                                                                                           ||
   | \*选择集群      | 选择需要同步第三方平台动态脱敏策略的集群。 当前暂不支持同步策略到多个集群。如果希望通过多个订阅任务分别同步到多个集群，则会由于生成的策略名重复导致Kafka消息消费失败。                                       |
   | 集群类型        | 无需选择，自动根据选择的集群匹配集群类型。当前仅支持同步策略到MRS集群。                                                                                                                                 |
   | 数据连接        | 无需选择，自动根据选择的集群匹配数据连接。                                                                                                                                                 |
   | \*kafka数据连接 | 选择在[前提条件]中已创建的MRS Kafka类型数据连接。注意，Kafka应为第三方平台发布消息所在的Kafka，Kafka数据连接中的账户要具备kafkaadmin用户组的权限。 |
   | \*topic主题   | 选择第三方平台的动态脱敏策略发布Kafka消息的Topic主题。同一个MRS集群的一个Topic主题只能对应一个订阅任务。                                                                                                         |
   | **调度配置**                                                                                                                                                                           ||
   | 调度时间        | 选择每天调度生效的时间段。 建议根据消息量大小评估调度时间，目前消费一个数据加同步大约需要2秒。                                               |
   | 调度周期        | 选择按小时还是按分钟调度。                                                                                                                                                         |
   | 调度间隔        | 选择调度间隔时间。                                                                                                                                                             |
      
   
   
5. 单击"确定"，完成动态脱敏订阅任务的创建。动态脱敏策略创建完成后，需要单击"启动"，启动任务调度。
 
#### 相关操作
- 启动/停止订阅任务：在动态脱敏订阅页签，单击对应任务操作栏中的"启动"或"停止"，即可启动或停止该任务的调度。
- 编辑订阅任务：在动态脱敏订阅页签，单击对应任务操作栏中的"更多 \> 编辑"，即可编辑订阅任务。
- 删除订阅任务：在动态脱敏订阅页签，单击对应任务操作栏中的"更多 \> 删除"，即可删除订阅任务。当需要批量删除时，可以在勾选订阅任务后，在列表上方单击"批量删除"。
  ![](https://support.huaweicloud.com/usermanual-dataartsstudio/public_sys-resources/note_3.0-zh-cn.png)
  删除操作无法撤销，请谨慎操作。
  
- 同步订阅任务：在动态脱敏订阅页签，单击对应任务操作栏中的"更多 \> 同步"，即可立即发起一次任务运行，数据安全开始订阅消费、启动消费、生成策略并同步Ranger。
- 查看订阅任务详情：在动态脱敏订阅页签，找到需要查看的任务，单击对应任务操作栏中的"详情"即可查看任务详情。
  图4查看任务详情   
  ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000001847283533.png "点击放大")
  
  
 
 #### 参考：Kafka消息格式要求
第三方平台的动态脱敏策略需要发布到Kafka消息队列，且消息格式满足要求，消息模板及参数说明如下所示。
```
{ 
  "mask_policy_template": 
  {
      "create_time":1692839884000  //同步当前时间
      "name": "task1", //动态脱敏策略名，不能与当前已有动态脱敏策略名重复
      "database": "1", //数据库名
      "table": "1", //数据表名
      "column": "1", //字段名
      "column_type":"int", //字段类型
      "data_level": "1级", // 字段密级，非必填
      "algorithm_config": {
        "name": "MASK", //动态脱敏规则名称，支持范围为MASK、MASK_SHOW_LAST_4、MASK_SHOW_FIRST_4、MASK_HASH、MASK_DATE_SHOW_YEAR、MASK_NULL、SM3
        "type": "MASK", //动态脱敏规则类型，除SM3为HASH类型外，其他规则均为MASK类型
        "description": "掩盖英文字符和数字", //动态脱敏规则描述
      },
      "datasource_type":"HIVE", //数据源类型，当前仅支持Hive
      "users":"aaa,bbb",  //指定脱敏用户
      "user_groups":"ggg"  //指定脱敏用户组
      "description":{
           "jdbc_url": "hive2://xxx" //自定义描述，用于在失败消息中返回携带
      }  
   }
}
```
