从一个人用到一群人用,是产品的第二次诞生。
这个系列解决什么问题
卖给个人的产品,账号就是用户;卖给团队的产品,账号只是成员之一。这条界线一旦跨过去,同一份数据就要回答三个新问题:它属于谁、谁能改、改过之后谁看得到。
这个系列把这部分补上:先用五个信号判断什么时候必须引入组织,再定组织、工作区与成员的三层模型并完成一次不停机迁移;然后用邀请与成员生命周期管住「人怎么进来、怎么出去」;用四个角色与一张矩阵把权限写成可核对的格子;用 UI、API、数据三层校验堵住越权;用四道防线把租户数据隔开;用审计日志回答「谁在何时删了什么」;让席位与账单始终一致;处理所有权交接与组织合并;最后用九项控制与四张表做一次验收。
它服务的是一个人。 你没有安全团队、没有 IAM 平台、没有合规官;你能投入的是每周几小时,和一套客户一问就能拿出来的证据。
核心主张:五条口径
- 组织不是功能,是数据边界。 加了组织却不改查询作用域,等于只多了一个下拉框。
- 权限挂在成员关系上,不挂在人身上。 同一个人在两个组织里可以有不同角色;写死在用户表上就再也改不回来。
- 默认拒绝,允许要写出来。 一百二十八格矩阵里只允许四十三格,剩下的是默认值,不是待办。
- 隔离要靠四道防线,不靠一次 code review。 应用作用域、数据库策略、集成测试、导出与删除,缺一道就有一次事故。
- 席位是账单口径,权限是行为口径,两者必须同一时刻对齐。 对不上,就会出现「账单三个人、登录五个人」。
10 篇速览
| # | 文章 | 核心内容 | 阶段 |
|---|---|---|---|
| 01 | 什么时候必须有「组织」:五个信号与三种模型 | 五个触发信号、三种模型、引入成本与流失复算 | 判断 |
| 02 | 组织、工作区、成员:三层模型与一次数据迁移 | 四张核心表、资源归属、backfill 与双写切换 | 建模 |
| 03 | 邀请与成员生命周期:从发出邀请到移除成员 | 四种邀请入口、五个成员状态、提醒与过期 | 入组 |
| 04 | 四个角色与一张权限矩阵:最小权限怎么写 | 四个角色、八资源四动作、四十三格允许 | 授权 |
| 05 | 权限判定的三层校验:UI、API 与数据 | 单一判定函数、IDOR、列表漏过滤、批量接口 | 校验 |
| 06 | 数据隔离:一行 workspace_id 与四道防线 | 三种方案对比、RLS、集成测试、按租户导出 | 隔离 |
| 07 | 审计日志:记什么、留多久、给谁看 | 十二类事件、九个字段、保留期与可见性 | 留痕 |
| 08 | 席位与权限的一致性:加人、降级与离职怎么计费 | 席位口径、按天折算、超额冻结与释放 | 计费 |
| 09 | 交接与合并:转所有权、并组织与最后一位管理员 | 五种边界情形、八项交接清单、合并去重 | 交接 |
| 10 | 多租户验收:九项控制、四张表与越权演练 | 九项控制、四维加权、4.0 分与季度演练 | 验收 |
三条阅读路径
路径 A:刚有第一个团队客户。 从 01 判断模型,用 02 建表并迁移,再按 03 把邀请流程做出来。这条路径的重点是「先有边界,再有人」。
路径 B:已经有多账号,但权限是拍脑袋的。 先做 04 的角色矩阵,再用 05 的三层校验补齐接口,最后用 06 的四道防线把隔离坐实。这条路径的重点是「把口头规则变成可测的格子」。
路径 C:客户开始发安全问卷。 从 07 的审计日志与 08 的席位一致开始,用 09 的交接清单补边界情形,最后用 10 的九项控制做一次自评。这条路径的重点是「拿得出证据」。
与其它专题的边界
站内已有定价、API、合规与运维内容,但都不处理「组织」这一层。下表说明本组不重复什么。
| 既有内容 | 它讲什么 | 本组边界 |
|---|---|---|
| 一个人把价格定对:定价、付费墙与涨价(10 篇) | 定价模型、套餐、付费墙与涨价 | 它决定「收多少」;本组只处理席位怎么数、账单怎么与权限对齐 |
| 一个人把 API 做成产品:对外接口、开发者体验与支持(10 篇) | key、配额、Webhook 与开发者支持 | 它管机器凭据;本组管人的成员关系与角色 |
| 一个人的公司:主体、税务与合规底座(10 篇) | 主体、合同、DPA 与法定申报 | 它是法律文本;本组是技术隔离,合规口径以其为准 |
| 一个人的借力:外包、自动化与协作边界(10 篇) | 外包边界、最小授权与代码交接 | 它管「谁能碰生产」;本组管「客户组织内谁能碰数据」 |
| 独立开发者的平台寄生:渠道、审核与变现(10 篇) | 平台 OAuth、workspace 安装与分成 | 它讲别人的 workspace;本组讲你自己的组织模型 |
| 一个人的社区:冷启动、版规、版主与社群健康(10 篇) | 版主四级权限、轮值表与退出 | 它是社群治理;本组是产品内的数据权限 |
| 独立开发者的资产韧性:账号、数据与恢复能力(10 篇) | 账号、备份、找回与交接 | 它保「你的资产不丢」;本组保「客户的租户不串」 |
| 一个人的运维:可用性、告警、事故与值班(10 篇) | 可用性、告警、事故与发布 | 它管服务可用;本组管故障的影响面是否越界 |
| 信息安全与云安全专题 | 威胁建模、认证授权与安全运营 | 它讲攻击面;本组只讲租户边界与权限正确性 |
| 一个人的产品度量:事件字典、指标口径与决策看板 | 六个决策与十二个指标、事件字典、埋点校验、口径五要素、漏斗、看板、数据质量、采样、实验与验收 | 那组讲用户行为怎么记;本组讲组织、成员、角色与数据隔离 |
| 一个人的架构:技术选型、模块边界与演进(10 篇) | 技术选型排除法、九个模块与依赖方向、数据迁移三步、四个升级窗口、技术债预算、三次规则、重构判据、可替换性、幂等与补偿、四维验收 | 那组讲单产品内部的模块边界;本组讲组织、角色与数据隔离 |
| 一个人的计费系统:订阅状态机、按比例计费与失败重试(10 篇) | 订阅状态机、五个时点、按比例计费、按量计量、催收、退款拒付、发票税务、对账漏损、自建决策、十二项验收 | 那组讲金额与订阅状态;本组讲组织、角色与数据隔离 |
| 一个人的隐私工程:数据地图、最小化与删除权(10 篇) | 数据地图、最小化、合法性依据与同意、政策一致性、数据主体请求、删除、保留期、跨境与供应商、泄露响应、十二项验收 | 那组讲成员数据与审计日志的保留;本组讲组织、角色与数据隔离 |
| 一个人的数据搬家:导入、去重、迁移与退出(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 项验收 | 那组讲客户拿权限当采购条件时怎么报价与验收;本组讲组织模型、角色矩阵与数据隔离 |
| 一个人的开源产品:4,200 个 star、一百八十个付费与一年 612 小时的维护 | 4,200 star 与 1,949 美元、612 h 维护、214 依赖、48,600 行 78/22、1,180 个 issue、214 条告警、23 个赞助者、9 家双许可、17 位贡献者、10 项验收 | 那组讲开源项目的边界与责任;本组讲组织模型、角色矩阵与数据隔离 |
这十篇不承诺「按这套做就能过 SOC 2」,也不提供任何 IAM 产品报价。可复算的部分全部用四则运算给出算式;不可复算的部分(问卷条款、审计要求、合同义务)明确指向合规专题与客户合同。所有数字都是教学假设,代入前请换成自己的组织数与席位数。
本组统一口径
全组共用一组教学假设,各篇引用时不换分母:
付费账户 120 = 个人档 100(12 美元/月)+ 团队档 20(30 美元/月,含 5 席)
毛收入 = 100×12 + 20×30 = 1200 + 600 = 1800(均价 15,沿用全站基线)
登录账号 344 = 100 个人持有者 + 20×5 = 100 团队席位 + 144 免费/试用/协作账号
团队席位合计 100,平均 5 席/团队;个人档固定 1 席
组织 120 = 100 个一人组织 + 20 个团队组织
工作区 124 = 100 个一人默认工作区 + 24 个团队工作区(4 个团队各多 1 个)
权限矩阵 4 角色 × 8 资源 × 4 动作 = 128 格,允许 43 格 = 33.6%
越权用例 9 类 × 3 层 = 27 条;季度演练约 25 分钟
审计日志 20 团队 × 180 条/月 = 3600 条/月,每条 400 字节
均价不变。 团队档 30 美元含 5 席,等于每席 6 美元;和个人档 12 美元加权后仍是 15 美元,所以与财务、运维两组的 1800 不冲突。
组织与工作区要分开。 20 个团队组织里有 4 个开了两个工作区;把两者合并成一层,客户被收购时就得重建数据。
席位只数已接受的成员。 邀请中不计费,移除后立即释放;这条口径让账单与权限能对上。
27 条用例是全组的最小证据。 每一篇的验收都能落到这 27 条里的某几条;没有它们,隔离只是形容词。
使用说明
先读 01,不要先写代码。 不知道该不该引入组织,先建表只会多一层没人用的字段。
每篇都可以单独使用。 文章之间共享基线,但不依赖前后文;你可以只拿 04 的矩阵或 06 的四道防线回去改。
先做零成本的动作。 角色矩阵、默认拒绝、列表作用域、审计字段,这些都不花钱。
证据要能拿出来。 客户问起时,「27 条越权用例、季度全过」比任何架构图都有用。
本组的证据与使用方法
证据类型。 本组用的是「权限矩阵 + 越权用例结果 + 审计记录 + 账单席位」:允许格数、失败用例数、事件条数、席位与成员数。没有行业均值,也没有「通常来说」的推断。
如何使用。 先把 01 的五个信号对照自己的客户,再用 04 的矩阵填出允许格,用 05 的 27 条用例跑一遍,最后用 10 的四维评分做季度体检。
如何复核。 取最近一个季度,按九项控制逐条找证据;找不到证据的项直接记 0,再看分数落在哪一档。