系列文章目录
文章目录
前言
一、Mybatis数据安全实现大致思路
在SpringBoot Stater模型下基于Mybatis原生拓展拦截器实现的加解密脱敏功能,前置拦截对数据库表SQL进行JSqlParse解析操作后,根据ORM对应关系进行相应的加密处理更新SQL值执行。后置拦截对Mybatis表实体进行ORM配置拦截解析后进行预加载Class字节码缓存高效动态反射解密处理更新对象内存值;从而实现数据库ORM之间的动态无感加解密脱敏功能。
源代码参考gitee码云:starter-parent: Java开源Spring Boot插拔式微服务组件.
二、使用步骤
1.建立Maven工程引入全球公共中央仓库pom
<dependency>
<groupId>cn.amossun</groupId>
<artifactId>starter-mybatis-data-security</artifactId>
<version>1.2.1-RELEASE</version>
</dependency>
2.配置pom组件基础项
##### 数据安全pom基础配置之加解密算法(参考)
amossun:
data-security:
mybatisPlus:
enabled: true
cipherModePadding: AES/CBC/PKCS7Padding
cryptogram: ATHkGjnb0GR42lUGUZsgVUV4lRmIc58K
offset: LBQn2FQse3aiY9oI
outType: base64
characterName: UTF-8
dataSuffix: '[@#¥#@]'
dataBeforeSuffix: ${amossun.data-security.mybatisPlus.dataSuffix}
dataAfterSuffix: ${amossun.data-security.mybatisPlus.dataSuffix}
3.配置对应持久层映射关系(ORM)
REDIS动态配置项方式:
支持动态新增维护数据库加解密,可通过Redis配置实现多节点动态加解密脱敏功能。所需加解密脱敏业务ORM需配置在对应redis环境中即可. 配置方式见: 三级等保之SpringBootMybatis数据安全管理端
##### 数据安全pom基础配置之加解密算法(参考)
##### 加解密算法以及redis公共缓存策略配置(完整配置)
amossun:
redis:
enabled: true
prefix: ${service.name}
host: ${spring.redis.host}
port: ${spring.redis.port}
password: ${spring.redis.password}
database: ${spring.redis.database}
data-security:
mybatisPlus:
enabled: true
cipherModePadding: AES/CBC/PKCS7Padding
cryptogram: ATHkGjnb0GR42lUGUZsgVUV4lRmIc58K
offset: LBQn2FQse3aiY9oI
outType: base64
characterName: UTF-8
dataSuffix: '[@#¥#@]'
dataBeforeSuffix: ${amossun.data-security.mybatisPlus.dataSuffix}
dataAfterSuffix: ${amossun.data-security.mybatisPlus.dataSuffix}
configType: REDIS # configType为枚举类型可选项有:YML/REDIS
cache:
maximumSize: 50
duration: 10
YML配置项方式:
兼容未使用Redis项目场景,以及变动加解密ORM配置不多场景。支持使用项目中YML配置方式维护加解密业务ORM。
##### 数据安全pom基础配置之加解密算法(参考)
##### 加解密算法以及本地缓存策略配置(完整配置)
amossun:
data-security:
mybatisPlus:
enabled: true
cipherModePadding: AES/CBC/PKCS7Padding
cryptogram: ATHkGjnb0GR42lUGUZsgVUV4lRmIc58K
offset: LBQn2FQse3aiY9oI
outType: base64
characterName: UTF-8
dataSuffix: '[@#¥#@]'
dataBeforeSuffix: ${amossun.data-security.mybatisPlus.dataSuffix}
dataAfterSuffix: ${amossun.data-security.mybatisPlus.dataSuffix}
configType: YML # configType为枚举类型可选项有:YML/REDIS
ormConfigs:
- objectClassName: com.xx.xx.entity.User
tableName: biz_user
decryptVersion: 0
results:
- property: userName
column: user_Name
desensitizedType: CHINESE_NAME
- property: userEmail
column: user_email
desensitizedType: EMAIL
- property: userPhone
column: user_phone
desensitizedType: MOBILE_PHONE
encryptDelimiter: ','
- objectClassName: com.xx.xx.entity.UserAddress
tableName: biz_user_address
results:
- property: address
column: address
desensitizedType: ADDRESS
4.启动验证ORM所对应业务(CURD)功能
可基于API接口或单元测试,测试验证业务ORM功能一对一,一对多,多对多场景功能是否密文/脱敏持久化入库,是否动态解密明文至业务层0代码兼容原生业务功能。
总结
以上仅为Java语言Spring Mybatis框架实现方式,基于业务场景0业务代码无感知改造兼容数据库加解密实现;欢迎留言交流。