05 · 数据与隐私合规
合规不是法务的独角戏,是数据分级 → 脱敏 → 加密存储 → 留存治理的技术链路。本篇讲工程上怎么落地:哪些是个人数据、什么时候脱敏、什么必须加密、留存多久。
速览卡
| 项 | 内容 |
|---|---|
| 一句话定位 | 把隐私合规翻译成可执行的技术清单 |
| 核心内容 | 数据分级、脱敏策略、加密存储、留存与删除、GDPR/个保法要点 |
| 读完能回答 | 手机号脱敏和加密是一回事吗?用户要删数据怎么办? |
| 相关板块 | S03 密码学 | DB10 数据迁移 | C16 服务端安全纵深 |
一、先给结论:合规是四条技术原则
text
① 分级:先知道哪些是敏感数据
② 最小化:只收集和存必需的
③ 管控:展示脱敏 + 存储加密 + 权限收敛
④ 留痕:能查谁在什么时候访问过一句话:别等法务来问,开发时就把"这条数据能不能展示、该存多久、谁有权看"写进接口契约。
二、个人数据分级
| 级别 | 例子 | 处理要求 |
|---|---|---|
| 一般 | 昵称、公开资料 | 正常存储,注意展示 |
| 个人敏感 | 手机号、身份证、住址、生物特征 | 脱敏 + 加密 + 权限 |
| 高敏 | 支付、健康、行踪、未成年人信息 | 加密存储 + 严格审计 + 专项流程 |
分级是脱敏和加密的前提:不分级就谈不上"哪些字段要特殊处理"。
三、脱敏:展示层 vs 存储层
| 场景 | 做法 | 例子 |
|---|---|---|
| 列表展示 | 脱敏后返回 | 138****1234 |
| 详情校验 | 明文只用于必要操作 | 验证码登录时才用完整手机号 |
| 日志/埋点 | 一律不落明文 | 日志里只留脱敏值或 ID |
| 导出/备份 | 视需要脱敏 | 测试库用假数据 |
脱敏 ≠ 加密:脱敏是不可逆的展示处理,加密是可逆的存储保护。展示用脱敏,持久化用加密,两者都做。
四、加密存储:哪些必须加密、怎么加
| 字段 | 建议 |
|---|---|
| 密码 | 慢哈希(bcrypt/argon2),永远不逆 |
| 手机号/身份证 | 字段级加密,展示时脱敏 |
| 支付/健康等高敏 | 字段级加密 + 访问审计 |
| 整个库 | 落盘加密(静态加密)兜底,但挡不住应用层泄露 |
分层思维:数据库静态加密(TDE)解决"磁盘被偷",字段级加密解决"查询结果泄露"。两者不是替代关系。
五、合规要点:把"权利"翻译成接口
| 要求 | 技术落地 |
|---|---|
| 知情同意 | 收集前明示用途,可配置撤回 |
| 目的限制 | 只按声明用途处理,禁止挪作他用 |
| 数据最小化 | 字段只存必要的,能省则省 |
| 留存期限 | 每类数据定 TTL,到期删除/匿名化 |
| 删除权 | 提供"删除我的数据"入口,级联清理 |
| 可携带性 | 能导出用户自己的数据(GDPR 重点) |
六、GDPR 与个保法:最小可用的对齐
细节以当地法规为准,本篇给技术侧需要知道的三件事:
- 删除权:用户要求删除,相关副本(备份、日志)也要能清理或匿名化。
- 跨境传输:数据出境需要合法依据,别把国外用户数据随意放国内存储。
- 事件通知:泄露要在期限内上报,所以日志要能定位"哪些数据被波及"。
七、自检清单
- [ ] 每个敏感字段都标了级别,知道谁有权读
- [ ] 列表/详情/日志/导出四个场景的脱敏策略都定过
- [ ] 密码用慢哈希,高敏字段做了字段级加密
- [ ] 每类数据有留存期限,删除功能真的删(含副本)
- [ ] 有访问审计,能回答"谁看过这条数据"
八、常见误区
| 误区 | 事实 |
|---|---|
| "脱敏就是加密" | 脱敏不可逆用于展示,加密可逆用于存储 |
| "库是加密的所以安全" | 静态加密挡不住应用层越权与日志泄露 |
| "用户删了缓存里还有没事" | 副本/备份/日志都可能违反删除权 |
| "合规是上线后的事" | 接口设计时定级最便宜,事后返工成本高 |
九、动手练习
练习 A:给接口做分级
列出你最近的三个接口,给每个字段标敏感级别,找出"本该脱敏却明文返回"的字段。
练习 B:设计删除链路
给一个带手机号的用户模块设计"删除我的数据",覆盖主表、日志、备份、缓存四层。
练习 C:日志脱敏
给日志框架加一个脱敏过滤器,验证手机号/身份证不会出现在日志里。
相关文档
本区
- 03 · 密码学基础 —— 加密存储选型
- 04 · 传输安全与 TLS 实践 —— 传输层的隐私保护
- S · 安全计划
其他域
- C16 · 服务端安全纵深 —— 密钥与访问控制落地
- DB10 · 数据迁移与双写 —— 数据搬迁时的脱敏与合规
- 12 · 前端可观测性与线上排障 —— 埋点里的隐私