确保项目中的数据被合规收集、安全存储、合理使用、及时清理,保护用户隐私,满足法律法规要求(GDPR、个人信息保护法等),建立数据全生命周期管理规范。
- 设计数据模型/数据库时(数据分类)
- 收集用户数据时(合规审查)
- 实现数据导出/删除功能时
- 处理数据泄露事件时
- 接入第三方数据服务时
- 定期数据审计时
- 产品上线前的隐私合规检查
数据分级:
| 级别 | 定义 | 示例 | 保护要求 |
|---|---|---|---|
| L1-公开 | 可公开访问 | 产品信息、公开文档 | 基本完整性 |
| L2-内部 | 仅内部使用 | 运营数据、内部文档 | 访问控制 |
| L3-敏感 | 个人可识别信息 | 姓名、邮箱、手机号 | 加密 + 访问控制 |
| L4-机密 | 高度敏感 | 密码、身份证、银行卡 | 强加密 + 审计 + 最小权限 |
个人数据识别:
- 直接标识:姓名、身份证号、手机号、邮箱
- 间接标识:IP 地址、设备 ID、位置信息
- 敏感数据:健康信息、财务信息、生物特征、宗教/政治观点
收集原则(最小必要):
- 合法性:有明确的法律依据(同意/合同/合法利益)
- 最小化:只收集实现功能所必需的数据
- 目的限定:明确告知收集目的,不超范围使用
- 透明性:隐私政策清晰说明收集了什么、为什么、怎么用
- 用户同意:敏感数据需明确同意(非默认勾选)
收集前检查:
## 数据收集评估
- 收集什么数据:[字段列表]
- 为什么需要:[业务目的]
- 法律依据:[同意/合同/合法利益]
- 是否最小必要:[能否减少?]
- 存储位置:[哪里存储]
- 保留期限:[多久删除]
- 用户权利:[如何查看/导出/删除]
- 是否涉及第三方:[是否共享]存储规范:
| 数据类型 | 存储要求 |
|---|---|
| 密码 | bcrypt/argon2 哈希,永不明文 |
| 个人敏感信息 | AES-256 加密存储 |
| 数据库 | 启用传输加密(TLS) |
| 备份 | 加密备份,限制访问 |
| 日志 | 不记录敏感数据(脱敏) |
| 缓存 | 敏感数据设置短 TTL 或不缓存 |
访问控制:
- 最小权限原则
- 数据库账户分离(应用用/管理用/只读)
- 敏感操作需要审计日志
- 生产数据不用于开发/测试(需脱敏)
使用规则:
- 不超范围使用(收集时说的目的)
- 数据分析/统计使用聚合/匿名化数据
- 不向第三方共享未经同意的个人数据
- 营销/推送提供明确的退订方式
- 自动化决策(如 AI)需说明逻辑
数据脱敏规则:
| 数据类型 | 脱敏方式 | 示例 |
|---|---|---|
| 手机号 | 中间 4 位替换 | 138****5678 |
| 邮箱 | @前保留首尾 | t***t@example.com |
| 身份证 | 保留前 3 后 4 | 110***********1234 |
| 银行卡 | 保留后 4 位 | **** **** **** 5678 |
| 姓名 | 保留姓 | 张** |
必须支持的用户权利:
| 权利 | 实现方式 |
|---|---|
| 知情权 | 隐私政策 + 收集时告知 |
| 访问权 | 用户可查看自己的数据 |
| 更正权 | 用户可修改自己的信息 |
| 删除权 | 用户可请求删除数据(被遗忘权) |
| 导出权 | 用户可导出自己的数据 |
| 撤回同意 | 随时可撤回之前的同意 |
数据删除实现:
1. 用户发起删除请求
2. 验证身份
3. 标记为待删除(软删除)
4. 等待冷静期(如 30 天)
5. 硬删除个人数据
6. 清理备份中的相关数据(按备份周期)
7. 通知第三方(如有数据共享)
8. 记录删除操作日志
保留策略:
| 数据类型 | 保留期限 | 到期处理 |
|---|---|---|
| 账户数据 | 账户存续期 + 30 天 | 删除 |
| 交易记录 | 法律要求(如 5 年) | 归档/删除 |
| 操作日志 | 6-12 个月 | 清理 |
| 会话/Cookie | 按功能需要 | 过期清理 |
| 备份数据 | 按备份策略 | 轮转覆盖 |
定期清理:
- 每月:清理过期会话/临时数据
- 每季度:审查数据保留策略
- 每年:全面数据审计
应急响应流程:
1. 发现/确认泄露(范围、数据类型)
2. 止血(修复漏洞、撤销泄露的凭证)
3. 评估影响(多少用户?什么数据?)
4. 通知(72 小时内通知监管机构 - GDPR)
5. 通知受影响用户
6. 记录事件详情
7. 复盘改进
预防措施:
- 敏感数据加密存储和传输
- 定期安全审计和渗透测试
- 数据库访问审计日志
- 备份加密
- 员工安全意识培训
隐私政策必须包含:
- 收集哪些数据
- 为什么收集(目的)
- 如何使用
- 是否共享给第三方
- 数据存储位置和安全措施
- 保留期限
- 用户权利及行使方式
- Cookie 使用说明
- 政策变更通知方式
- 联系方式
- 数据已分类分级
- 数据收集遵循最小必要原则
- 隐私政策已发布且完整
- 用户同意机制已实现(非默认勾选)
- 敏感数据加密存储
- 密码使用强哈希算法
- 日志中无敏感数据(已脱敏)
- 用户可查看/导出/删除自己的数据
- 数据保留策略已定义
- 定期清理过期数据
- 备份数据已加密
- 生产数据不直接用于开发
- 有数据泄露应急预案
- 第三方数据共享有合规审查
| 输出物 | 格式 | 存放位置 |
|---|---|---|
| 数据分类文档 | Markdown | docs/data-governance.md |
| 隐私政策 | 网页/Markdown | 产品内 + 官网 |
| 数据收集评估 | Markdown | docs/privacy/ |
| 数据保留策略 | 配置/文档 | 代码 + 文档 |
| 泄露应急流程 | 文档 | docs/incidents/ |
| 误区 | 正确做法 |
|---|---|
| 收集了不用也留着 | 最小必要 + 定期清理 |
| 密码明文或简单哈希 | bcrypt/argon2 + salt |
| 日志记录完整请求体 | 敏感字段脱敏 |
| 没有删除功能 | 必须支持用户删除权 |
| 隐私政策抄模板不看 | 根据实际数据流定制 |
| 开发用真实生产数据 | 使用脱敏/模拟数据 |
| 备份不加密 | 备份同等保护级别 |
| 泄露了不通知用户 | 法规要求必须通知 |