标准答案

  1. 按风险选择物理库、索引、分区或共享索引加 tenant_id 过滤;高敏感租户优先使用更强隔离,不能只按开发方便决定。
  2. 服务端从认证上下文计算租户和资源范围,检索请求携带不可由客户端覆盖的过滤条件;返回前再次校验来源和资源权限。
  3. 缓存 Key、会话、异步索引任务、引用 URL、导出文件和日志都要带租户边界。跨租户聚合必须有明确授权和审计。

题目解析

“只传 tenantId”不够,因为用户可能篡改它,也不能表达文档级 ACL、组织层级、临时授权和撤销。授权逻辑应从服务端身份、资源关系和策略引擎得到。

共享索引的优点是资源利用率高,缺点是过滤遗漏会造成严重越权;物理隔离成本更高,但能缩小误配置影响。可以按数据敏感等级分层。

测试要包含恶意租户切换、缓存碰撞、异步任务错租户、引用链接越权和删除后仍命中等场景。

常见误区

  • 把前端选择的租户 ID 直接交给向量库。
  • 只保护检索接口,忽略引用下载、导出和缓存。
  • 只用同租户正常用例测试,没有做跨租户攻击测试。

作者信息