Agent 身份与最小权限授权:你的 AI 团队正在忽视的安全隐患
大多数 AI Agent 架构都存在一个悄无声息的安全问题,直到出了事才会被发现。你构建了 Agent,用应用现有的服务账户凭证将其接入内部 API,上线生产,然后继续下一个任务。Agent 正常运行,用户很满意。而与此同时,在你的审计日志里,一个服务账户身份正在悄悄触碰 Agent 曾经需要访问的每一条客户记录、每一张账单表和每一份内部文档——却没有任何痕迹说明是哪个用户发起了什么请求,又是为什么。
这不是一个理论风险。当安全事件发生,或者当监管机构询问"3 月 14 日谁访问了这份数据"时,答案每次都一样:[email protected]。每一个操作、每一次请求、每一次读写——全部归结为同一个身份。审计记录在技术上是正确的,但在取证层面毫无用处。
服务账户陷阱
传统的服务间认证建立在一个静态关系 上:服务 A 总是需要权限 Y 来完成工作。权限在初始化时被分配,在设置阶段被审查,之后很少被重新检视。当服务是确定性的时候,这个模型是有效的——一个读取发票、写入支付记录的账单服务,其操作范围是可预测且有边界的。
AI Agent 从三个维度打破了这一假设。
首先,Agent 具有涌现式访问模式。一个客服 Agent 今天可能需要读取 CRM 数据,但下周某个用户让它拉取趋势报告,它就开始查询数据分析仓库。随着你赋予 Agent 越来越多的能力,它可能触碰的数据范围也在不断扩大,初始的权限授予变得越来越过时。
其次,Agent 代表拥有不同权限级别的多个用户进行操作。一个市场分析师和一位 C 级高管可能使用同一个 Agent,但他们在你的系统中拥有截然不同的数据访问权限。当两者都通过同一个服务账户路由时,Agent 的权限就变成了所有用户权限的并集——或者更糟糕的是,与用户权限完全脱钩,仅反映服务账户被预配置时的权限。
第三,Agent 容易受到提示注入攻击。恶意用户、检索语料库中被污染的文档,或被篡改的工具响应,都可以将 Agent 引向其原始设计者从未预期的操作。当 Agent 的凭证权限宽泛时,一次成功的提示注入所造成的破坏范围与权限成正比,而非与意图成正比。
2024 年 Palo Alto Networks 的"Double Agents"研究在 GCP Vertex AI 中具体揭示了这一问题:继承了过于宽泛服务账户权限的 Agent,让研究人员得以从受限的消费者项目横向移动到基础设施层资源,访问了与 Agent 任务毫无关联的源代码和容器镜像。这是架构层面的弱点,而非模型失败——权限的生命周期超出了 Agent 合理需求的任何定义。
