Appearance
API 设计
API 设计:多租户架构和越权访问
OpenAPI 多租户场景:每个 API Key 绑定一个租户 ID,所有接口响应都根据 tenant_id 查询隔离数据
多租户设计重点:
- 租户 ID 强绑定:用户请求必须带上身份来源(Token 里或 Header)
- 数据隔离:数据库查询必须带 WHERE tenant_id = ?
- 权限隔离:租户 A 管理员不能操作租户 B 的账号
- 配置隔离:不同租户支持个性化配置(品牌色、功能开关等)
- 审计日志:记录每个租户的操作,方便问题溯源
越权访问:水平越权和跨租户访问
| 名称 | 解释 |
|---|---|
| 水平越权 | A 用户访问了同权限 B 用户的数据(同一个租户) |
| 跨租户访问 | A 用户访问了属于 B 租户的数据(不同租户) |
“我们系统是标准的多租户架构,每个租户的数据通过 tenant_id 做隔离,配合 RBAC 权限控制,避免了水平越权和跨租户访问。所有接口设计时都强制绑定资源归属验证,防止 ID 猜测造成的越权问题。” “我们落地了 RBAC 权限控制,结合租户隔离,所有资源访问都必须验证 tenant_id 和资源归属。接口层面封装了统一的资源校验逻辑,避免开发者遗漏。”
RBAC + 多租户 + 资源归属封装
API 设计:鉴权机制
- AK/SK
- 推荐 HMAC-SHA256 签名方式
- 包括 3 个 header: 1.AK 2.sign 3.timestamp
- AccessToken
- Token 有效期,支持刷新机制。 如何设计刷新机制???
- 推荐 JWT(JSON Web Token),含用户信息、权限范围、过期时间等。
Authorization: Bearer eyJhbGciOi...
- APIKEY
- 用 UUID 或哈希生成,存储时做加密处理
- 可以为每个 key 配置:权限范围
API 设计:Webhook
TODO