数据脱敏
基本介绍
数据脱敏(Data Masking)是一种重要的数据安全保护技术,通过对敏感信息进行变形、替换或隐藏等处理方式,有效防止隐私数据泄露。
主要保护的敏感信息:
- 个人身份信息:身份证号、护照号等
- 金融账户信息:银行卡号、信用卡号等
- 联系方式:手机号、固定电话、邮箱地址等
- 其他敏感数据:社保号、病历号、薪资信息等
常见的数据脱敏方式:
- 替换:如将手机号中间四位替换为*
- 加密:使用加密算法对数据进行加密存储
- 扰动:对数值型数据进行随机偏移
- 删除:直接移除敏感字段
整体架构
ShardingSphere 的加密模块采用轻量级集成方案,主要通过 Encrypt-JDBC 组件实现。
工作流程:
- 集成方式:Encrypt-JDBC 以 Java 库的形式直接嵌入业务应用程序
- 工作流程:
- 写入时:自动加密敏感字段
- 查询时:自动解密结果集
核心特点:
- 透明化处理:业务代码无需修改
- 灵活配置:支持字段级别的精细控制
- 算法扩展:允许自定义脱敏算法实现
处理流程
ShardingSphere 将逻辑列与明文列和密文列进行了列名映射。使用 Encrypt-JDBC 进行增删改查的时候,其中的处理流程:
- SQL 请求拦截阶段
- SQL 解析与理解阶段
- 脱敏规则匹配阶段
- 数据加解密处理阶段
- 数据库交互阶段
脱敏规则
1. 加密器配置
encryptors:
aes_encryptor:
type: AES
props:
aes-key-value: 123456abc
md5_encryptor:
type: MD5
2. 脱敏表配置
tables:
t_user:
columns:
phone:
cipherColumn: phone_cipher
plainColumn: phone_plain
logicColumn: phone
encryptor: aes_encryptor
3. 查询属性配置
props:
queryWithCipherColumn: true
策略解析
ShardingSphere 提供了两种加密策略:
Encryptor
- encrypt():用于数据写入前的加密处理
- decrypt():用于数据读取后的解密处理
QueryAssistedEncryptor
一种更安全、更复杂的脱敏方案,通过引入变动种子确保相同数据在不同场景下加密结果不同。
核心功能:
- encrypt:加密方法
- decrypt:解密方法
- queryAssistedEncrypt:辅助查询加密方法