数据脱敏服务
Micro-Mask 是响应拦截式数据脱敏微服务模块,基于 Spring Boot 的 ResponseBodyAdvice 实现。通过 MaskResponseAdvice 在接口响应写出前按规则自动对敏感字段进行脱敏,全程配置驱动,无需在业务代码中引入 @Mask 注解,对业务代码零侵入。Maven 坐标:com.wkclz.microapp:micro-mask。
功能特性
- Method + URI 规则匹配:以「请求方法 + 请求路径」作为脱敏规则的匹配条件,路径支持 AntPathMatcher 通配符(如
/**、/user/*),可精确到具体接口,实现多接口统一或差异化脱敏策略 - JSONPath 定位脱敏字段:通过 JSONPath 表达式精确定位响应体中的脱敏字段,支持
$[*]数组语法递归匹配,可对对象、数组、嵌套数组中的字段进行统一脱敏 - 三种脱敏策略:按「正则表达式 > JS 脚本 > 兜底长度规则」的优先级逐级匹配:
- 正则表达式:基于 RegularTool 提取并替换匹配内容为等长
* - JS 脚本:通过 JsUtil 执行自定义脚本处理脱敏逻辑
- 兜底长度规则:按字段长度自动兜底(短于 4 位返回
***,短于 8 位保留首位加****,其余保留前 3 位加****)
- 正则表达式:基于 RegularTool 提取并替换匹配内容为等长
- 两级缓存:Guava Cache 缓存「用户+方法+URI → 规则列表」的匹配结果,
MaskCache缓存全部脱敏规则,通过 Redis 变更通知与定时任务驱动缓存刷新,规则变更可实时生效 - 在线测试/验证接口:内置脱敏测试接口(
/rule/test)可即时验证规则对样例数据的脱敏效果,验证接口(/rule/verify)返回内置的嵌套 JSON 样例数据便于观察各种脱敏路径的覆盖情况 - 规则管理:提供脱敏规则的增删改查接口,支持分页查询、规则启用/停用开关,规则变更后自动同步缓存
适用场景
- 接口响应中手机号、身份证号、银行卡号等敏感字段的自动脱敏
- 避免业务代码侵入,无需在各业务接口中手动调用脱敏方法
- 多个接口需要统一脱敏策略,或不同接口需要差异化脱敏规则
- 数据展示给低权限用户、日志/埋点输出等需要敏感信息保护的场景
技术栈
- Java 25
- Spring Boot(ResponseBodyAdvice)
- Redis(缓存变更通知)
- Fastjson2(JSONPath 解析与脱敏改写)
- Jackson(响应序列化)
- Guava Cache(两级缓存)