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