AI News HubLIVE
站内改写3 分钟阅读

如何为AI代理选择合适的沙箱

了解如何为AI代理选择安全的沙箱,包括文件系统隔离、网络访问控制、资源限制和微虚拟机等方面的指导。

AI代理在能够采取行动时最为有用,而让它们编写和运行代码是赋予它们最高价值的能力之一。但这种自主性伴随着安全风险。代理编写的代码可能对数据和系统造成意外威胁,因此需要控制代码运行的位置及其可访问的内容。

沙箱为团队提供了这种控制。它们隔离AI生成的代码,限制其权限,并为代理安全执行实际工作创建了更安全的边界。沙箱是代理可以安全使用的计算机。本指南涵盖了运行AI生成代码的安全风险,以及如何选择一种既能保护数据和系统又不限制代理实用性的沙箱方法。

代理致命三要素

LLM在软件工程方面表现出色,使得代码生成和执行成为代理创造价值的最佳方式之一。代码本身可以是输出,或者代理可以创建程序来帮助完成非软件工程任务。后者的一个常见例子是编写一次性脚本以进行自定义数据分析。然而,风险在于攻击者可以通过提示注入诱导代理编写危害数据和系统的代码。

目前,没有万无一失的方法来防止提示注入,不受信任的内容可能通过多种方式进入代理的上下文。最终用户输入、外部MCP服务器响应和第三方编写的技能只是几个常见例子。Simon Willison(流行Django Web框架的合著者,“提示注入”术语的发明者)通过概述“致命三要素”总结了随之而来的风险:当所有三个条件都成立时,你的代理可能允许攻击者窃取数据:

  • 访问敏感数据
  • 暴露于不受信任的内容
  • 能够进行外部通信

受Willison工作的启发,Meta提出了应用“二对规则”,即如果三要素中的所有条件都适用,则代理绝不应完全自主运行。

二对规则易于理解,但遵循起来很困难。为代理提供所需的工具通常意味着同时赋予其访问敏感数据和外部通信的能力。基础模型和工程技术的进步使AI代理能够利用越来越多的上下文,但这增加了攻击者发送提示注入攻击的几率。

很可能,致命三要素适用于你的代理,这意味着需要安全措施来限制代理对数据采取的行动。成功实施这些控制措施更容易,如果你首先缩小所有三个风险因素。这就是沙箱的用武之地。

使用沙箱为代理设定明确的边界

一个安全的沙箱解决方案提供以下功能,以缩小代理对致命三要素的暴露,并限制在成功提示注入攻击下可能造成的损害:

  • 隔离的文件系统
  • 受限的网络访问
  • 资源限制
  • 可控的复用性
  • 与宿主机的内核级隔离

市场上有些产品自称“沙箱”,但并未提供这些现成的功能,因此在为代理选择之前,要批判性地评估潜在的解决方案。例如,开源的Kubernetes Agent Sandbox只有在部署到具有容器间内核级隔离的集群时才是安全的,而大多数Kubernetes集群并不强制执行这一点。

隔离的文件系统:沙箱应仅包含代理工作所需的数据,并阻止代理尝试访问任何其他数据。这最大限度地减少了敏感数据的暴露,同时使审计和控制更容易。

受限的网络访问:沙箱应允许指定代理可以通过互联网将数据发送到哪些外部端点。这意味着,即使攻击者诱导代理泄露敏感数据,也只会发送到你信任的实体。

资源限制:沙箱应允许控制代理可以使用多少计算资源和内存以及多长时间。被入侵的代理不应能够过度消耗系统资源。

可控的复用性:复用沙箱可以方便地在执行之间持久化代理状态,但这意味着如果攻击者一次入侵沙箱,损害可能会持续。沙箱解决方案应让你决定是否值得冒这个风险。

与宿主机的内核级隔离:上述控制措施只有在代理无法覆盖执行它们的系统时才有效。不幸的是,操作系统内核通常包含漏洞,被入侵的代理可能利用这些漏洞控制你的机器并绕过保护数据的任何控制。解决方案是虚拟化,即沙箱使用自己的内核运行,与运行它的机器内核分开。你可以使用微虚拟机(microVM)驱动的解决方案来高效创建内核隔离的沙箱,而无需承担每个沙箱启动完整虚拟机的成本。

拥有上述所有功能的沙箱解决方案并不意味着你不需要认真考虑被入侵代理对数据和系统构成的风险。沙箱本身并不能完全消除致命三要素的任何方面。相反,它们缩小了对敏感数据的访问并限制了外部通信,使得管理提示注入风险成为团队可以自信解决的小问题。

LangSmith沙箱:安全代码执行,与端到端代理工程平台集成

我们开发了LangSmith代理工程平台,以补充我们的开源产品,让你可以使用LangChain、LangGraph和/或Deep Agents构建的代理进行稳健的测试、部署和监控。由于沙箱通常是构建安全代理不可或缺的一部分,我们在LangSmith中构建了一个托管解决方案。我们按照上述最佳实践设计产品,并进行了严格的渗透测试。LangSmith沙箱已被各种规模的公司使用,包括Monday.com等企业。

LangSmith沙箱每个都由一个专用的微虚拟机(microVM)支持,具有自己的文件系统,从而实现彼此之间以及与底层基础设施的内核级隔离。你可以控制它们的生命周期,从启动到关闭再到最终销毁,在此过程中根据需要尽可能多或尽可能少地复用它们。你决定沙箱内运行的进程可以获得什么网络访问(如果有)。我们还包含一个授权代理,在流量离开沙箱后向出站流量注入安全凭据,因此你无需将秘密放入沙箱中,不受信任的进程可能访问和滥用它们。

你可以使用与可观测性、评估和部署功能相同的API和身份验证来管理LangSmith沙箱。向使用LangChain、LangGraph或Deep Agents构建的代理添加沙箱只需几行代码。

为何选择LangSmith沙箱

  • 遵循现代最佳实践进行安全保护
  • 授权代理将秘密与不受信任的代码隔离
  • 与LangChain和LangSmith生态系统的无缝集成

如果你准备使用沙箱来保持代理既实用又安全,可以按照此处的文档开始使用LangSmith沙箱。