数据脱敏(Data Masking)- 模块功能设计
脱敏算法管理模块
- 算法类型取决于后台定制的算法类,表数据手动维护即可。
- 算法列表展示
- 算法维护-可根据程序提供的算法类型进行自定义算法。
- 算法删除-删除算法时需同时删除引用该算法的配置表数据
数据脱敏管理模块
- 设置:为某字段引用脱敏策略
- 预览数据:系统通过对原始表设置的脱敏字段进行脱敏然后展示在页面中(默认只显示前15条数据)
定时任务配置
- 系统定时/手动根据脱敏策略将原始数据同步至脱敏库中。
- 脱敏策略开发
- 获取需要数据脱敏配置的表信息
- 校验表是否在公共库中存在
- 同步公共库表至脱敏库中(检测需要脱敏的表在脱敏库中是否存在,不存在则同步表结构以及数据,存在则先删除原表在同步,这里也可以创建临时表,同步完成后在删除原表,修改临时表名为原表名)
- 系统通过对原始数据进行脱敏然后批量修改脱敏数据库中的数据
- 日志记录
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 - ######################数据脱敏结束#########################
- 日志记录
脱敏数据查询
- 检测脱敏库表是否存在
- 系统根据查询的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 最后修改时间
设计结束
初步的一个大致思路,未进行实践。