当前位置: 首页 > news >正文

Cloudflare 开源 Cloudflare OS:智能体访问模型 AAM 把「信任」从系统缩小到一次动作

三个月前,Cloudflare 的销售团队自己动手用 AI 搭了一个超级应用:把报价生成、合同起草、CRM 录入、审批跟进全部串进同一条工作流,业务员只需要对着对话框说一句"给这家客户做一份新报价",应用就会自动完成后续所有环节,从查价格表到起草条款再到写入系统,全程不需要人工干预。

等到 IT 部门发现这件事的时候,这个应用已经被全公司几千名员工日常使用,甚至没有人能说清楚它到底碰过哪些内部系统,也没有人知道它的权限边界画在哪里。它就像一株在无人知晓的角落长起来的植物,等被人看见时,根系已经伸进了好几块土壤。

这听起来像是一个美好的效率故事,直到有人问了一个让所有人都沉默的问题:这个 AI 应用能读写合同系统,它凭什么?它的权限是谁给的?它执行的每一步操作,有没有人验证过该不该做?当时没有人能回答,因为传统权限体系里根本找不到这些问题的坐标。

8 月 5 日,Cloudflare 把内部这套经过实战检验的东西正式开源为 Cloudflare OS,同一天发布论文《The Agent Access Model》,提出了一套面向 AI 智能体的访问控制模型 AAM。这不是一次普通的开源,它把 Agent 安全的讨论从提示词对抗直接拉进了系统层治理的战场,值得每一个做 Agent 的人认真读一遍。

要理解 AAM 为什么出现,先看传统权限模型为什么失灵。过去二十年,企业权限体系的核心假设是:执行者是确定的人。人登录系统,系统分配角色,角色绑定权限,每一次敏感操作都留下操作者姓名,出了问题可以定位到具体的人。

这个模型在人类员工时代运转良好,因为人可以培训、可以追责、可以记住规则,人的行为天然受到社会规范的约束。但 Agent 时代把第一个假设直接击碎:执行者变成了模型,它没有身份焦虑,不会因为昨天刚被警告过就收敛行为,也不会主动判断这件事超出我的职责范围。

模型只会沿着任务指令执行,直到完成或者被硬性阻断。它不会觉得哪个操作不合适,不会因为权限太大而感到不安,更不会在深夜反思自己今天的行为。指望模型自律,等于把安全建立在概率之上,而安全工程最忌讳的就是概率。

论文把 Agent 与传统执行者的差异归纳为四个特性,第一个是短暂性。Agent 的会话、任务、运行环境都是临时存在的,任务结束一切消散,这意味着昨天为某个任务签发的凭证,今天可能没有任何主体认领,它变成一把悬空的钥匙,谁捡到谁用。

第二个特性是机器速度。人类点击一次授权按钮需要几秒钟,而 Agent 一秒钟可以发起几十次请求。如果沿用每次操作都要人工审批的老路,审批队列会瞬间被淹没,业务直接停摆;如果跳过审批,又回到了没有任何防护的裸奔状态,两条路都走不通。

第三个特性是提示词非边界。很多人以为在系统提示词里写"不要访问财务系统"就安全了,但提示词只是模型的行为建议,不是安全边界。越狱、提示注入、工具返回内容里隐藏的指令,都可能让模型做出提示词明确禁止的动作,而且这些攻击手段还在不断进化。

第四个特性是跨跳组合权限,这是最隐蔽也最危险的一个。一个任务往往要依次调用数据库、代码仓库、邮件服务三个工具,每个工具都按最小必要分配了独立权限,但三个权限组合起来,可能形成一条越过所有边界的通路。

举个具体的例子:从只读数据库里读到内部文档,再借邮件服务的权限把文档发给外部地址,每一步单独看都合规,整体却完全失控。这就是组合攻击,它不攻破任何单一防线,而是把多个合法权限拼接成一条非法通路,传统审计事后都很难发现。

AAM 的核心规则只有一句话:不信任运行,每个动作都在执行的那一刻实时校验,而不是在任务开始时一次性授权。信任不再是静态的、授予之后就长期有效的东西,而是每一次动作都要重新证明的东西,任何一次证明失败都会立即中断执行。

校验的依据是三个维度:智能体身份、授权任务、已触达资源。身份回答谁在执行,任务回答它被授权做什么,已触达资源回答它这一路已经碰过什么,三个维度共同决定当前这个动作是放行还是拒绝,缺一个维度都不做决定。

这是 AAM 与传统模型最本质的区别:信任边界从应用缩小到了单次动作。传统模型里,权限绑定在应用和系统之间,应用拿到权限后做什么都行;AAM 里,权限绑定在动作上,应用本身不再拥有任何长期有效的权限,每次调用都是独立的裁决。

为了让每个动作实时校验能够落地,AAM 引入了任务执行图的概念。Agent 的一次任务被拆解成一张图,图的每个节点是一次工具调用或资源访问,每条边是动作之间的依赖关系,授权不是对着整张图做一次判断,而是每个节点到达时单独判断,互不影响。

任务执行图带来的一个直接好处是故障隔离:图中任何一个节点的授权失败,只会中断这条分支,不会连累整张图的其他部分。更关键的是,这张图本身就是审计的骨架,事后复盘时顺着图走一遍,Agent 的每一步行动都清清楚楚。

支撑动作级授权的第一件工具是任务范围凭证。任务启动时签发一张短命凭证,凭证里写死这个任务允许调用哪些工具、访问哪些路径、读取哪些资源,任务结束凭证立即作废,不进入任何长期存储,也不可续期,更不可能被别的任务复用。

凭证的设计遵循最小必要原则,只给当前阶段够用的权限,不给整个任务全周期的权限。这样即使凭证在任务中途泄漏,攻击者拿到的也只是当前阶段这一小片权限,而不是整个任务的全部权限,损失被限制在最小范围。

第二件工具是信任棘轮。直觉上任务越深入,Agent 应该获得越多信任,AAM 反其道而行,权限随任务进展单向收紧。每完成一个阶段,凭证里的可用范围就缩小一圈,直到任务结束时权限归零,中途被劫持也拿不到越来越大的权限。

信任棘轮这个名字取得很形象:棘轮只能向前转,不能倒退。权限也一样,只能随任务推进而收缩,不能因为任务需要临时扩张。任何需要扩张权限的请求,都必须重新走一遍完整的授权流程,而不是在现有凭证上加一行。

光有模型和论文还不够,Cloudflare OS 把 AAM 落成了可部署的工程实现。权限的执行者是 Gatekeeper,每一个内部服务一个实例,Agent 想调用任何服务,请求必须穿过对应服务的 Gatekeeper,否则直接拒绝,没有第二条路可走。

Gatekeeper 的工作只有三件事:校验任务凭证是否有效、检查本次请求路径是否命中凭证白名单、把每次放行和拒绝都写入审计日志。它不做任何智能判断,只做确定性的规则匹配,因为安全机制越简单越可靠,越复杂越容易出漏洞。

资源观察日志是 AAM 里被低估的一环。每一次放行都留痕,事后可以完整复盘一个 Agent 从任务开始到结束碰过哪些系统、读过哪些数据、做过哪些变更,没有日志的授权体系等于裸奔,因为出了事你连追责的入口都没有。

这里要特别说清楚 Gatekeeper 和 MCP 的关系。MCP 协议解决的是 Agent 能调用什么工具,Gatekeeper 解决的是这次允不允许调用,协议和能力描述归 MCP,策略和授权归 Gatekeeper,两者严格分离,互不越界,各管一摊。

这种分离是刻意的架构选择:MCP 是生态标准,应该保持通用;授权是企业策略,应该保持私有。把两者耦合在一起,要么生态被企业策略绑架,要么企业策略被生态标准稀释,两头都不讨好。

下面这段代码是 Gatekeeper 的最小实现,跑在 Cloudflare Workers 上,可以直接部署到自己的账户里实验。它做的事情严格限定为三件:解析任务凭证、校验请求路径、写审计日志,没有任何多余的分支。

// Gatekeeper: 每个服务一个实例,拦截 Agent 的每一次工具调用 export default { async fetch(request: Request, env: Env): Promise<Response> { const taskToken = request.headers.get('x-task-token'); if (!taskToken) return new Response('missing task token', { status: 401 }); // 1. 解析任务范围凭证:里面写死允许的动作 const scope = await env.KV.get(`task:${taskToken}`, 'json'); if (!scope) return new Response('task expired', { status: 403 }); // 2. 动作级校验:请求路径必须命中白名单 const path = new URL(request.url).pathname; if (!scope.allowedPaths.some(p => path.startsWith(p))) { await env.AUDIT.put(crypto.randomUUID(), JSON.stringify({ task: taskToken, path, decision: 'deny', ts: Date.now() })); return new Response('path not in task scope', { status: 403 }); } // 3. 放行并写审计日志 await env.AUDIT.put(crypto.randomUUID(), JSON.stringify({ task: taskToken, path, decision: 'allow', ts: Date.now() })); return env.UPSTREAM.fetch(request); } }

这段代码只有三十行左右,但已经把 AAM 的三个核心机制都装进去了:凭证不存在就直接拒绝,路径不在白名单就拒绝并记录,放行也要写日志。把它挂到任意上游服务前面,一个受保护的工具就诞生了。

注意一个容易被忽略的设计:deny 和 allow 都写日志。很多团队只记录拒绝,不记录放行,结果复盘时只能看到 Agent 被拦了几次,看不到 Agent 到底干了什么,AAM 要求双向留痕,放行日志才是事后审计的主料。

凭证里存什么也很有讲究。示例里只存了 allowedPaths 一个字段,实际生产里还要存任务 ID、签发时间、过期时间、允许调用的上游主机名,凭证本身要短命,示例里 KV 的键就是任务令牌本身,任务结束删键,凭证立即失效。

再看 Cloudflare OS 这个平台本身。它不是又一个聊天机器人界面,而是一个可部署的 AI 工作区:每个员工拥有一个基于公司上下文和技能库的智能体工作区,可以创建自己的微型应用,应用自带隔离数据库、实时能力和访问控制,全程零信任默认。

平台的底座是 Cloudflare 已有的基础设施:Workers 提供隔离运行时,Access 提供零信任身份验证,AI Gateway 统一管理模型调用和成本,MCP Portals 把内部工具以 MCP 协议暴露给 Agent,这些组件在 Cloudflare OS 之前各自独立存在,OS 把它们编排成了一个整体。

Gatekeeper 就插在 Agent 和每个内部服务之间。Cloudflare 官方文档里的表述很直接:Gatekeepers 把每个 Agent 的访问范围收缩到用户本来就能看到的东西,并附带完整的审计、成本控制和模型选择能力,权限只减不增。

最值得品的是 Cloudflare OS 的五项设计原则,其中有一条是宪法级别的:权限不因 AI 扩大。员工能看什么,他的 Agent 最多也能看什么,AI 永远不会获得比人类操作者更大的权限,这条原则把整件事的天花板定死了,后面所有机制都是它的展开。

另一条原则是人负责输出。Agent 可以起草、可以执行、可以归档,但最终对外发布和关键决策的确认权留在人手里,这不是保守,而是把责任边界画清楚:机器负责效率,人负责责任,出了问题知道找谁。

还有一个原则值得单独说:面向工程师和非工程师同样提供支持。销售、市场、财务的人不需要写代码,用自然语言就能构建自己的 micro-app,工程师则可以直接写 Workers、自定义 Gatekeeper 策略,两拨人共用同一套安全底座。

这些原则不是纸上谈兵。Cloudflare 内部这个平台已经被数千名员工日常使用,覆盖工程、销售、IT、财务各个职能,是从真实业务里长出来的系统,而不是为了开源临时拼凑的演示品,每一个机制都经过了真实业务的检验。

开源方式也很有 Cloudflare 风格:整个平台部署到你自己的 Cloudflare 账户里,Access 策略、AI Gateway 配置、Gatekeeper 规则全部由你掌控。你的术语、你的系统、你的策略,平台不碰你的数据边界,数据始终留在你自己的账户内。

用一张表把传统权限模型和 AAM 放在一起对比,差异会非常直观,也方便你在设计自己的 Agent 系统时逐项对照检查。

对比维度传统 IAM 模型智能体访问模型 AAM
授权单位人-系统二元关系单次动作-任务绑定
信任基础登录后长期信任不信任运行,动作级实时校验
凭证生命周期长期有效,人工回收短命凭证,任务结束即作废
应对组合攻击依赖事后审计发现信任棘轮单向收紧,天然阻断
审计粒度系统级操作日志每一次工具调用留痕
对提示注入的防御无直接防御动作级校验,注入也无法越权

这张表里最扎眼的一行是最后一行。提示注入在传统模型里几乎无解,因为模型一旦被注入指令,就会用已有的合法权限执行恶意动作;在 AAM 里,注入只能改变模型的意图,改变不了凭证里的白名单,动作级校验让越权请求在边界上就被挡下。

这也解释了为什么论文强调缩小能力集而不是优化单次决策。单次决策做得再聪明,也只是在概率上减少错误;把能力集物理缩小,错误根本没有发生的空间,确定性优于概率,这是安全工程的老原则,AAM 只是把它重新用在了 Agent 身上。

论文还专门讨论了单主体控制与多人访问控制的差异。单个 Agent 的授权相对简单,复杂的是多个用户共享一个 Agent、一个 Agent 服务多个用户时,权限必须跟着调用者走,而不是跟着 Agent 走,这个场景里 Agent 只是执行壳,权限主体始终是背后的人。

如果你正在搭建自己的 Agent 平台,AAM 给出的不是理论,而是一份可以照抄的检查清单。第一条:你的 Agent 拿到的每一个凭证,是否绑定了具体任务?如果 API key 是长期有效的、全平台通用的,你已经在裸奔,只是还没出事,出事的概率每天都在增长。

一个常见的反例是很多 Agent 框架为了开发方便,把完整的 API key 直接交给模型,让模型在工具调用时自己携带。开发时确实快,但生产环境里这就是跨跳组合权限的温床:模型拿到的是整个系统的钥匙,而不是一个任务的钥匙,一次泄漏等于全盘失守。

最小改动方案是把工具调用层包一层 scope 校验,就像上面 Gatekeeper 示例做的那样。不改模型、不改工具,只在请求入口加一道校验和审计,这道薄薄的中间层,就是传统体系到 AAM 的第一步迁移,成本低到几乎可以忽略。

凭证设计有三个铁律:短命、任务绑定、单跳有效。短命保证泄漏窗口小,任务绑定保证权限不扩散,单跳有效保证即使一个工具被攻破,攻击者也不能拿这个凭证去调用下一个工具,三道保险缺一不可。

审计要先行。很多团队的顺序搞反了:先开权限,后补日志,正确的顺序是先有日志管道,再开放任何权限,因为权限一旦放开,你没有日志就永远无法知道 Agent 到底做了什么,出问题只能靠猜,而靠猜的复盘等于没有复盘。

好消息是 Cloudflare OS 开源意味着你不用从零造轮子。部署到自己的 Cloudflare 账户,接上 Access 策略和 AI Gateway,再把内部工具通过 MCP Portals 暴露出来,一个带动作级授权的工作区几个小时就能跑起来,比自己造一套省几个月。

如果你的工具栈不在 Cloudflare 上,AAM 的思想依然可以直接借用:把每个 Agent 任务当成一个临时的最小权限主体,把每次工具调用当成一次需要单独授权的动作,把每次放行写进日志,这套思想与具体平台无关,哪里都能落地。

把视角拉远,看这次开源释放的行业信号。过去两年 Agent 安全的主流讨论集中在提示词层面:怎么防止越狱、怎么清洗注入、怎么让模型拒绝危险请求,这些讨论默认了一个前提——模型是唯一的防线,模型守住了就安全了。

Cloudflare OS 和 AAM 的出现,把讨论的坐标从模型内部移到了系统外部。模型仍然可能被诱导、被欺骗、被注入,但只要动作级校验在,模型的一切异常意图都落不到真实系统上,防线从模型自律变成了系统强制,安全不再依赖模型的自觉。

这个转变的意义在于它改变了安全问题的归因方式。以前 Agent 闯祸,复盘结论往往是模型不够聪明;现在有了 AAM,闯祸意味着授权体系有洞,后者是可修的工程问题,前者是无解的哲学问题,工程问题至少还有解。

从商业上看,谁先受益也清晰:内部知识密集、工具链复杂、合规压力大的企业最先受益。金融、医疗、政务这类行业对每一次数据访问都要交代去向,动作级审计正好满足这种诉求,Agent 才敢真正进入核心业务流程,而不是永远停留在边角料任务。

反过来,把 Agent 当聊天框直接接入生产系统、又没做动作级授权的团队,风险敞口在快速变大。因为 Agent 的能力在涨,调用链在变长,而权限体系纹丝不动,这条裂缝会越来越宽,直到某一次事故把它撕开。

对独立开发者和中小团队,我的建议是从自己的 MCP 服务器开始改造:把每个 MCP 工具的调用入口加上凭证校验和审计日志,先让工具链里最敏感的那几个服务穿上甲,再逐步推广到全部,一次一个服务,不贪多。

还有一个容易被忽视的实操点:给 Agent 用的凭证要和人用的凭证分库管理。人登录走 SSO,Agent 调用走任务凭证,两套体系混在一起是事故高发区,分开之后无论是审计还是吊销都干净得多,排查问题时也能快速定位是哪一类主体干的。

最后说一个判断:AAM 不是银弹,它解决的是授权问题,解决不了模型本身的幻觉和误判,也解决不了企业内部的政治性授权,但信任从系统缩小到动作这个方向是确定性的,它把 Agent 安全从玄学变成了工程,从口号变成了代码。

下一次再看到我们的 Agent 接入了企业微信、飞书、数据库这类标题时,值得多问一句:它的每一次动作,有凭证吗?有日志吗?白名单写清楚了吗?这三个问题,比模型选型更能决定你晚上能不能睡好觉,也更能决定这家公司敢不敢把核心业务交给 Agent。

http://www.jsqmd.com/news/1343161/

相关文章:

  • STM32开发核心概念解析:ICP/ISP/IAP与SWD/JTAG实战指南
  • 解决UE5.5.1中VRM资产打包后丢失的依赖管理与源码修复指南
  • 3步解锁Wand高级功能:免费游戏修改器增强方案全解析
  • Java接口自动化测试:从用例设计到工程化实践
  • 200+插件集成:HF Patch如何彻底改造《恋活!》系列游戏体验
  • 前端粒子化鼠标追踪:从Canvas交互到性能优化的实践指南
  • 2026年宁波选彩色水泥基自流平 不妨了解这家本地靠谱厂家 - 奔跑123
  • 想进大厂做安全工程师,这份包含代码审计与应急响应的进阶路线图
  • 逆向工程破解游戏回放黑盒:ROFL-Player如何解析英雄联盟录像文件
  • 微信H5登录开发全流程与实战技巧
  • 量化交易策略开发:从数学模型到实盘部署
  • 从零构建简易GPU:FPGA实践与图形流水线核心原理
  • 基于Git与纯文本的跨平台笔记系统部署指南
  • 2026年解读哪些机构可正规办理WATERMARK认证业务 - 奔跑123
  • 大模型处理时序数据五大方法:从Prompt工程到时序LLM实战
  • Claude Code SKILL进阶指南:从代码生成到AI工作流架构
  • Unity本地语音识别实战:基于Whisper.unity的离线语音交互方案
  • API中转技术解析:解决国内开发者调用国际服务的三大痛点
  • 2026年宁波靠谱的净化工程服务商 浙江甬洁净化工程服务评测 - 奔跑123
  • 2026年浙江大型PA6PA66改性企业的尼龙材料实用选择指南 - 奔跑123
  • 从零搭建Coze智能体:工作流思维重塑重复性任务自动化
  • 2026年哪些机构能办靠谱WATERMARK认证详解 - 奔跑123
  • Cesium三维迁徙图实战:Entity+Primitive混合渲染与着色器优化
  • Godot 4实战:数据驱动可切换阵型战斗场景系统开发
  • JMeter实现MD5签名接口压测:三种方案详解与实战避坑指南
  • 音乐解锁终极指南:让加密音乐文件重获自由的完整解决方案
  • Inconel718优质现货经销商大起底:谁才是行业**? - 2027品牌AI展
  • 2026年宁波别墅电梯选购指南 业内靠谱厂家推荐 - 奔跑123
  • Coze工作流实战:从零构建AI自动化视频生成应用
  • 2026年浙江抗静电PP厂家哪家好 评测主流产品性能表现 - 奔跑123