数据脱敏

基本介绍

数据脱敏(Data Masking)是一种重要的数据安全保护技术,通过对敏感信息进行变形、替换或隐藏等处理方式,有效防止隐私数据泄露。

主要保护的敏感信息

  1. 个人身份信息:身份证号、护照号等
  2. 金融账户信息:银行卡号、信用卡号等
  3. 联系方式:手机号、固定电话、邮箱地址等
  4. 其他敏感数据:社保号、病历号、薪资信息等

常见的数据脱敏方式

  • 替换:如将手机号中间四位替换为*
  • 加密:使用加密算法对数据进行加密存储
  • 扰动:对数值型数据进行随机偏移
  • 删除:直接移除敏感字段

整体架构

ShardingSphere 的加密模块采用轻量级集成方案,主要通过 Encrypt-JDBC 组件实现。

工作流程

  1. 集成方式:Encrypt-JDBC 以 Java 库的形式直接嵌入业务应用程序
  2. 工作流程
    • 写入时:自动加密敏感字段
    • 查询时:自动解密结果集

核心特点

  • 透明化处理:业务代码无需修改
  • 灵活配置:支持字段级别的精细控制
  • 算法扩展:允许自定义脱敏算法实现

处理流程

ShardingSphere 将逻辑列与明文列和密文列进行了列名映射。使用 Encrypt-JDBC 进行增删改查的时候,其中的处理流程:

  1. SQL 请求拦截阶段
  2. SQL 解析与理解阶段
  3. 脱敏规则匹配阶段
  4. 数据加解密处理阶段
  5. 数据库交互阶段

脱敏规则

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:辅助查询加密方法