DB分布式服务

分库分表第八篇之数据脱敏

2020-05-28  本文已影响0人  小螺丝钉cici
数据脱敏概念

数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。涉及客户安全数据或者一些商业性敏感数据。
如身份证号、手机号、卡号、客户号等个人信息按照相关部门规定,都需要进行数据脱敏。
BTW:简单理解就是将数据通过一定的加密算法加密之后进行保存

image.png

业务场景分析:业务由于一切从零开始,不存在历史数据清洗问题,所以相对简单。

解决方案说明:选择合适的加密器,如AES后,只需配置逻辑列(面向用户编写SQL)和密文列(数据表存密文数据)即可,逻辑列和密文列可以相同也可以不同。

spring.shardingsphere.encrypt.encryptors.encryptor_aes.type=aes
spring.shardingsphere.encrypt.encryptors.encryptor_aes.props.aes.key.value=123456
spring.shardingsphere.encrypt.tables.order_info.columns.pwd.cipherColumn=pwd
spring.shardingsphere.encrypt.tables.order_info.columns.pwd.encryptor=encryptor_aes
实战

准备工作:
在orderInfo添加字段 pwd,执行save方法后,数据库中pwd存储的是明文


image.png

场景1:字段一样,不存储明文
假设我们逻辑字段为pwd,加密存储的字段也是pwd,但是数据库的数据是加密处理的。只需要指定如下配置:

#加密方式 自带AES和MD5 可自定义
spring.shardingsphere.encrypt.encryptors.encryptor_aes.type=aes
#当加密方式为aes的时候,需要aes的key.
spring.shardingsphere.encrypt.encryptors.encryptor_aes.props.aes.key.value=123456
#指定逻辑字段和加密字段
spring.shardingsphere.encrypt.tables.order_info.columns.pwd.cipherColumn=pwd
#加密器
spring.shardingsphere.encrypt.tables.order_info.columns.pwd.encryptor=encryptor_aes

场景2:字段不一样,不存储明文
逻辑字段和加密字段不是一个字段:

#指定逻辑字段和加密字段
spring.shardingsphere.encrypt.tables.order_info.columns.pwd.cipherColumn=pwd1

场景3:字段一样,存储明文

逻辑列和明文列是一样的,加密列是另外一个字段。
#加密方式 自带AES和MD5 可自定义
spring.shardingsphere.encrypt.encryptors.encryptor_aes.type=aes
#当加密方式为aes的时候,需要aes的key.
spring.shardingsphere.encrypt.encryptors.encryptor_aes.props.aes.key.value=123456
#指定逻辑字段和加密字段
spring.shardingsphere.encrypt.tables.order_info.columns.pwd.cipherColumn=cipher_pwd
#加密器
spring.shardingsphere.encrypt.tables.order_info.columns.pwd.encryptor=encryptor_aes
#明文列
spring.shardingsphere.encrypt.tables.order_info.columns.pwd.plainColumn=pwd 

在nbkingloan项目实战中,采用的是场景1的方式,字段一样,不存储明文!!!
对于数据库来讲更安全

上一篇下一篇

猜你喜欢

热点阅读