隐私不是一份政策文档,是每个字段从进来到消失的整条路径。
这个系列解决什么问题
一个人做产品,数据是顺手收进来的:注册表单多一个字段、埋点多一个属性、日志多打一行、模型调用多带一段上下文。收的时候没有成本,删的时候才发现要改 9 张表、5 个外部接口和 2 个保留期。
这个系列把「数据怎么进来、怎么用、怎么出去」拆成十篇:先画一张能回答安全问卷的数据地图,再把没人读的字段删掉;然后处理四类目的与三类同意,核对政策与产品行为是否一致;接着处理三类数据主体请求、删除的级联与保留期;最后处理跨境、供应商与泄露响应,用十二项检查做季度验收。
它服务的是一个没有法务、没有安全团队、每月只能拿出三小时的人。 你能投入的不是一套合规体系,而是一张字段表、四个清理任务和一次两小时的演练。
核心主张:五条口径
- 说不清字段,就谈不上合规。 78 个字段各自从哪来、给谁、存多久,答不出来时,隐私政策只能靠猜。
- 最小化是删字段,不是改文案。 23 个从未被读取的字段留在库里,就是 23 个泄露面。
- 同意只覆盖该用同意的目的。 服务与计费靠合同履行;把同意当万能依据,会让撤回变成产品故障。
- 删除是流程,不是按钮。 主库 30 天、副本 60 天,法定保留另算;承诺写不清,等于没做。
- 隐私的价值在可交代。 能在两小时内说清一次数据流向、一次删除、一次泄露,比多写十页政策更有用。
10 篇速览
| # | 文章 | 核心内容 | 阶段 |
|---|---|---|---|
| 01 | 数据地图:十二张表、七十八个字段与一次「我们到底收了什么」 | 12 张表、78 个字段、12 个域名与六属性登记 | 盘点 |
| 02 | 数据最小化:二十三个没人读的字段与一次删列迁移 | 23 个零读取字段、目的矩阵、删列三步 | 减法 |
| 03 | 合法性依据与同意:四类目的、三种同意与一次版本错配 | 4 类目的、3 类同意、38 条错配记录 | 依据 |
| 04 | 隐私政策与产品行为:十二个域名、九个披露与三个漏项 | 12 个域名、9 个披露、季度 30 分钟核对 | 一致 |
| 05 | 数据主体请求:一年十二件、三十天与一套导出脚本 | 12 件/年、30 天 SLA、4.45 MB 导出包 | 响应 |
| 06 | 删除权:九张表、九十七行与两个等保留期的副本 | 9 张表、97 行、60 天副本消失 | 删除 |
| 07 | 保留期:六类数据、四个清理任务与一次没跑的备份清理 | 6 类保留期、4 个任务、10.8 GB 漏删 | 保留 |
| 08 | 跨境与供应商:七个处理者、四十二个欧盟用户与一份传输评估 | 7 个处理者、42 个 EU 用户、7 份 TIA | 出境 |
| 09 | 数据泄露:七十二小时、三级分级与一次两小时演练 | 3 级分级、72 小时、8 小时/年演练 | 泄露 |
| 10 | 隐私验收:十二项检查、四维评分与一次季度演练 | 12 项检查、四维加权、3.80 与季度排期 | 验收 |
三条阅读路径
路径 A:产品刚上线,还没人问过数据。 先读 01 把 12 张表与 78 个字段列出来,再读 02 删掉 23 个零读取字段,最后用 10 的十二项检查做一次基线评分。这条路径的重点是「先知道有什么,再决定留什么」。
路径 B:收到第一封数据请求或客户 DPA。 先读 05 把 30 天流程与导出脚本跑通,再读 06 把删除级联与副本期限写清,用 04 核对政策与实际域名是否一致。这条路径的重点是「能在一周内交出一个可复查的答复」。
路径 C:要出海或接企业客户。 先读 08 把 7 个处理者、区域与传输评估列成表,再读 09 做一次泄露演练,最后用 10 的评分表排出季度预算。这条路径的重点是「把跨境与泄露从口头承诺变成可演练的流程」。
与其它专题的边界
站内已有合规、平台、资产、度量、运维与多租户内容,但都不处理「个人数据从收集到删除的整条生命周期」。下表说明本组不重复什么。
| 既有内容 | 它讲什么 | 本组边界 |
|---|---|---|
| 一个人的公司:主体、税务与合规 | 主体、税种、合同、隐私政策与 DPA 的文档字段 | 它写「承诺什么」;本组核对「实际做了什么」,并管字段、请求与删除 |
| 独立开发者的平台寄生 | 上架审核、平台合规与隐私政策要求 | 它满足渠道规则;本组管产品自己的数据生命周期 |
| 独立开发者的资产韧性 | 备份、恢复、云账号与事故交接 | 它保证数据找得回;本组保证数据该删时删得掉 |
| 一个人的产品度量:事件字典与指标口径 | 24 个事件、埋点校验与九十天保留 | 它定义事件;本组判断事件里哪些字段不该收 |
| 一个人的运维:可用性、告警与事故 | 五分钟止损、状态页与七天复盘 | 它管服务活着;本组管事故里涉及个人数据时怎么报 |
| 一个人的多租户:组织、角色与数据隔离 | 角色矩阵、三层校验与审计日志 | 它防越权;本组防超范围收集与超期保留 |
| 一个人的消息系统:事务邮件与送达率 | 同意、退订与偏好中心 | 它管发不发;本组管同意记录与撤回后的数据 |
| 一个人把 API 做成产品:对外接口与开发者体验 | key、配额、Webhook 与日志 | 它管接口凭据;本组管接口日志里不该留的字段 |
| 一个人的架构:技术选型、模块边界与演进 | 34 张表、迁移与外部服务适配 | 它管表结构与迁移;本组管表里哪些字段是个人信息 |
| 一个人的计费系统:订阅状态机与对账 | 账单、发票、退款与 7 年单据 | 它管钱;本组管钱之外的个人数据与法定保留例外 |
| 一个人的自助支持:帮助中心与工单 | 工单分级、排查树与模板答复 | 它管答复;本组管工单里贴进来的用户数据 |
| 一个人的前 100 天:从想法到第一批付费用户 | 验证、手工交付与首次收费 | 它管第一批用户;本组管第一批用户的数据从第一天就收对 |
| 一个人的数据搬家:导入、去重、迁移与退出(10 篇) | 迁移漏斗、导入契约、字段映射、去重合并、幂等重跑、人工代导入、窗口与回滚、附件限额、导出退出、十项验收 | 那组讲导入数据的边界与导出包;本组讲数据地图、最小化与删除权 |
| 一个人的质量守门:验证预算、回归清单与发布门禁(10 篇) | 47 缺陷与三条红线、12 条关键路径、三层配比、38→26 回归、六项门禁、四级缺陷、测试数据、不可逆保护、测试债、十项验收 | 那组讲删除操作的不可逆保护;本组讲数据地图、最小化与删除权 |
| 一个人的安全基线:十四个入口、十七个密钥与一次 72 小时响应 | 14 个攻击面、认证与枚举、会话撤销、17 个密钥三档、四条边界、41 个依赖与 186 条告警、四类限流、9 类审计日志、72 小时三段响应、20 项验收 | 那组管「收进来的东西怎么不被拿走」;本组管「该不该收、要留多久」 |
| 一个人的性能与账单:4.2 秒的首屏、一千二百次查询与每月 210 美元 | 4 项预算与 20 格、RUM 与慢查询、412→168 KB、1,200→3 次查询、0→86% 缓存、34 秒导出、7→4 个第三方、210→118 美元、3 次回归告警、10 项验收 | 那组讲指标与日志里存什么、留多久;本组讲该不该收、要留多久 |
| 一个人的企业客户:九家询价、一百四十八道问卷与 134 天的第一单 | 9 家询价与 130 h、96 天采购、148 题问卷、7 个子处理者、SLA 43.2/216 分钟、26 h SSO、4 周试点、38 天到账、8 h 实施、10 项验收 | 那组讲 DPA 条款与子处理者;本组讲数据地图、最小化与删除权 |
| 一个人的开源产品:4,200 个 star、一百八十个付费与一年 612 小时的维护 | 4,200 star 与 1,949 美元、612 h 维护、214 依赖、48,600 行 78/22、1,180 个 issue、214 条告警、23 个赞助者、9 家双许可、17 位贡献者、10 项验收 | 那组讲开源项目的边界与披露;本组讲数据地图、最小化与删除权 |
这十篇不承诺「照做就不会违规」,也不提供可直接使用的法律文本。可复算的部分全部用四则运算给出算式;不可复算的部分(法域、监管判断、供应商能力)明确指向官方文档。所有数字都是教学假设,代入前请换成自己的表、字段与请求量。
本组统一口径
全组共用一组教学假设,各篇引用时不换分母:
产品:一人 SaaS,与既有组同一产品;账号 344(付费 120 + 试用 18 + 暂停 2 + 免费/沉默 204)
数据库:34 张表;含个人信息的表 12 张、字段 78 个;平均 6.5 个/表
字段分类:身份 18 + 内容 24 + 行为 22 + 财务 14 = 78
零读取字段:23 个(6 个月日志证明)→ 78 − 23 = 55,删除比例 29.5%
处理目的:4 类(服务、计费、分析、营销);字段×目的矩阵 78×4 = 312 格,允许 96 格 = 30.8%
同意:3 类(条款、营销、分析);营销订阅 268 人 = 77.9%,未订阅 76 人 = 22.1%;年撤回 24 人 = 7.0%
数据流向:12 个域名 = 5 个自有 + 7 个外部服务(支付、邮件、对象存储、模型、分析、搜索、鉴权)
政策披露:9/12 → 3 个漏项(分析、模型、错误监控)= 25%;修复后 12/12
数据主体请求:12 件/年 = 访问 5 + 导出 4 + 删除 3;手工 2.5 h/件、脚本 0.5 h/件
导出包:主数据 97 行(58 KB)+ 文件 18 个(4.32 MB)+ 90 天事件 113 条(68 KB)≈ 4.45 MB
删除:9 张表级联 97 行;18 个文件;452 事件/账号/年;年删除 36 个账号 = 10.5%
删除副本:软删 30 天 + 备份 30 天 = 60 天;发票 7 年法定保留、只匿名化
保留期:账号主数据 30 天、应用日志 90 天、分析明细 90 天、备份 30 天、审计 90 天–36 个月、发票 7 年
清理任务:4 个 × 每日 = 120 次/月;失败 0.8% = 0.96 次/月
备份:0.9 GB/天 × 30 天 = 27 GB;一次漏跑 12 天 = 10.8 GB
跨境:主库 us-east-1、备份 eu-central-1;EU 用户 42 = 12.2%;7 个处理者(5 美国、2 欧盟)
传输评估:7 × 45 分钟 = 5.25 h;年度复核 7 × 30 分钟 = 3.5 h;子处理者变更 3 次/年
泄露:3 级;检测目标 24 h、监管通知 72 h(余量 48 h)、用户通知内部目标 7 天
演练:2 h + 3 个缺口 × 2 h = 8 h/年;4 份模板
验收:12 项四维;权重 0.30/0.25/0.25/0.20;现状 3.80、修后 4.18
季度预算:13 周 × 3 h = 39 h;五项 24 h = 61.5%
344 是账号总数,120 是付费数。 数据请求率、删除率、同意比例都按 344 算;收入与付费相关数字才用 120。
12 张个人信息表与 9 张级联删除表不是同一件事。 12 张里 9 张按 user_id 直接删,2 张按保留期清理,1 张(payments/发票)依法保留 7 年、只做匿名化。
保留期沿用既有组口径。 分析明细 90 天来自产品度量组,备份 30 天来自资产韧性组,审计按事件类型(登录失败 90 天、删除 36 个月、账单 7 年)来自多租户组;本组不另立一套。
所有法律时限都是教学引用。 GDPR 访问请求 1 个月、泄露通知 72 小时、CCPA 45 天、PIPL 及时处理,具体适用与判断以专业意见为准。
使用说明
先列字段,再写政策。 字段表列不出来时,政策只能抄模板;抄来的模板与实际数据流一定对不上。
把删除当成一条跨系统的流程。 主库、对象存储、5 个外部接口、90 天分析与 30 天备份,每一段都要有人负责、有验证方法。
每季度跑一次两小时的演练。 一次导出、一次删除、一次泄露桌面推演;发现问题就回到检查表,而不是写进备忘录。
不要为了「以后可能有用」保留字段。 保留一个字段的成本不是磁盘,是它出现在泄露、导出与问卷里的每一次。
本组的证据与使用方法
证据类型。 本组用的是「字段登记表 + 12 个域名的抓包清单 + 12 件数据请求记录 + 36 次删除日志 + 4 个清理任务的执行记录 + 一次两小时演练的时间线」。没有「最佳实践」式的断言。
如何使用。 先用 01 的六属性表对照自己的 12 张表,再用 02 的读取日志删掉零使用字段,用 05 的脚本跑一次导出,用 06 的清单验证一次删除,最后用 10 的十二项检查做季度体检。
如何复核。 取最近一个月:抓一次包,看域名是否都在政策里;抽一个已删除账号,看 9 张表、18 个文件与 5 个外部接口是否真的没有残留;看一次清理任务的日志是否连续。三项都能对上,这套基线才适用。