Feature 01 / 04
成果
在审计中存活的隔离保证
多租户不是我们交付的功能标志。它是数据模型:每次读取和写入的行级范围、团队感知的 RBAC、范围限定存储、签名的审计日志。采购、SOC 2、ISO 27001 — 每张表单上的答案都是一样的。
Feature 02 / 04
工作空间范围的 RBAC
角色存在于租户内,权限永不跨越边界泄漏
Feature 03 / 04
按工作空间存储前缀,带有签名的、短期的下载 URL — 没有共享存储桶,没有跨租户路径遍历
Feature 04 / 04
防篡改审计日志保留到工作空间删除之后,以满足监管保留窗口
模型内部
Helpdash 如何使多租户变得无聊
Feature 01 / 03
全局查询范围
每个模型上的全局范围按租户键自动过滤。在调用站点忘记边界在结构上是不可能的;框架在数据层将其连接好。
Feature 02 / 03
团队级 RBAC
角色和权限是租户感知的 — 代理在工作空间 A 中的角色在工作空间 B 中不可见。服务台之间没有意外的权限转移。
Feature 03 / 03
按租户存储
文件系统前缀(tenants/{id}/)将每次上传绑定到其工作空间。下载 URL 是签名的、短期的,在签发时进行租户检查。
FAQ
Frequently asked questions
数据模型是什么?
单个共享模式,每条业务记录上都有一个租户键。模型使用 BelongsToTenant trait,该 trait 安装全局查询范围;读取和写入自动继承工作空间边界。跨租户访问需要在应用层进行显式的、经审计的覆盖。
租户在每个请求上如何解析?
经过身份验证的路由忽略 X-Tenant-Slug 和主机标头 — 签名 JWT 内的工作空间声明具有权威性,就这样。未经身份验证的路由(登录、公共文档)按标头 → 子域名 → 查询字符串的优先级解析,并带有保留名称列表(例如 www、api、admin)以防止冲突。
审计员实际看到什么?
每个工作空间的签名仅追加审计日志,保留到租户删除之后,可导出到您的 SIEM。加上 ORM 范围:每个查询都是租户绑定的一行证明 — 这通常足以满足 SOC 2 CC6.1 和 ISO 27001 A.9.4.1。