<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>一个人的多租户：组织、邀请、角色与数据隔离（10 篇） on PlumePHP</title><link>https://plumephp.com/posts/indie/indie-multi-tenancy-and-permissions/</link><description>Recent content in 一个人的多租户：组织、邀请、角色与数据隔离（10 篇） on PlumePHP</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Sun, 25 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://plumephp.com/posts/indie/indie-multi-tenancy-and-permissions/index.xml" rel="self" type="application/rss+xml"/><item><title>多租户验收：九项控制、四张表与越权演练</title><link>https://plumephp.com/indie-tenancy-10-tenancy-acceptance/</link><pubDate>Sun, 25 Oct 2026 22:50:00 +0800</pubDate><guid>https://plumephp.com/indie-tenancy-10-tenancy-acceptance/</guid><description>客户安全问卷只回三百字被要求提供证据。九项控制、四张表与四维加权算出 4.0 分，判定可用；短板在权限 3 分，补 27 条越权用例可到 4.3，证据须可复现，季度演练 27 条整轮约 25 分钟，年度 4 轮共约 1.7 小时。</description></item><item><title>交接与合并：转所有权、并组织与最后一位管理员</title><link>https://plumephp.com/indie-tenancy-09-handover-and-merge/</link><pubDate>Sun, 25 Oct 2026 22:45:00 +0800</pubDate><guid>https://plumephp.com/indie-tenancy-09-handover-and-merge/</guid><description>唯一 Owner 注销后组织无人能改账单，也没人能加人。五种边界情形、八项交接清单与合并复算：24 个工作区并为 22 个，100 人去重后 96 人，重复工作区导出 6.4 万行约 32 分钟，Owner 至少两人才能挡住无人可管。</description></item><item><title>席位与权限的一致性：加人、降级与离职怎么计费</title><link>https://plumephp.com/indie-tenancy-08-seats-and-billing/</link><pubDate>Sun, 25 Oct 2026 22:40:00 +0800</pubDate><guid>https://plumephp.com/indie-tenancy-08-seats-and-billing/</guid><description>团队从 5 席降到 3 席，两个月后还有 5 人在登录。本文用五种席位口径、三个变更时点，复算 20 团队每月 600 美元、月中加席 3.2 美元与离职减 6 美元的账单和权限同步，并给出每月三列对账、告警与八条验收清单。</description></item><item><title>审计日志：记什么、留多久、给谁看</title><link>https://plumephp.com/indie-tenancy-07-audit-log/</link><pubDate>Sun, 25 Oct 2026 22:35:00 +0800</pubDate><guid>https://plumephp.com/indie-tenancy-07-audit-log/</guid><description>客户问上周三谁删了项目，你只翻到一条 DELETE 200。本文给 12 类必记事件、9 个字段与 before/after 差异写法，按 20 团队每月 3600 条复算 12 个月 16.5 MiB 存储，并给出五分钟内回答谁删了什么的验收口径。</description></item><item><title>数据隔离：一行 workspace_id 与四道防线</title><link>https://plumephp.com/indie-tenancy-06-isolation/</link><pubDate>Sun, 25 Oct 2026 22:30:00 +0800</pubDate><guid>https://plumephp.com/indie-tenancy-06-isolation/</guid><description>一条查询少写 where，导出 CSV 就混进别家的项目名。本文在 20 个团队的规模下逐项对比行级、schema、独立库三种隔离方案，给出四道防线、8 条 RLS 策略、27 条越权用例与 20 套迁移的完整复算口径。</description></item><item><title>权限判定的三层校验：UI、API 与数据</title><link>https://plumephp.com/indie-tenancy-05-enforcement/</link><pubDate>Sun, 25 Oct 2026 22:25:00 +0800</pubDate><guid>https://plumephp.com/indie-tenancy-05-enforcement/</guid><description>前端藏了按钮不等于权限生效。本文用 can(actor, action, resource) 统一判定入口，按 UI、API、数据三层校验，并给出一套完整的 27 条跨租户用例、5 条首轮失败与 25 分钟季度复跑口径。</description></item><item><title>四个角色与一张权限矩阵：最小权限怎么写</title><link>https://plumephp.com/indie-tenancy-04-role-matrix/</link><pubDate>Sun, 25 Oct 2026 22:20:00 +0800</pubDate><guid>https://plumephp.com/indie-tenancy-04-role-matrix/</guid><description>一个 Member 删掉整个工作区，因为他以为删除只删自己看到的那一项。本篇给出四个角色定义、8 资源 × 4 动作的权限矩阵，并复算 128 格中为何只允许 43 格，以及 Viewer 10 人与 Owner 2 人的开通检查。</description></item><item><title>邀请与成员生命周期：从发出邀请到移除成员</title><link>https://plumephp.com/indie-tenancy-03-invitations/</link><pubDate>Sun, 25 Oct 2026 22:15:00 +0800</pubDate><guid>https://plumephp.com/indie-tenancy-03-invitations/</guid><description>一条通用邀请链接被转发到客户群，三天后进来两个陌生人。本篇拆解邮箱、域名、通用链接与 API 四种邀请入口，五个成员状态与席位释放的完整口径，并复算 20 个团队每月 36 次邀请在第三天提醒后如何多出 4 个活跃成员。</description></item><item><title>组织、工作区、成员：三层模型与一次数据迁移</title><link>https://plumephp.com/indie-tenancy-02-data-model/</link><pubDate>Sun, 25 Oct 2026 22:10:00 +0800</pubDate><guid>https://plumephp.com/indie-tenancy-02-data-model/</guid><description>给 344 个账号补 workspace_id 的那天，才发现 8 张业务表都挂在 user_id 上。本文用四张核心表、8 个归属键与 12.4 万行数据，复算 62 分钟回填、2 倍写放大与 7 天回滚窗口，并给出四步迁移顺序。</description></item><item><title>什么时候必须有「组织」：五个信号与三种模型</title><link>https://plumephp.com/indie-tenancy-01-when-to-add-orgs/</link><pubDate>Sun, 25 Oct 2026 22:05:00 +0800</pubDate><guid>https://plumephp.com/indie-tenancy-01-when-to-add-orgs/</guid><description>客户第三次替同事要账号时，共享密码已经把风险留给了你。本文用 20 个团队、1800 美元毛收入与 76 小时成本，复算五个组织信号、三种归属模型与 37.9 美元/小时的真实机会成本，并给出一张从信号到选型的八项判断清单。</description></item></channel></rss>