五厂面经真题集字节跳动面经高频字节真题RAG权限控制速答 · 约 5 分钟更新 2026-09-29

RAG 怎么做文档级、段落级权限过滤?怎么防止缓存导致越权?

一句话结论

权限过滤必须在检索层完成,通过索引打标签和系统注入用户身份实现。防缓存越权需将权限维度加入缓存键,并在多租户命中缓存后二次校验权限。

先这样答

权限过滤必须在检索层完成。系统在建立索引阶段,需要给数据打上具体的权限标签。标签的粒度包含文档级和段落级两种。用户发起查询请求时,检索动作会强制带上该用户的身份信息进行过滤。这个过滤条件必须由后端系统直接注入。系统绝不能依赖大模型传参来控制权限。

缓存越权是高频事故。开发者必须将权限维度加入缓存键。系统在读取缓存前,会先校验缓存键中的权限标识。用户的权限发生变更时,系统要联动失效对应的缓存。在多租户架构下,不同用户通常会共享同一个缓存池。系统在命中缓存后,不能直接把内容发给用户。系统必须验证命中后的权限,确认当前用户拥有访问权后再返回结果。

系统还需要做好审计工作。后端要记录每一次返回内容的权限判定。审计记录会保存用户身份和对应的权限匹配结果。

面试官会怎么追问

  • 「为什么过滤条件必须由系统注入,不能靠模型传参?」 模型传参无法保证权限控制的安全。系统必须在检索层强制带用户身份过滤。系统直接注入能确保过滤逻辑独立于大模型。后端代码执行的权限校验是确定性的逻辑。

  • 「权限变更时联动失效缓存,具体怎么触发?」 后端系统会监听权限变更的事件。用户的权限维度发生改变时,系统根据权限标识找到对应的缓存键。系统主动清理这些旧的缓存数据。这样能防止用户继续访问已经失去权限的内容。

  • 「多租户共享缓存时,为什么命中缓存后还要再验证一次权限?」 多租户架构极易发生缓存越权事故。系统从缓存池取出数据后,必须提取当前请求的用户身份。系统比对当前身份和缓存内容的权限要求。系统确认权限匹配后才能将数据返回给用户。

回答的坑

误以为大模型能执行严格的权限指令,忽略了必须在检索层做硬过滤。

忘记多租户共享缓存时的二次校验,导致低权限用户读到高权限用户的缓存。

—— 本题完 ——