三级等保之SpringBootMybatis数据安全(二)

系列文章目录

三级等保之数据库加解密技术方案预言分析篇(一)

三级等保之SpringBootMybatis数据安全(二)

数据库内容加密后支持模糊搜索功能(三)


前言

一、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业务代码无感知改造兼容数据库加解密实现;欢迎留言交流。

  • 21
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Amos.Sun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值