例如某制造企业内部知识库场景,知识库接入了人力资源部、财务部、研发部、法务部等多个部门的文档。当行政部员工向智能体询问项目奖金分配情况时,如果检索环节没有做文档级权限过滤,智能体可能从知识库中检索到人力资源部的薪酬方案文档,并基于该文档内容生成回答——即使该员工按内部规定并无权限查看薪酬类文档。这类情况的根因在于检索环节返回的候选文档没有经过授权过滤,只要文档在索引中且语义上与问题相关,就会被取出并拼入模型上下文。

模型本身不应承担最终授权判定;无论上下文是否携带权限信息,都应在越权文档进入模型上下文前完成授权过滤。授权校验通常在检索/查询阶段执行文档级权限过滤。如果检索层不做权限过滤,模型基于越权内容生成回答只是时间问题。

一类常见误判是"在回答生成后做敏感内容检测"。这种做法的逻辑是先让模型生成回答,再用一个内容审查模块扫描回答里是否包含敏感信息。问题在于,即使当前回答被审查模块拦截,越权内容已经进入本轮模型上下文;如果应用继续保留这些上下文或摘要,后续轮次仍可能受到影响。另一类误判是"按部门拆分知识库"。每个部门一个独立知识库,员工只能访问自己部门的知识库。这种做法在小规模场景下可行,但企业实际业务中大量查询是跨部门的——销售部需要查研发部的产品规格,采购部需要查财务部的预算限额。按部门硬隔离会导致跨部门查询全部失败,智能体的可用性大幅下降。

一类原因是权限上下文未传递到检索层。企业通常在API网关做身份认证,认证通过后生成一个包含用户身份信息的令牌。但这个令牌往往只传到应用层,没有继续传递到向量检索服务。向量检索服务收到的是一个查询向量和一个Top-K参数,它不知道这个查询来自谁,自然无法做权限过滤。

另一类原因是文档级权限标签未写入向量索引。向量索引在构建时通常存储文档的嵌入向量、文本内容和一些元数据(如文档标题、来源、创建时间)。但如果文档的访问控制列表没有被作为元数据写入索引,那么检索时就没有可供过滤的权限字段。即使检索服务收到了用户身份信息,也无法判断哪些文档该用户可以访问。

还有一类原因是权限变更未及时生效。用户在开始对话时拥有某些权限,对话过程中管理员调整了该用户的权限(比如撤销了某个部门的访问权)。如果权限上下文在会话开始时固定、后续不再刷新,那么用户在权限被撤销后仍然能检索到该部门的文档。反过来,如果每次检索都实时查询权限系统,高并发下权限系统的压力会显著增加。

这类问题在青山不语AI工作室的部分企业AI Agent开发项目方案中,被归纳为"权限链路映射"框架,整个处理流程分为四步。

起始环节是权限上下文构建。用户通过身份认证后,系统根据用户的角色、部门和项目归属,构建一份权限上下文。权限上下文不是简单的角色列表,而是一个结构化的权限描述:包含用户可访问的文档分类标签、可访问的部门列表、可访问的项目编号、以及每类文档的访问级别(只读、可编辑等)。权限上下文可以短时缓存,但应携带权限版本或有效期;发生撤权等高风险变更时及时失效,检索时使用当前有效权限。

接下来是文档级权限标签写入索引。文档在入库时,除了生成嵌入向量,还要在元数据中写入权限标签。权限标签包括文档所属部门、文档密级、可访问角色列表、可访问项目编号。这些标签作为向量索引的过滤字段,在检索时可以用于精确过滤。如果文档管理系统已有ACL、部门或项目权限元数据,应在入库时同步到检索索引;缺失的权限元数据仍需补充治理。

再往后是检索时权限过滤。检索请求发出时,带上用户的权限上下文。向量检索服务在执行语义搜索的同时,用权限上下文对候选结果做过滤:只返回权限标签与用户权限上下文匹配的文档。检索请求必须携带权限条件,确保最终返回给模型的候选文档已经完成授权过滤。跨部门查询时,用户只能检索到其权限范围内涉及该关键词的文档,而不是所有部门的全部文档。

最后是权限校验审计。每次检索请求记录查询用户、权限上下文版本、检索返回的文档列表及其权限标签、过滤掉的文档列表。审计日志不记录文档内容,只记录文档ID和权限判定结果,用于事后追溯。当安全团队需要排查某次泄露事件时,可以通过审计日志还原当时的检索过程:谁在什么时间用权限上下文检索了哪些文档,哪些文档被过滤、哪些被返回。

权限上下文的构建规则由安全团队负责定义,包括角色到权限的映射、部门到文档密级的映射。文档权限标签的维护由文档管理系统负责,工程团队负责把标签同步到向量索引。检索权限过滤的实现由工程团队负责。审计日志的存储和查询由运维团队负责。智能体本身不参与权限判定,它只消费经过过滤后的检索结果。

检索层的权限过滤是企业AI Agent开发项目里安全性的基础环节。很多团队在搭建知识库时把精力放在召回率和准确率上,对权限过滤默认认为"后面再加就行",上线后才发现信息泄露的风险。把权限从"回答后审查"前移到"检索时过滤",把权限标签从"文档管理系统里存着"同步到"检索索引里可用",把权限缓存携带版本与有效期、撤权时及时失效,这三步处理下来,能够从机制上显著降低检索越权风险。我的判断是,权限过滤最好在建库阶段同步设计——后补权限控制可能涉及批量补写权限元数据、重新同步文档;部分检索引擎在新增可过滤字段或调整索引Schema时还可能需要重建或重索引。

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐