先说结论
RAG 应在检索时根据服务端确认的用户身份和业务范围过滤文档,分块继承来源权限,生成与引用继续使用同一范围。缓存、日志和下载入口也要隔离;权限撤销后应验证旧索引、旧缓存与历史会话无法继续暴露内容。
读完你会得到
- 不要接受模型或前端自行传入的用户角色作为授权依据。
- 父文档权限必须随分块进入检索和引用链路。
- 缓存命中也要符合当前权限,不能只隔离原始文档。
两名员工问同一个问题,一人能看到客户合同,另一人只能看到公开说明。若知识库只在回答提示词中写“不要透露机密”,检索结果仍可能先进入模型或日志。本文把权限检查沿着实际数据路径展开。
配套资料与延伸阅读
- 企业 AI 知识库怎么搭建:从资料治理到 RAG 评测(阅读)
相关方法与实施说明
- Dify 知识库教程:导入资料后,怎样检查检索和回答(阅读)
相关方法与实施说明
- 企业 AI / FDE 服务(了解)
带上脱敏资料与角色范围表,可用于讨论企业知识库的数据接入和权限设计。
先区分系统连接权限与文档权限
搜索服务的 API 访问权限决定应用能否访问搜索系统;文档权限决定当前用户能看哪些内容。应用有搜索凭证,不代表每位用户都拥有库内全部资料。
Microsoft 的 RAG 文档建议在检索时实施访问控制,使用文档级安全过滤,并将检索内容视为不可信输入。下面的分块、缓存和测试方案为本站实施建议,具体平台能力仍需按当前文档确认。
本节依据: [1] Microsoft Learn
用可信身份形成授权范围
身份来自服务端验证的会话或访问 token。租户、用户、组成员和业务范围通过授权服务确认,不能让模型声称“我是财务负责人”就获得财务资料,也不能直接信任请求中的 tenant_id。
对文档标记所属租户、可访问组或对象范围,以及权限版本。权限模型可以采用企业已有机制,关键是检索请求带入经过确认的范围,并对无效或未知范围采取明确的拒绝处理。
MCP 官方安全文档也强调 token 的目标服务与最小权限,状态标识不能替代身份。连接工具完成鉴权以后,仍要执行文档和业务对象层面的授权。
分块后怎样保留父文档的权限
| 字段类别 | 用途 | 遗漏后的问题 |
|---|---|---|
| document_id 与 chunk_id | 关联来源和所有派生块 | 撤回文档时无法清理全部内容 |
| tenant 或业务范围 | 隔离组织或部门数据 | 同名资料或编号相互混入 |
| access_groups / ACL | 检索阶段过滤 | 无权限文本先进入生成上下文 |
| permission_version | 检查权限更新是否传播 | 缓存和旧块继续沿用旧授权 |
| source_version 与状态 | 区分现行、撤回和旧版本 | 引用过期资料或错误条款 |
表中字段名是示例,不是通用标准。分块、摘要和向量都是原文的派生资料,应按同等敏感范围管理。把原文移入受限目录,却留下公开摘要,不能算完成权限调整。
缓存与引用入口是容易漏掉的两处
相同问题的答案可能来自不同权限范围。缓存键或缓存读取条件需要包含租户、授权范围和资料版本等必要约束;更稳妥的实现会在命中后再次验证当前用户能否使用缓存中的证据。不同系统具体策略不同。
答案中的引用链接要再次检查权限。用户有权看一段摘要,不一定有权下载整份合同;工具也不能把内部存储地址或长效访问链接直接放到公开回复。
权限撤销后,要按企业允许的传播时限清理或阻止使用旧索引、缓存和派生内容。已经展示给用户的资料无法通过清缓存自动收回,但新请求与历史会话再次加载时应受到当前权限约束。
缓存答案、会话摘要和生成消息保留来源 document_id、source_version 与适用权限范围。重载历史内容或再次送入模型前,按当前身份复核这些依赖;无法判断敏感来源时,隔离对应历史内容,或用当前获授权证据重新生成摘要。不能只过滤新的检索结果,却继续把旧合同摘要送入上下文。
用负向案例检查是否真的隔离
| 测试条件 | 预期结果 |
|---|---|
| 同一问题,分别使用有权与无权账号 | 无权用户的检索、回答和引用均无敏感内容 |
| 同名文档存在于两个租户 | 只使用当前租户证据,不暴露另一租户存在性 |
| 先有权访问,再撤销组成员资格 | 新请求与缓存命中按当前权限拒绝内容 |
| 父文档撤回,旧分块仍在索引 | 不可继续用于回答,派生数据按流程清理 |
| 改写问题或继续历史对话 | 不得通过改写绕过访问过滤 |
| 查看诊断记录与导出结果 | 诊断人员也只能访问获授权范围 |
检查的不只是最终回答。能看到检索候选、调试信息、引用标题或缓存内容的人,都可能接触敏感资料。负向测试应覆盖这些路径,并记录实际权限版本和环境。
以一份合同的权限变更走完整流程
在隔离环境中建立一份仅项目组可读的测试合同,分成几块并生成摘要。项目成员提问能够引用合同,其他成员只能收到不含合同内容的说明。接着移除一位成员,分别测试新对话、旧对话、缓存和文件下载。
如果新检索正确拒绝,但旧会话继续输出合同摘要,检查历史消息是否未经当前权限验证进入上下文。如果引用下载仍可用,检查链接是否绕过了授权服务。定位具体路径后修复,不只给模型增加“保密”提醒。
对大规模资料库,还要抽查授权信息是否完整继承。缺 ACL 的分块应按明确策略隔离或阻止发布,不能默认开放。
应用边界与准备材料
这套方法适合包含内部制度、客户资料或跨部门内容的知识库。纯公开资料库可以简化用户级授权,但仍应管理内容撤回、版本和来源入口。权限设计不等于完成合规判断,实际资料使用遵循企业已有要求。
开始前整理一份角色与资料范围表,选几份不同权限的脱敏资料,确认授权数据由谁维护、多久生效。没有这份基础信息,搜索组件再丰富也难以实现正确隔离。
常见问题
在生成后把敏感词删掉够不够?
不够。无权限内容可能已进入模型、日志或缓存;应在检索及相关访问路径控制,并将输出检查作为补充。
所有员工都用同一个搜索凭证是否一定不安全?
应用凭证可以统一管理,但服务端仍必须按当前用户执行文档授权,并隔离缓存和记录。共享应用凭证不能意味着共享全部文档权限。
资料来源与核对说明
文章中的行业定义与技术方法尽量引用官方或标准组织资料;表格、清单和决策框架是基于这些资料形成的编辑性整理,不代表来源机构对本站服务的背书。
- Retrieval augmented generation (RAG) and indexesMicrosoft Learn
用于检索时访问控制、来源元数据、多轮检索与不可信输入的说明。
- Security Best PracticesModel Context Protocol
核验 URL 对应 2026-07-28 版本。协议鉴权不等同于业务对象授权;本文示例权限矩阵为本站设计。
带上流程、样例和目标,添加企业微信沟通。先确定项目范围与验收方式,再安排实施。


