Cloudflare 提出用严格身份代理、持续中介和有状态信任三角构建任务作用域 Agent 的安全架构,替代传统静态权限模型。
过去十二年间,企业安全逐步摒弃了对网络的信任。BeyondCorp 的核心论点是:一个请求来自企业内网还是公共互联网,不应成为是否允许访问的依据——身份和设备健康状态才是。这套模型最终胜出:它如今支撑着零信任(Zero Trust)的大部分实践。
Google 的 BeyondCorp 假设了一个特定的主体:坐在设备前、以人类速度行事的人。各企业正在部署智能体(Agent),这是一种软件主体,能代替我们进行推理、行动并深入各类系统。一次限定范围的任务级智能体运行是短暂的——工作完成后即结束。一个长期运行的智能体服务可能处理大量此类任务,且数据移动速度远超人类。
我们为人类构建的管控机制在指向智能体时不会剧烈失效。它们静默地失败——授予过多权限、看到过少信息、信任时间过长。
本文提出一种面向智能体的访问模型:智能体访问模型(Agent Access Model,AAM)。我们描述该模型及其组件的构建方式,然后通过一个具体示例将当今可用的单主体控制与更复杂的多人访问控制问题区分开来。
当前大量工作试图让每次访问决策更智能。AAM 采用了另一种思路:缩小智能体的能力集,使需要判断的内容在源头上就更少。
十年前,企业安全领域最难回答的问题是:这个请求来自哪里,我是否信任那个位置?BeyondCorp 的回答是:你根本不应该信任那个位置。你认证用户、审查设备,然后针对该具体请求做出访问决策。位置成为众多信号之一,而非裁决。
这种重新框架化的思路之所以有效,是因为主体是清晰可辨的。人类每天早上登录,携带一两台设备,以人类速度工作,系统能够对涓涓细流般的访问决策进行推理。我们围绕这种主体形态构建了整个行业:单点登录、设备姿态、条件访问、会话风险评分。
但智能体并不具备这种形态。
一个智能体服务可能运行许多任务。在本文中,一个智能体即一次任务级运行。我们用任务执行图(task execution graph)来指代属于该运行且受相同能力上限和信任级别约束的所有工作。同一套框架若解决不同任务、消费不同事件、或在次日计划上运行,则会创建一个新图。一次人类指令("核对这两本账簿"、"分流夜间告警"、"打开一个修复此 bug 的 Pull Request")可能调度一个或多个此类任务。每个任务可能需要访问数据库、源代码仓库、日志系统、工单系统、知识库、文档或电子表格。该任务可能需要广泛的访问权限。而且是现在就需要,为这个任务,理想情况下不能多一秒。
智能体必须拥有足够且不多余的权限来完成其任务。最小权限原则与访问控制一样古老。改变的是执行的速度和频率要求。对于人类员工来说,最小权限通常是一项每季度审查一次的策略。对于大量短生命周期智能体,它是一个实时运行并留下审计日志的系统。
智能体看起来像服务账号,或者像速度极快的用户。四种特性使得这两类现有控制机制都不适用。
智能体是短暂的。凭证是持久的。 服务账号是为长期运行的软件设计的:工资单系统、夜间批处理作业。它们通常配备长期有效的密钥、广泛的作用域和罕见的轮换。应用于短生命周期智能体时,这些凭证会超出其颁发目的的工作生命周期继续存在,残留在内存、日志或环境变量中,可被重放攻击。凭证的寿命应与任务的寿命相匹配。对于智能体,这通常只有几分钟。
智能体以机器速度行动。 为人类活动调优的异常检测、速率限制和数据丢失控制可能反应过慢。一个拥有数据库连接和出站网络路径的智能体,可以在人类调优的控制完成采样之前就读取一张表并将其 POST 到外部端点。因此,预防性控制必须在行动点在线(inline)运行。
提示词不是边界。 团队通常会告诉智能体"不要访问生产环境"或"永不向第三方发送数据"。这些指令有助于塑造行为,但无法强制执行访问。模型可以被注入到其读取数据中的内容所操纵,或者可能自行产生不安全的行为。推断的意图可以影响风险决策,但攻击者可以通过同一段文本塑造该信号。执行权属于调解工具调用的框架(harness)和调解数据包的网络层。你能用话语说服自己越过的边界就不是边界。
智能体在多次跳转中组合权限。 一个智能体可以调用一个工具,该工具再调用另一个智能体,后者代表原始人类调用 API。在这条链的某个地方,"这是为谁做的"和"允许做什么"的答案可能消失。现有原语处理单跳委托比处理多跳或涉及多人的场景要好得多。
智能体访问模型始于一条规则:不要信任这次运行。对每个操作都根据任务及其累积状态进行授权。
BeyondCorp 将隐式信任从网络中移除。AAM 将隐式信任从任务执行图中移除。一个操作的授权不会延续到下一个操作。每个操作都根据三件事进行评估:智能体是谁、它被授权执行什么任务、以及图中已经访问过哪些与策略相关的资源。这种累积状态只能减少图的剩余能力。
Google 的 Beyond Zero 做出了相同的开局动作:将信任边界从应用程序缩小到单个操作,并在机器速度下做出决策。Beyond Zero 在每个授权决策背后放置了一个推理引擎。AAM 绑定了该引擎必须评判的能力集。两种方法可以结合使用。对于跨越声明的调解边界的操作,AAM 记录每个授权决策背后的智能体、主体和任务。
AAM 有五条原则:
凭证是短命的且绑定的。 智能体收到一份为该任务铸造并在任务结束时过期的凭证。令牌是发送者约束的(sender-constrained),因此仅凭被窃取的令牌无法在没有框架持有的证明密钥的情况下重放。
执行落在框架和网络层,而非提示词。 策略在实际发生工具调用和网络请求的地方应用。提示词是你表达意图的地方。永远不是在边界执行的地方。
人类监督是例外的。 审批仅保留给值得审批的决策。让一个人审批每一步会产生疲劳和反射性点击。
授权从证据中审查。 直接捕获的活动可以显示任务模板是否过宽或过窄。系统提议一项变更供审查,批准的变更应用于未来任务。它永远不会扩大当前运行中的任务。
能力状态单向移动。 当发生声明的受保护事件时,信任棘轮(Trust Ratchet)根据策略移除整个任务执行图中的能力。被信任棘轮移除的权限只在新的授权任务中才能恢复。
该架构有四个主动控制和两个支持系统。主动控制负责管理任务。智能体活动日志和授权审查循环(Grant Review Loop)则作用于其留下的证据。AAM 定义了这些组件如何组合以及每个组件必须保证什么。这是一个参考架构,而非线级别的规范。
在调度时,智能体身份代理发出一份限定任务范围的短命可验证凭证。该凭证在不晚于任务结束时过期。
该凭证是任务范围的:它编码了"这是智能体 X,代表主体 H,执行任务 T"。它也是发送者约束的,绑定到框架持有的证明密钥。被泄露的令牌仅凭自身无法在缺少该密钥的情况下被重放,而模型永远收不到这个密钥。
现有标准提供了这两种原语。OAuth 2.0 令牌交换(RFC 8693)定义了一种通过安全令牌服务(Security Token Service)进行的交换,可以产生一份按受众、资源或作用域收窄的令牌。授权服务器的策略决定其颁发内容。令牌的 act 声明标识当前执行者,而嵌套的 act 声明可以保留先前执行者以用于归因。DPoP(RFC 9449)将 OAuth 令牌绑定到客户端密钥,并在每个受保护的请求上要求提供证明。该证明涵盖 HTTP 方法和目标 URI,但不涵盖请求体、查询参数或工具参数。因此框架必须授权一个不可变的请求表示并执行该相同请求。
4.2 任务作用域访问引擎
凭证确定了智能体的身份及其正在执行的任务。任务作用域访问引擎逐请求地决定该身份是否可以对目标资源执行该操作。它将任务本身作为决策的一等输入,扩展了 BeyondCorp 的访问控制引擎。
它的职责是使最小权限既是默认值也是上限。任务授权的表述可能是:"AI 智能体 X,为任务 T,可在接下来十分钟内读取表 A、B 和 C。"这就是边界。未声明的操作一律拒绝。
边界从何而来?任务的作用域在智能体被派遣时声明,而非由智能体在运行时协商。在常见情况下,由人或代表行权的人的系统一次性定义任务模板:"对账任务可读取这三张表并向此渠道发帖。"每次派遣实例化该模板。模板是配置单元,因此策略数量跟踪的是不同任务的数量,而非运行次数。在派遣时,访问引擎将批准模板与发起主体和智能体服务的权限交叉,然后应用资源所有者及租户策略。该交叉点即为任务的能力上限。智能体可以申请更少,信任棘轮也可以移除能力。更广泛的权限需要重新授权的任务。
对于每个操作,适配器构建并冻结完整的请求表示,包括操作、资源、影响作用域的参数、租户和接收方。访问引擎针对当前能力上限授权该表示,适配器则执行相同的表示。凭证续期重新验证原始上限和当前信任棘轮状态。它无法恢复已移除的能力或延长最大任务生命周期。
4.3 调解层(harness 与网络)
调解层管理两个边界:harness 暴露的工具路径,以及通过部署网络边界强制转发的出站流量。
第一个是 harness,即中介智能体工具调用的运行时。它通过声明的工具路径拦截调用,针对任务策略检查它们,并发出执行事件(受 4.6 节所述收集缺口限制)。harness 可以区分读取和更新,并约束影响作用域的参数。MCP 通过定义的传输标准化请求,并为 HTTP 传输提供 OAuth 资源服务器边界。其授权层不定义 AAM 的每工具策略或参数策略。harness 或工具服务器必须执行该策略。远程 MCP 服务器仍然是独立的执行边界,拥有自己的下游访问和出口。
第二个是网络层,即智能体连接所走的出口路径。如果智能体仍能向互联网打开任意套接字,那么一套完美调解的工具调用毫无意义。网络层控制决定哪些目的地和协议对经由它们的流量可达,包括来自子进程和委托运行时的流量。网络层通常可以查看目的地和传输属性。只有当协议暴露了该信息或流量终止于可信调解点时,它才能强制执行 HTTP 方法、租户、接收方或应用程序操作。
只有执行策略的 harness 才名副其实。它的默认策略是拒绝:工具调用被允许是因为任务作用域策略命名了它,而非因为智能体请求了它。同样的原则适用于网络层。MCP 升级授权也保持在任务的能力上限内。作用域挑战无法恢复被信任棘轮移除的能力,也无法为活跃任务增加权限。
两个执行点以不同方式失败。利用 harness 漏洞的请求仍应符合网络策略。网络配置错误不应授予工具访问权。两个实现在可能的情况下应独立失败,尽管它们共享任务策略和信任棘轮状态。该控制平面是一个公共依赖项,必须故障关闭。
4.4 信任棘轮
信任棘轮使信任变为有状态。其主要目的是限制数据泄露。"信任"是任务执行图仍能做什么的简写,而非对模型意图或可靠性的判断。如同棘轮一样,其能力状态在任务期间只能收窄。
策略预先声明触发棘轮的保护事件、每次转换应用的限制,以及必须观察新状态的组件。保护性读取可能会移除外部目的地,同时保留狭义类型的内部输出。另一个任务可能在某类查询之后收窄数据库作用域。
图可以以受限状态启动。在凭证、工具或出口启用之前,派遣策略评估初始提示、恢复的内存和转移的输入。具有未知或未分类输入的任务会启动受限状态或故障关闭。
我们最初为人构建数据丢失控制,人以人类速度和数量泄露数据。一个已读取系统记录同时保留出口路径的智能体,可以以机器速度窃取数据。信任棘轮在释放敏感响应之前收窄该路径。"更窄"的含义由策略命名,而非留给智能体或模型解释。对于网络,这可能是目标允许列表。对于数据,这可能是更窄的资源或查询作用域。各轴预先声明,因此运维人员可以准确查看每次转换移除的能力。
并行工作使这不仅仅是一个简单的两状态转换。Harness 持有响应直到所有执行点采用新状态。状态存储使用比较并设置或单一写入器来序列化更新。每个组件停止使用旧状态、清除缓存的决策,并确认新版本。Harness 取消或排空旧工作。网络执行关闭或重新授权持久连接。Harness 仅在所有确认到达后才释放响应。任何冲突、超时、错误或缺失确认都会阻止响应。转换故障关闭。
同一规则适用于流。当分类已知时,转换在流开始前完成。如果分类取决于返回内容,响应保持缓冲直到分类和转换完成。受限状态适用于整个任务。需要已移除能力的工作作为跨全新隔离边界的新授权任务启动。受保护数据仅可通过至少与其源分类相同或更严格分类的派遣输入进入该任务。调度器在该状态下初始化新图,除非授权的降级步骤产生更低的分类。
信任棘轮为运维人员提供了可检查和测试的确定性能力边界。它不证明每个允许的输出都是安全的。目的地策略、接收方作用域、类型化操作和有效载荷约束仍然重要。宽泛的棘轮策略将拒绝良性活动和恶意活动,尤其是在分类和目的地策略粗糙时。这些拒绝是为下一个任务模板提供细化依据的证据。
图 1. 信任棘轮将受保护数据保留到任务声明的限制生效为止。

授权审查循环
最小权限始终存在运营问题。必须有人决定"最小"的含义。策略所有者可能过度授权以避免工单。对于大量短生命周期智能体,每次运行手动调整权限是不切实际的。
授权审查循环使用执行点捕获的活动,根据实际运行情况审查任务模板。它提出两个问题:
Is this task template under-permissioned? A recurring denial correlates with failed work, and the task definition and resource owner support the request. Propose widening it, with the evidence attached.
反复拒绝本身就说明不了什么。攻击者可以重复一个被禁止的操作,直到它看起来像常规操作;而一个未使用的权限可能覆盖一条罕见的恢复路径。循环将相关证据附加到针对策略所有者的变更建议中。已批准的变更仅适用于未来的任务模板。活动任务保持其原有的权限上限和 Trust Ratchet 状态。审计人员读取的策略就是实际运行的策略。
The Agent Activity Log
AI 智能体活动很难从普通的应用日志中重建。AI 智能体活动日志是一份仅追加的、可查询的记录,由 Identity Broker、Access Engine、harness、Trust Ratchet 状态存储和网络执行点捕获。它不依赖于模型自身对其行为的描述。
SIEM 仍然是这些记录的最终目的地。问题出在数据源。AI 智能体的活动通常由应用程序代码在执行路径之外发出,其格式无法区分读取与删除,也无法将动作与其代表行事的用户关联起来。AI 智能体活动日志的贡献在于提供了一份由外部控制点馈送的通用事件契约,专为实际调查中所提的问题而构建。
AI 智能体是有仪表化的软件。其记录可能包含关于人员、客户和其他组织的信息。这些记录仍须遵守适用的隐私、数据访问、数据保留和数据治理要求。有用的日志记录不需要 wholesale 捕获 prompts、推理过程、响应或数据包内容。一条组织保留多少记录、由谁读取、保存多久,仍是策略层面的决策。
权威的执行证据不能仅仅依赖模型自我报告。攻击者可以通过影响模型行为的同一输入来影响模型的描述。模型生成的报告可以作为外部控制点发出事件的补充,但不能替代它们。
一份有用的记录保留两个关键区别。首先,它记录每个覆盖的操作是读取、创建、更新还是删除了数据,以及它触及的范围。一个读取了一万条记录的 AI 智能体与修改了一万条的 AI 智能体风险截然不同。其次,它将每个覆盖的执行事件追溯到任务及其发起主体或有效权限,使"这个 AI 智能体做了什么?"和"代表此人做了什么?"这两个问题都在记录的边界内可回答。AI 智能体活动日志将事件调查的这部分从考古项目变成了查询。
每条记录识别任务执行图、任务模板、发起主体、当前执行者、执行组件、操作、请求和解析的范围、资源或目标、策略结果、Trust Ratchet 版本、结果和关联标识符。当资源报告这些信息时,记录还包括返回的范围、分类证据和传输字节数。
覆盖范围遵循中介边界。harness 可以记录它所中介的操作和参数。网络可以记录它观察到的连接,通常无需应用负载语义。加密流量、边界外的活动以及遥测失败会造成采集缺口,部署时应明确说明。部署应最小化敏感负载,限制对日志的访问,并定义保留期。如果需要篡改证据,存储系统必须提供。
使用目标 SIEM 支持的安全事件 schema。OpenTelemetry 可以携带和关联这些事件,包括其正在开发中的生成式 AI 和 AI 智能体活动约定。Open Cybersecurity Schema Framework 可以规范化安全相关记录以供分析。两者都可以减少集成工作。AAM 仍然需要一个跨平台的通用事件契约。
How the pieces fit together
六个组件形成一条主动路径和一条支持路径。在调度时,Access Engine 建立能力上限,Identity Broker 为该上限发放任务范围的凭证。在执行期间,Access Engine、Mediation Layer 和 Trust Ratchet 决定图还能做什么。它们直接捕获的事件流向 AI 智能体活动日志,而 Grant Review Loop 使用该记录来提议对未来任务模板的变更。
Figure 2. The Agent Activity Log and Grant Review Loop support later policy changes.

主动控制 —— Access Engine、Identity Broker、Mediation Layer 和 Trust Ratchet —— 位于模型之外。AI 智能体活动日志和 Grant Review Loop 是请求路径之外的支持系统。Prompt 文本不授予凭证或权限。在第 4.3 节描述的中介路径内,它无法扩大任务授权或逆转 Trust Ratchet。这一保证依赖于执行和流量无法绕过中介,以及共享控制平面故障时默认关闭。
因此,Access Engine、harness 和网络必须共享当前任务身份、能力上限和 Trust Ratchet 状态。可编程网络和计算平台可以将凭证发放、工具中介、出口和 Trust Ratchet 放置在 AI 智能体已走的路径上,以机器速度运行。
这些组件还需要共享词汇表。授权、收窄步骤和日志条目应该对操作、资源或目标、范围、任务和状态版本使用相同的名称。通用事件契约可以关联 Access Engine、Trust Ratchet 和 AI 智能体活动日志,并暴露不匹配之处。
Example: Blocking data exfiltration
以一个常规的 AI 智能体任务为例。财务团队运行一个夜间对账 AI 智能体。它按计划从授权的处理器 API 收集结算报告,与两个生产账本进行比较,然后向消息频道发布简短摘要。供应商支持操作处理已定义的异常。这个任务枯燥但有用,且触及记录系统。错误配置可能将一个常规的 CSV 导出变成大规模数据泄露。