基于数据安全的目的,需要对敏感数据进行加密存储。其中有整个字段是敏感内容的数据,也有部分灵活内容存储为JSON,JSON中的部分path为敏感内容。
针对这部分内容,需要对JSON指定path加解密,以避免对整个JSON加解密造成存储空间、应用缓存资源浪费。
ShardingSphere整体架构
加密规则
加密配置主要分为四部分:数据源配置,加密算法配置,加密表配置以及查询属性配置,其详情如下图所示:
JSON加解密器实现在加密配置->用户自定义处
配置
加密器类型配置
1 | spring: |
加密字段配置
1 | spring: |
JSON path加密配置
1 | spring: |
自定义加密
接下来就是自定义ShardingSphere加密部分
可以查看ShardingSphere官网,EncryptAlgorithm
继承EncryptAlgorithm
- 重写getType为json(加密器类型配置处使用)
- 重写setProps(JSON path加密配置会从此处拿到)
- 重写encrypt、decrypt,在遇到加密字段配置中的SQL时,触发改写SQL,可以根据props中配置的json path自定义加密。
实现SPI
在代码的resources路径下创建META-INF\services\org.apache.shardingsphere.spi.encrypt.ShardingEncryptor
文件内容为自定义加密类的全路径,如:com.company.shardingsphere.encrypt.JSONEncryptor