数据脱敏(Data Masking)- 模块功能设计

数据脱敏(Data Masking)- 模块功能设计
脱敏算法管理模块
  • 算法类型取决于后台定制的算法类,表数据手动维护即可。
  • 算法列表展示
  • 算法维护-可根据程序提供的算法类型进行自定义算法。
  • 算法删除-删除算法时需同时删除引用该算法的配置表数据
数据脱敏管理模块
  • 设置:为某字段引用脱敏策略
  • 预览数据:系统通过对原始表设置的脱敏字段进行脱敏然后展示在页面中(默认只显示前15条数据)
定时任务配置
  1. 系统定时/手动根据脱敏策略将原始数据同步至脱敏库中。
  2. 脱敏策略开发
    • 获取需要数据脱敏配置的表信息
    • 校验表是否在公共库中存在
    • 同步公共库表至脱敏库中(检测需要脱敏的表在脱敏库中是否存在,不存在则同步表结构以及数据,存在则先删除原表在同步,这里也可以创建临时表,同步完成后在删除原表,修改临时表名为原表名)
    • 系统通过对原始数据进行脱敏然后批量修改脱敏数据库中的数据
    • 日志记录
2021-11-25 14:05:01 - ######################数据脱敏开始#########################
2021-11-25 14:05:01 - 初始化公共库[xxx]表脱敏策略信息
2021-11-25 14:05:12 - 校验[xxx]表是否存在
2021-11-25 14:05:12 - 同步[xxx]表至脱敏数据库
2021-11-25 14:05:12 - 获取[xxx]表标记的脱敏字段 1 个
2021-11-25 14:05:14 - [xxx]字段脱敏数据开始,脱敏策略:[名字仿真]
2021-11-25 14:05:34 - [xxx]字段脱敏数据完成,脱敏结果:系统共脱敏了 3 条数据至脱敏数据库,忽略[空]数据 0 条。
2021-11-25 14:05:34 - 初始化公共库[GGSJP_USER]表脱敏策略信息
2021-11-25 14:05:38 - 校验[GGSJP_USER]表是否存在
2021-11-25 14:05:42 - 同步[GGSJP_USER]表至脱敏数据库
2021-11-25 14:05:46 - 获取[GGSJP_USER]表标记的脱敏字段 2 个
2021-11-25 14:05:46 - [ID]字段脱敏数据开始,脱敏策略:[字符串脱敏]
2021-11-25 14:05:56 - [ID]字段脱敏数据完成,脱敏结果:系统共脱敏了 63 条数据至脱敏数据库,忽略[空]数据 0 条。
2021-11-25 14:05:56 - [NAME]字段脱敏数据开始,脱敏策略:[姓名脱敏]
2021-11-25 14:06:14 - [NAME]字段脱敏数据完成,脱敏结果:系统共脱敏了 61 条数据至脱敏数据库,忽略[空]数据 2 条。
2021-11-25 14:06:14 - 初始化公共库[GGSJPT_DEP]表脱敏策略信息
2021-11-25 14:06:18 - 校验[GGSJPT_DEP]表是否存在
2021-11-25 14:06:22 - [error]同步[GGSJPT_DEP]表至脱敏数据库失败,异常信息[java.lang.IllegalArgumentException: Invalid row number]
2021-11-25 14:06:22 - 操作完成:系统共处理了2/3张表、3/3个字段、542/1256 条数据,总耗时 210(秒/分钟)。
2021-11-25 14:06:23 - ######################数据脱敏结束#########################

  1. 日志记录
脱敏数据查询
  • 检测脱敏库表是否存在
  • 系统根据查询的sql自动解析、改写sql中表名(原始库+脱敏库相结合)。最终将脱敏数据呈现给客户端。
例如:
select GU.NAME, GD.ID, GD.DEPNAME from GGSJP_USER GU,GGSJPT_DEP GD WHERE GU.DEPID = GD.ID 
改写后↓ (可使用 JSqlParser 插件进行解析)
select GU.NAME, GD.ID, GD.DEPNAME from 脱敏数据库.GGSJP_USER GU,GGSJPT_DEP GD WHERE GU.DEPID = GD.ID 
数据库设计
  • 表名前缀:DM_*

  • DM_ALGORITHM(脱敏算法表)

  • id 主键ID
    name 算法名称
    desc  算法描述
    algorithmTypeID 算法类型ID
    ruleType 规则类型
    ruleDef 规则定义
    createPersonID 创建人
    createTime 创建时间
    lastModifyPersonID 最后修改人
    lastModifyTime 最后修改时间
    
  • DM_ALGORITHM_TYPE(脱敏算法类型表)

  • id 算法类型ID
    name 算法类型名称
    classPath  算法类型定义类 com.data.mask.app.common.StringAlgorithm, com.data.mask.common.DateAlgorithm, com.data.mask.common.NumberAlgorithm
    state 状态(启用、禁用)
    createPersonID 创建人
    createTime 创建时间
    lastModifyPersonID 最后修改人
    lastModifyTime 最后修改时间
    
  • DM_ALGORITHM_CONFIG(脱敏算法配置表)

  • id 主键ID
    algorithmID 算法ID
    tableName 表名
    attrNumber 字段号
    attrName 字段名称
    attrLable 字段标签
    createPersonID 创建人
    createTime 创建时间
    lastModifyPersonID 最后修改人
    lastModifyTime 最后修改时间
    
设计结束

初步的一个大致思路,未进行实践。

你可能感兴趣的:(数据脱敏管理,java)