posts

一个人的多租户:组织、邀请、角色与数据隔离(10 篇)

一个人做 B 端,迟早要从单用户走到组织。本组十篇从 20 个团队与 100 个席位出发:何时引入组织、三层模型与迁移、邀请与成员生命周期、角色矩阵、三层校验、数据隔离、审计日志、席位与账单一致、所有权交接,最后用九项控制验收。

从一个人用到一群人用,是产品的第二次诞生。

这个系列解决什么问题

卖给个人的产品,账号就是用户;卖给团队的产品,账号只是成员之一。这条界线一旦跨过去,同一份数据就要回答三个新问题:它属于谁、谁能改、改过之后谁看得到。

这个系列把这部分补上:先用五个信号判断什么时候必须引入组织,再定组织、工作区与成员的三层模型并完成一次不停机迁移;然后用邀请与成员生命周期管住「人怎么进来、怎么出去」;用四个角色与一张矩阵把权限写成可核对的格子;用 UI、API、数据三层校验堵住越权;用四道防线把租户数据隔开;用审计日志回答「谁在何时删了什么」;让席位与账单始终一致;处理所有权交接与组织合并;最后用九项控制与四张表做一次验收。

它服务的是一个人。 你没有安全团队、没有 IAM 平台、没有合规官;你能投入的是每周几小时,和一套客户一问就能拿出来的证据。

核心主张:五条口径

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,再看分数落在哪一档。

系列导航

全部文章 game Indie golang 客户端开发 Minigame Saas rust Python Java cg