问题域/PD-157

多租户数据隔离

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 确保安全默认值