AI智能体、云计算

今年早些时候,谷歌云在柏林举办的WeAreDevelopers世界大会上宣布,将Cloud Run沙箱纳入公开预览阶段,而AWS在此之前数周也已推出了自家的沙箱产品。两者都在回答同一个问题:智能体刚生成的代码,究竟应该在哪里运行?

这件事的意义在于:两大超大规模云服务商在同一季度相继发布沙箱产品,完成了整个阵营的聚合。如今,AWS、谷歌云、微软Azure和Cloudflare这四大主流云平台,均已将隔离代码执行作为原生基础能力提供,但各家在隔离架构和生命周期模型上存在实质性差异。

四家厂商的架构选择

AWS基于Firecracker构建了Lambda MicroVMs,为每个会话分配独立虚拟机,支持最长8小时的运行时间,并具备挂起与恢复功能,可保留内存、磁盘及运行中的进程状态。谷歌则采取了双路线策略:GKE Agent Sandbox使用gVisor内核拦截机制,而Cloud Run则在现有实例内部增加了一个轻量级隔离执行边界。

微软最早布局这一领域。Azure容器应用动态会话自2024年起便运行在Hyper-V隔离边界之上,据微软披露,仅Copilot每天的调用量就超过40万次会话。Cloudflare则在容器之上构建沙箱,每个沙箱在独立虚拟机中运行,并通过Workers和Durable Objects进行统一管控。

四家厂商,四种截然不同的架构主张,争议核心在于安全边界应划定在哪一层。但它们提供的产品本质一致:将不可信代码送入执行环境,平台在与调用方应用隔离的空间中运行该代码,凭据暴露则由独立机制统一管理。

谷歌Cloud Run的实现细节

Cloud Run的实现方式颇具代表性。在部署命令中加入`--sandbox-launcher`标志,系统会在容器内的`/usr/local/gcp/bin/sandbox`路径挂载一个沙箱二进制文件,应用通过普通子进程调用与其交互。由于沙箱复用了当前实例已分配的CPU和内存资源,谷歌对该功能不额外收费。谷歌在演示中展示了一项数据:单个Cloud Run服务启动、执行并停止1000个沙箱,平均每个仅耗时500毫秒。

谷歌在官方公告中将替代方案描述为"在容器集群上自建复杂沙箱基础设施,或付费使用第三方专用微型虚拟机运行时"。这句话显然是针对特定品类的厂商说的——这些厂商正是借助共享内核的容器与需要数分钟启动的虚拟机之间的空白地带建立了自己的商业模式。如今,这四家云厂商均提供托管沙箱执行能力,只是在打包方式和定价策略上各有不同。

隔离边界之外的治理挑战

Firecracker虚拟机能将生成的代码与宿主机及其他会话隔离,但网络访问范围和凭据权限仍然取决于配置决策。它无法限制代码对开发者主动授予的凭据的使用,治理层面的问题依然存在于完全独立的层级中。隔离边界划定了可安全授予自主权的上限,而这只是整个问题中成本较低的那一半。

此外,各厂商的特定约束条件在商品化浪潮中仍将长期存在。Lambda MicroVMs目前仅在五个区域基于Graviton架构运行,且上限为8小时,对于需要x86架构或更长运行时间的团队而言,编排层面的工作仍需自行承担。Cloud Run沙箱与父实例共享CPU和内存,意味着失控脚本可能与启动它的服务产生资源竞争。只要各厂商的这些约束仍如此明显,中立的多云沙箱方案就依然有其立足之地——这场商品化,或许从未真正画上句号。

现在,各大云平台已就一件事达成共识:智能体不应在宿主机上直接执行代码。争论的焦点,已转向代码在安全隔离之后,由谁来负责治理其行为。

Q&A

Q1:AWS的Lambda MicroVMs沙箱和谷歌Cloud Run沙箱有什么区别?

A:AWS的Lambda MicroVMs基于Firecracker构建,为每个会话分配独立虚拟机,支持最长8小时运行,并具备挂起和恢复能力,可保留内存与磁盘状态。谷歌Cloud Run沙箱则在现有实例内部创建轻量级隔离边界,沙箱与父实例共享CPU和内存资源,无需额外付费,平均启动执行时间约500毫秒。两者最大的差别在于隔离层级:AWS使用独立VM隔离,谷歌则在实例内部划定边界,资源争抢风险更高,但启动更轻量。

Q2:微软Azure的动态会话沙箱每天使用量有多大?

A:据微软披露,Azure容器应用动态会话自2024年起已在生产环境运行,仅Copilot一个产品每天的调用量就超过40万次会话。Azure的沙箱基于Hyper-V隔离边界构建,是四大云平台中最早布局智能体沙箱能力的厂商。

Q3:云平台提供的沙箱能解决智能体的所有安全问题吗?

A:不能完全解决。沙箱提供的隔离边界能防止生成代码影响宿主机和其他会话,但无法限制代码对开发者主动授予的凭据的滥用。凭据权限和网络访问范围仍由配置决策决定,治理问题属于独立的安全层。沙箱划定的是可安全授权的上限,代码在隔离环境内的行为治理,依然是各平台和开发者需要单独应对的挑战。

The New Stack