跳到主要内容

数据脱敏

问题

什么是数据脱敏?静态脱敏和动态脱敏有什么区别?

答案

脱敏方式对比

维度静态脱敏动态脱敏
时机数据导出/同步时查询返回时
效果生成脱敏后的副本原始数据不变,展示脱敏
适用测试环境、数据共享生产环境查询
性能一次性处理每次查询处理

常见脱敏规则

数据类型脱敏规则原始值脱敏后
手机号保留前3后413812345678138****5678
身份证保留前6后4110105199001012345110105****2345
邮箱保留首字符@域名alice@gmail.coma***@gmail.com
姓名保留姓张三张*
银行卡保留后4位6222021234567890************7890
地址保留到市级北京市朝阳区xx路xx号北京市朝阳区***
-- SQL 脱敏函数示例
SELECT
user_id,
-- 手机号脱敏
CONCAT(LEFT(phone, 3), '****', RIGHT(phone, 4)) AS phone_masked,
-- 邮箱脱敏
CONCAT(LEFT(email, 1), '***@', SUBSTRING_INDEX(email, '@', -1)) AS email_masked,
-- 姓名脱敏
CONCAT(LEFT(name, 1), REPEAT('*', CHAR_LENGTH(name) - 1)) AS name_masked
FROM users;

脱敏策略

策略说明适用场景
遮盖用 * 替换部分字符手机号、身份证
哈希SHA256 单向加密用户 ID 关联
泛化降低精度年龄段、区域
置换用假数据替换测试环境
加噪添加随机噪声统计分析
数据分析场景的脱敏建议
  • 分析用数据:使用哈希后的 user_id(可关联但不可逆)
  • 对外报告:聚合数据,确保无法反推个人
  • 测试环境:静态脱敏生成虚假数据
  • BI 看板:动态脱敏,不同角色看到不同粒度

常见面试问题

Q1: 哈希脱敏安全吗?

答案

  • 简单哈希(如 MD5)对于手机号等有限值域的数据不够安全(可暴力破解)
  • 应使用加盐哈希(HMAC-SHA256),且盐值需保密
  • 哈希适合关联分析(同一 user 在不同表中 hash 值一致),不适合需要还原的场景

Q2: K-匿名是什么?

答案: K-匿名要求数据中每条记录的准标识符(如年龄、邮编、性别)至少与 K-1 条其他记录相同,使得攻击者无法在 K 条记录中区分特定个人。常用于发布统计数据时的隐私保护。


相关链接