分库分表第八篇之数据脱敏
2020-05-28 本文已影响0人
小螺丝钉cici
数据脱敏概念
数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。涉及客户安全数据或者一些商业性敏感数据。
如身份证号、手机号、卡号、客户号等个人信息按照相关部门规定,都需要进行数据脱敏。
BTW:简单理解就是将数据通过一定的加密算法加密之后进行保存
业务场景分析:业务由于一切从零开始,不存在历史数据清洗问题,所以相对简单。
解决方案说明:选择合适的加密器,如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的方式,字段一样,不存储明文!!!
对于数据库来讲更安全