更新时间:2024-10-18 GMT+08:00

订阅动态脱敏策略

通过动态脱敏订阅,数据安全可以实现同步第三方平台的动态脱敏策略。

第三方平台的动态脱敏策略发布到Kafka消息队列后,数据安全进行订阅和消费。消息格式满足要求时,待消息消费成功后,数据安全会生成动态脱敏策略(策略名为Kafka消息中的策略名)并同步到MRS Ranger组件中生效。

图1 动态脱敏订阅原理

值得注意的是,动态脱敏订阅为DataArts Studio实例级别配置,各工作空间之间数据互通,全局可见并生效。

前提条件

  • 第三方平台的动态脱敏策略需要发布到Kafka消息队列,且消息格式满足要求,详见参考:Kafka消息格式要求
  • 已在管理中心创建MapReduce服务(MRS Kafka)类型的数据连接,请参考创建DataArts Studio数据连接。注意,Kafka应为第三方平台发布消息所在的Kafka,数据连接中的账户要具备kafkaadmin用户组的权限。

约束与限制

  • DAYU Administrator、Tenant Administrator用户或者数据安全管理员可以创建、编辑、启动、停止或同步动态脱敏订阅任务,其他普通用户无权限操作。
  • 动态脱敏订阅仅支持订阅第三方平台中MRS Hive类型的动态脱敏策略,且动态脱敏策略中支持的脱敏规则仅限于数据安全中已支持的规则(暂不支持“自定义/保留前x后y”和“自定义/掩盖前x后y”两个自定义规则),详见表2
  • 通过订阅生成的动态脱敏策略名为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相关权限

  • 数据安全消费Kafka消息时,需要消息的格式满足要求,详见参考:Kafka消息格式要求
    • Kafka消息不满足消息格式:则记录同步失败消息日志,继续消费下一条消息,最终状态为部分失败或者同步失败。
    • Kafka消息合法,但是由于网络资源等原因消费失败:触发Kafka重试机制,重试3次,间隔分别为4、6、9s,如果依然失败,则记录日志,终止此次调度。
    • Kafka消息合法,正常消费,但是生成策略或同步Ranger时失败:记录同步失败消息日志,继续消费下一条,最终状态为部分失败或者同步失败。
    • 失败的kafka消息最多存储16M数据。

订阅动态脱敏策略

  1. DataArts Studio控制台首页,选择对应工作空间的“数据安全”模块,进入数据安全页面。
  2. 单击左侧导航树中的动态脱敏,进入动态脱敏页面,然后切换到“动态脱敏订阅”页签。

    图2 进入动态脱敏订阅页签

  3. 单击“创建订阅”,弹出创建订阅窗口,参数配置参考表1

    图3 创建订阅参数配置

    创建动态脱敏订阅任务参数配置说明:
    表1 配置任务参数

    参数名

    参数说明

    连接配置

    *选择集群

    选择需要同步第三方平台动态脱敏策略的集群。

    当前暂不支持同步策略到多个集群。如果希望通过多个订阅任务分别同步到多个集群,则会由于生成的策略名重复导致Kafka消息消费失败。

    集群类型

    无需选择,自动根据选择的集群匹配集群类型。当前仅支持同步策略到MRS集群。

    数据连接

    无需选择,自动根据选择的集群匹配数据连接。

    *kafka数据连接

    选择在前提条件中已创建的MRS Kafka类型数据连接。注意,Kafka应为第三方平台发布消息所在的Kafka,Kafka数据连接中的账户要具备kafkaadmin用户组的权限。

    *topic主题

    选择第三方平台的动态脱敏策略发布Kafka消息的Topic主题。同一个MRS集群的一个Topic主题只能对应一个订阅任务。

    调度配置

    调度时间

    选择每天调度生效的时间段。

    建议消息量大小评估调度时间,目前消费一个数据加同步大约需要2秒。

    调度周期

    选择按小时还是按分钟调度。

    调度间隔

    选择调度间隔时间。

  4. 单击“确定”,完成动态脱敏订阅任务的创建。动态脱敏策略创建完成后,需要手动单击“启动”,启动任务调度。

相关操作

  • 启动/停止订阅任务:在动态脱敏订阅页签,单击对应任务操作栏中的“启动”“停止”,即可启动或停止该任务的调度。
  • 编辑订阅任务:在动态脱敏订阅页签,单击对应任务操作栏中的“更多 > 编辑”,即可编辑订阅任务。
  • 删除订阅任务:在动态脱敏订阅页签,单击对应任务操作栏中的“更多 > 删除”,即可删除订阅任务。当需要批量删除时,可以在勾选订阅任务后,在列表上方单击“批量删除”。

    删除操作无法撤销,请谨慎操作。

  • 同步订阅任务:在动态脱敏订阅页签,单击对应任务操作栏中的“更多 > 同步”,即可立即发起一次任务运行,数据安全开始订阅消费、启动消费、生成策略并同步Ranger。
  • 查看订阅任务详情:在动态脱敏订阅页签,找到需要查看的任务,单击对应任务操作栏中的“详情”即可查看任务详情。
    图4 查看任务详情

参考: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": "SM3", //动态脱敏规则名称,支持范围为MASK、MASK_SHOW_LAST_4、MASK_SHOW_FIRST_4、MASK_HASH、MASK_DATE_SHOW_YEAR、MASK_NULL、SM3
        "type": "HASH", //动态脱敏规则类型,除SM3为HASH类型外,其他规则均为MASK类型
        "description": "SM3算法加密", //动态脱敏规则描述
      },
      "datasource_type":"HIVE", //数据源类型,当前仅支持Hive
      "users":"aaa,bbb",  //指定脱敏用户
      "user_groups":"ggg"  //指定脱敏用户
      "description":{
           "jdbc_url": "hive2://xxx" //自定义描述,用于在失败消息中返回携带
      }  
   }
}