多租户数据隔离
Multi-Tenant Data Isolation
解决多用户环境下数据所有权、可见性控制和跨用户隔离问题
子问题
1.用户级数据过滤
2.所有权校验(403)
3.public/private 可见性
4.订阅关系管理
5.新用户默认数据初始化
6.软删除资源后订阅者视图一致性
7.Pack 安装时跳过已软删除的源(防僵尸)
各项目的解法1 solutions
Signals
横向对比
| 维度 | ClawFeed |
|---|---|
| 隔离粒度 | 行级隔离,单 SQLite 库,WHERE user_id = ? 过滤 |
| 所有权校验 | API 层先查资源再比对 created_by,不匹配返回 403 |
| 可见性模型 | is_public 字段二级分层,默认私有,组合条件查询 |
| 删除策略 | 软删除 is_deleted 标记,订阅者可见已停用状态 |
| 订阅关系 | user_subscriptions 多对多表,UNIQUE 约束 + INSERT OR IGNORE 幂等 |
| 冷启动策略 | 新用户注册时 INSERT...SELECT 批量订阅所有公共源 |
| 测试覆盖 | Bash E2E 脚本,4 用户 + visitor,check_not 验证跨用户不可见 |
最佳实践
1.所有查询附加 user_id 过滤
2.DELETE/PUT 前校验 created_by
3.E2E 测试覆盖跨用户不可见场景
4.INSERT OR IGNORE + UNIQUE 约束实现幂等订阅
5.INSERT...SELECT 原子批量订阅公共源实现冷启动
6.is_public 默认 0 确保安全默认值