林子豪的 PKM
← 返回 Blog

权限也是 Context 的一部分

Agent 能看到什么,本身就是权限问题。Context 管理不能只考虑相关性,也必须考虑可见性、来源边界和派生数据权限。

2 min read系列 · context
aiagentsecurity

agent 的权限不只是“能不能执行某个工具”。

能看到什么,本身也是权限。

如果一个 agent 没有权限阅读某份文档,那这份文档不应该进入它的 context。如果一个用户没有权限访问某个项目资料,系统也不应该先把资料检索回来,再靠 prompt 要求模型“不要泄露”。

这件事需要在 context 管理里明确处理。

很多人谈 agent 安全时,会先想到删除文件、执行命令、发邮件、转账这些动作权限。这些当然重要。但在 agent 系统里,读取权限同样重要,因为模型会基于它看到的材料生成回答、计划和工具调用。

只要信息进入了 context,它就已经影响了模型。

所以权限过滤应该尽量发生在检索、读取、组装之前,而不是发生在模型之后。

公司知识库是一个典型例子。

如果知识库有 ACL,检索时就应该带上用户或 agent 身份。不能先全库召回,再把结果扔给模型,然后要求模型自己判断哪些内容不该用。

因为模型不是权限边界。

同样,summary、embedding、cache、memory 这些派生数据也要考虑权限继承。一份敏感文档不能因为被总结成摘要,就突然变成所有人可见。一个由敏感资料生成的 memory,也不能脱离来源权限随便注入别的任务。

权限还和 subagent 有关。

父 agent 有权限,不代表 subagent 应该继承全部权限。一个只负责检查 CSS 的 subagent,不应该自动获得部署权限。一个只负责读公开文档的 subagent,也不应该拿到内部客户资料。

更稳的做法是按任务下发最小权限:

- 能读哪些来源

- 能写哪些位置

- 能调用哪些工具

- 哪些动作必须审批

- 权限什么时候过期

- 结果能不能带回主 context

这里还有一个容易忽略的点:need-to-know。

agent 有权限看,不代表当前轮应该看。一个员工有权限访问公司资料库,不代表每次写邮件都要把整个资料库塞进 context。相关性和权限是两道门:没有权限一定不能进,有权限也要看当前任务是否需要。

所以 context 管理至少要同时回答两个问题:

这条信息和当前任务相关吗?

当前身份、当前任务、当前阶段允许它进入这一轮吗?

把权限看成 context 的一部分后,agent 安全就不再只是“工具调用前要不要确认”。它还包括模型输入层的治理:哪些材料可见,哪些来源可信,哪些派生信息继承原权限,哪些内容只能在隔离环境里使用。

如果 context 是模型这一轮的工作台,那么权限就是决定哪些材料可以被摆上工作台的边界。