生成短链接

扫描二维码 上传二维码
选择防红平台类型,避免链接被拦截
选择允许访问的平台类型

中台多租户权限架构实战

快缩短网址 · 多租户权限设计札记
suo.run 出品

一、序章:在 URL 与权限之间
当一条冗长的链接被压缩成轻盈的 suo.run/xxxxx 时,我们也在把庞杂的权限体系折叠成一张清晰的索引表。
后台系统的权限设计,如同短链算法:把无限的可能映射到有限的、可验证的令牌上。



二、通用范式:权限的「最小公倍数」
1. 资源原子化
菜单、按钮、字段、数据——悉数注册为可寻址资源。
2. 角色聚合
将资源封装成角色,角色成为权限的「最短表达」。
3. 授权链路
用户 ← 角色 ← 资源;
用户组作为缓存层,可批量继承角色。
4. 运行时鉴权
每一次点击,都是一次「解码」:系统校验令牌是否命中资源。



三、多租户命题:在共享与隔离之间
业务中台之上,租户如岛屿。岛屿共用同一片海域,却必须拥有独立的海岸线。

1. 出厂即合规
预置 Root 账户,拥有全域资源,负责「创世」:
• 建立租户
• 实例化应用
• 生成租户管理员

2. 租户自治
租户管理员在 BOC(Business Operation Center)内:
• 创建用户
• 分配可登录的应用
• 定义角色并授权

3. 场景化权限
• SaaS 运营商:全局鸟瞰,一键复刻模板角色
• 企业客户:细粒度定制,字段级脱敏
• 开发者:API 级鉴权,支持 OAuth2 / JWT 双通道

四、架构素描:一张图读懂权力流动

Root

┌────┴────┐
TenantA TenantB
│ │
AppInst1 AppInst2
│ │
RoleSet RoleSet
│ │
Users Users

五、实现细节:让抽象落地
1. 数据隔离
• 物理隔离:独立库
• 逻辑隔离:tenant_id 贯穿所有表
2. 权限缓存
• Redis 存储「用户-角色-资源」三元组,TTL 自适应刷新
3. 审计回溯
• 每一次授权变更写入不可变日志(append-only log)
• 支持秒级回滚与合规审计
4. 开放能力
• RESTful API:/tenants/{id}/roles
• Webhook:角色变更事件实时推送

六、尾声:短链的隐喻
suo.run 把长链接压缩成六个字符,
我们把复杂的权限折叠成一行配置。
当用户点击「生成短链」时,后台已在毫秒间完成:
租户校验 → 角色匹配 → 资源鉴权 → 日志落盘。
简洁,是极致的复杂。