如何為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沙箱。