标准答案
- 按风险选择物理库、索引、分区或共享索引加 tenant_id 过滤;高敏感租户优先使用更强隔离,不能只按开发方便决定。
- 服务端从认证上下文计算租户和资源范围,检索请求携带不可由客户端覆盖的过滤条件;返回前再次校验来源和资源权限。
- 缓存 Key、会话、异步索引任务、引用 URL、导出文件和日志都要带租户边界。跨租户聚合必须有明确授权和审计。
题目解析
“只传 tenantId”不够,因为用户可能篡改它,也不能表达文档级 ACL、组织层级、临时授权和撤销。授权逻辑应从服务端身份、资源关系和策略引擎得到。
共享索引的优点是资源利用率高,缺点是过滤遗漏会造成严重越权;物理隔离成本更高,但能缩小误配置影响。可以按数据敏感等级分层。
测试要包含恶意租户切换、缓存碰撞、异步任务错租户、引用链接越权和删除后仍命中等场景。
常见误区
- 把前端选择的租户 ID 直接交给向量库。
- 只保护检索接口,忽略引用下载、导出和缓存。
- 只用同租户正常用例测试,没有做跨租户攻击测试。