事实表敏感字段处理
事实表里的手机号、证件号、银行卡号等敏感信息不要落明文:用加盐哈希或脱敏映射列替代,确需明文的另建受控表并最小授权、访问留痕。注意弱标识的特殊性——手机号、证件号的取值空间有限,无盐哈希可以被穷举反查,必须加盐;盐值本身要与数据分离保管。
基本信息
| 处理方式 | 加盐哈希、脱敏映射、部分掩码 |
|---|---|
| 分层设计 | 受限表保留明文 + 通用事实表只放脱敏值 |
| 弱标识 | 手机号、证件号必须加盐哈希 |
| 代理列 | 用不可逆 ID 替代明文做关联键 |
| 合规要求 | 访问审计留痕,明确授权范围 |
| 密钥管理 | 盐值单独保管,不写进代码或工单 |
典型使用场景
- 身份关联:用哈希后的证件号做跨系统同一用户识别,不暴露明文
- 风控指标:按手机号哈希统计设备与账号的关联关系
- 对外共享:把脱敏后的数据提供给外部合作方
- 客服查询:仅在受控应用中按完整标识反查,操作全程留痕
- 合规检查:证明事实表中不存在明文敏感字段
加盐哈希与分层
加盐哈希与分层
SELECT sha2(concat(salt, id_card), 256) AS id_card_hash
FROM stg_user; -- 加盐哈希,避免弱标识被穷举反查
SELECT sha2(concat(salt, phone), 256) AS phone_hash
FROM stg_user; -- 电话同样加盐,无盐哈希可被号段穷举反查
-- 明文走受限表,不进通用事实层:授权最小化 + 访问审计处理方式对照
| 方式 | 可逆性 | 适用场景 |
|---|---|---|
| 加盐哈希 | 不可逆 | 需要关联但不需要还原的标识 |
| 脱敏映射 | 可逆(受控) | 客服等确需还原的场景 |
| 掩码 | 不可逆 | 仅展示用途,如尾号展示 |
| 明文受限表 | 可读 | 合规允许且最小授权的场景 |
脱敏方案与字段清单要过安全评审,哈希后仍可能被枚举的弱标识要加盐或改写:手机号只有有限的号段与位数,无盐哈希在算力面前基本等价于明文。
明文敏感信息一旦进入通用宽表,会随报表、导数、缓存等多条链路扩散,事后清理需要全链路排查;因此在入仓环节拦截比事后治理成本低得多。