内容提要
JetBrains Air 推出云端 AI 代理预览,代理在隔离云环境中运行。文章介绍代理沙箱的意义:限制文件、网络与权限,防止数据泄露或系统破坏。运行方式分本地与远程五类,本地隔离弱,远程默认隔离强。Air 为每个任务启动独立虚拟机,代理在容器内运行,经代理服务器仅访问可信域名,密钥加密,权限随开发者仓库。
延伸解读
本地与远程沙箱的安全差异
文章指出,本地运行代理时,代理可能无意或通过提示注入逃逸工作目录,隔离性较弱,需依赖客户端或操作系统级工具(如landrun、sandbox-exec、Sandboxie)来限制文件与网络访问。而远程方案(SSH、Docker、云)默认提供更强隔离,代理环境与开发者机器分离,资源访问可通过文件系统和网络控制进一步限制,从而缩小影响范围。
Air云代理的隔离实现细节
Air的云代理采用与Docker Sandboxes类似的方式:每个任务启动一个独立的云VM(未来将支持microVM),代理在VM内的Docker容器中运行。VM被视为不可信,任务间不重用,且仅能访问有限的内部资源。所有来自代理容器的连接都经过VM内设置的代理服务器,默认只允许访问预设的可信源代码管理和包注册域名(如npm),用户可添加域名、允许所有域名或完全关闭互联网访问。
密钥管理与仓库权限控制
在Air中,密钥以加密形式存储,并作为环境变量暴露给任务。团队成员可以使用共享密钥而无需看到其值,个人密钥则保持私密。此外,每个任务在开发者自己的仓库权限范围内运行,因此代理无法访问开发者本人无权访问的仓库。这种设计在提供便利的同时,也遵循了最小权限原则,降低了敏感数据泄露的风险。
Q&A
什么是AI代理沙箱?为什么需要它?
AI代理沙箱是一种在隔离且严格控制的环境中运行AI代理的实践,限制其可访问的资源和可执行的操作。需要它是因为现代AI代理能执行代码、使用工具并自主行动,可能带来意外系统修改、数据泄露或被利用等风险。沙箱通过限制影响范围,为部署AI代理提供更安全可靠的基础。
运行AI代理有哪几种方式?它们的安全性有何不同?
共有五种方式,分为本地和远程两类。本地包括:本地工作区(默认不隔离,可离开工作目录)、Git工作树(部分隔离,文件更改分开但仍可离开目录)。远程包括:SSH(需手动配置,默认隔离)、Docker(每个任务新容器,默认隔离)、云(每个任务新VM/微VM/容器,默认隔离)。远程执行默认提供更好的隔离保证。
Air中的云代理沙箱是如何工作的?
Air的云代理沙箱为每个任务启动一个云中的VM(微VM即将推出),代理在VM内的Docker容器中运行。VM被视为不可信,不在任务间重用,仅允许访问有限的内部资源。VM中设置代理,代理容器的所有连接都通过它路由。默认只允许连接到预设的可信源代码管理和包注册域名(如npm),可添加域名、允许所有域名或完全关闭互联网访问。
Air云代理如何处理密钥和权限?
密钥加密存储,并作为环境变量暴露给任务。团队成员可以使用共享密钥而无需看到其值,个人密钥保持私密。每个任务在开发者自己的仓库权限内运行,因此永远不会看到开发者无法访问的仓库。
本地运行AI代理有哪些安全风险?
在本地场景中,代理可能无意中或由于提示注入而轻易逃逸当前工作目录。虽然可以通过操作系统级沙箱工具(如Linux的landrun、macOS的sandbox-exec、Windows的Sandboxie)限制文件系统和网络访问,但需要客户端(用户与代理交互的程序)来包装启动的代理并强制执行所需策略。
Air云代理目前对哪些用户可用?
云代理目前通过IDE中的Air和浏览器中的Air Teams向组织用户提供预览,计划稍后向个人用户更广泛地发布。