SpringBoot 增强库 yue-library 2.6.0 发布,数据脱敏、数据审计、数据填充

Java 投稿 61700 0 评论

SpringBoot 增强库 yue-library 2.6.0 发布,数据脱敏、数据审计、数据填充

yue-library简介

yue-library是一个基于SpringBoot封装的增强库

  • 丰富的Java工具类库

  • 优越的ORM框架

  • 优雅的业务封装

  • 优化的Spring环境配置

  • 完善的规约限制

  • 配套的代码生成平台

  • 安稳贴切的开源架构方案

版本更新日志

  • 主要变更:升级SpringBoot到2.6.x,实现依赖优化与版本控制,加入grpc与plumelog,优化逻辑删除与物理删除分离

  • 主要新特性:数据脱敏、数据审计、数据填充

新特性

  • 【base】移除过期的UUIDUtils,用IdUtils代替

  • 【jdbc】新增数据脱敏特性,请求加密,响应解密

  • 【jdbc】数据脱敏:支持全局密钥配置于表级密钥配置,支持对表中某个字段配置

  • 【jdbc】数据脱敏:支持AES、SM4(国密)、自定义加密机等用于脱敏处理

  • 【jdbc】新增数据审计特性,增删改操作自动记录操作人

  • 【jdbc】数据审计:支持使用配置一键开关需要进行审计的表、支持反向配置不审计的表

  • 【jdbc】数据审计:支持自定义审计字段、审计用户

  • 【jdbc】数据审计:规范数据审计字段命名并增加创建人、更新人、删除人为默认审计字段

  • 【jdbc】新增数据填充特性,用于UUID,租户ID自动填充

  • 【jdbc】数据填充:支持使用配置一键开关需要进行填充的表、支持反向配置不填充的表

  • 【jdbc】数据填充:支持数据新增时填充,数据更新时填充

  • 【jdbc】逻辑删除:完善逻辑删除与物理删除彻底分离,规范逻辑删除方法

  • 【jdbc】新增insertAndReturnUuid()方法:插入时返回uuid

  • 【jdbc】新增insertAndReturnFields()方法:插入时自定义返回需要的字段

  • 【docs】完善jdbc文档,新增配置示例文档、db boolen示例、打印可执行SQL示例、基础的DDL表结构示例、添加Spring JDBC教程

  • 【docs】完善数据库设计与交付规约:数据库枚举规约、多租户介绍

  • 【docs】完善服务端规约:提供IDE配置模板

  • 【docs】完善grpc规约:proto规约、工程结构规范、工程依赖规约、rpc接口版本控制规约

  • 【docs】完善服务端工程结构规约:包名规约、Service/DAO层方法命名规约、POJO领域模型命名规约

  • 【template-boot】优化并完善示例项目,上手更简单直观

Bug修复

  • 【template-boot】修正因SpringBoot2.4版本新的配置文件机制,导致的启动失败 #I40ONA

Maven关键依赖库

Maven详细依赖定义见pom.xml文件

依赖库依赖版本
spring-boot2.6.3
spring-cloud2021.0.1
spring-cloud-alibaba2021.0.1.0
hutool5.7.22
fastjson1.2.79

工程结构

. yue-library
├── yue-library                      
│   ├── yue-library-dependencies      dependencies版本控制
│   ├── yue-library-base              基础核心模块,提供丰富的Java工具类库、接口参数校验、类型转换器等
│   ├── yue-library-base-crypto       加解密模块,提供对称、非对称和摘要算法、密钥交换加解密等
│   ├── yue-library-web               WebMvc模块,servlet编程,提供请求与响应参数的包装与解析等
│   ├── yue-library-webflux           WebFlux实现,响应式编程(如:SpringCloudGateway)
│   ├── yue-library-data-jdbc         ORM框架,基于SpringJdbc,拥有着强大性能的同时又不失简单灵活等
│   ├── yue-library-data-redis        Redis客户端,基于SpringRedis,更简单灵活,提供分布式锁等
│   ├── yue-library-auth-service      OAuth2认证模块,基于SpringSecurity,更简单灵活,提供全局token与登录等
│   ├── yue-library-auth-client       OAuth2客户端模块,提供获取当前登录用户状态信息等
│   └── yue-library-pay               支付模块,基于pay-java-parent,让你真正做到一行代码实现支付聚合
└── yue-library-samples              
   ├── yue-library-test              web测试项目,提供详细的特性使用示例、接口单元测试
   ├── yue-library-test-webflux      webflux测试项目,提供详细的特性使用示例、接口单元测试
   ├── yue-library-template-boot     SpringBoot项目模版,提供快速开发示例
   └── yue-library-template-cloud    SpringCloud项目模版,SOA共享架构(阿里巴巴中台)

数据脱敏

数据脱敏作为安全层面的大范围话题,包含:数据存储加密、数据展示脱敏等多方面,这里主要实现的是数据存储加密的优雅解决方案。

数据存储加密解决方案实现,一般分为直接开干方式与优雅实现两种:

  • 直接开干方式,无非依托于程序员自身,对业务字段进行单独处理,大家实现方式不一,水平不一,实现容易维护苦难

  • 优雅实现依托于技术框架底层实现,对需要的字段进行存储加密取出解密,可以定制不同字段不同加密方案,相对优雅简洁少操心

应用场景

数据存储加解密的实现一般又分为两种,不可逆与对称加密。

  • 不可逆一般用于像用户密码这样的场景,只需匹配查询,无需解密查看。需求量较小,开发者一般自行处理

  • 对称加密大量用于像手机号、身份证号、邮箱等数据,进行存储加密,业务字段多繁杂,不仅需要查询加密可逆,又需保障安全,不能只使用一种加密算法

yue-library解决的就是需要大量对称加解密处理的场景,不同的字段可才有不同的密钥与加密算法,存储自动加密,查询自动匹配与解密。

使用限制

jdbcQueryxxx
开头的查询方法暂时不支持查询参数自动加密匹配,因为SQL中使用?
作为占位符,无法解析具体第几个参数是需要加密的

queryForxxx
开头的查询方法暂时不支持查询参数自动加密匹配,因为这是基础查询方法,容易出现多重加密错误。 我们可以采用调用public void dataEncrypt(String tableName, JSONObject... paramJsons)
方法,将参数实现处理,然后传入到queryForxxx
方法中,解决此问题。

如何使用

  1. 配置脱敏字段与加密算法

yue:
 jdbc:data-encrypt-algorithm: AES            # 缺省数据加密算法(仅当在表级未配置单独的加密算法时,以缺省值的方式生效)data-encrypt-key: 1234567890123456     # 缺省数据加密密钥(仅当在表级未配置单独的加密密钥时,以缺省值的方式生效)data-encrypt-configs:                  # 数据加密配置(key:表名,value:数据加密规则)  data_encrypt:                        # 数据库对应的表名data-encrypt-algorithm: AES        # 当前表加密算法(未设置使用缺省值)data-encrypt-key: 1234567890123455 # 当前表加密密钥(未设置使用缺省值)fieldNames:                        # 加密字段  - cellphone  - password  data_encrypt_2:                      # 数据库对应的表名fieldNames:                        # 加密字段  - email  - password

  1. 使用测试

  • 使用db.insertXXX()
    方法测试加密存储

  • 使用db.deleteXXX()
    方法测试条件自动加密匹配

  • 使用db.updateXXX()
    方法测试条件自动加密匹配与更新内容加密存储

  • 使用db.getXXX()
    、db.listXXX()
    、db.pageXXX()
    方法测试条件自动加密匹配查,存储数据自动解密

查询自动解密

对比脚手架

yue-library正在计划提供属于自身的脚手架项目,但相比于单纯的脚手架项目,他更具有以下几点优势:

  • 简单易学:优雅的实现各个功能特性,并配备了完善的说明文档

  • 轻松引用:不同于脚手架,对于现有的SpringBoot项目也可以引入yue-library

  • 更易升级:以spring-boot-starter的方式提供支持,可随时跟进最新稳定版本

  • 无需维护:开发者只需专注自身业务逻辑实现,并熟练运用你所使用的特性

  • 灵活选取:你可以随时弃用yue-library保留SpringBoot原生使用

收藏一波以表支持吧(≧▽≦)/!

编程笔记 » SpringBoot 增强库 yue-library 2.6.0 发布,数据脱敏、数据审计、数据填充

赞同 (93) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽