選擇代理運算環境時,應按工作負載的程式碼信任程度、網絡存取、憑證、生命週期、檔案系統、狀態和資源限制作出決定。限定範圍的 API 呼叫無需 sandbox;不受信任的生成程式碼則需要一般應用程式程序或容器配置未必能提供的隔離。
升級階梯可避免簡單的數據庫讀取取得檔案系統和 shell 存取權,同時令有風險的程式碼遠離長效應用程式憑證。
使用能滿足工作的最低層級
flowchart TD
A[Scoped API call] -->|needs application logic| B[In-process function]
B -->|needs async or longer work| C[Background job]
C -->|needs package or process isolation| D[Isolated process or container]
D -->|runs untrusted code| E[Hardened sandbox]
E -->|needs full machine control or long-lived isolation| F[Dedicated VM]
升級會增加能力和營運工作,但不會自動提升安全性。具備不受限制的網絡存取權和生產環境憑證的 sandbox,可能比範圍狹窄的伺服器端 API 更危險。
第 0 層:限定範圍的 API 呼叫
如果工作已可表達為數據庫查詢、物件讀取、電郵傳送或部署請求,便應使用具備類型的後端操作。代理只提供範圍明確的參數,伺服器則負責憑證、授權、驗證和審計。
這一層不具備通用程式碼執行能力,適合一般產品操作,也符合語意工具設計。
第 1 層:程序內函式
對於能在請求生命週期內完成、執行時間短而且可信任的轉換和協調工作,請使用應用程式碼。限制可使用的模組,並讓供應商密鑰遠離模型可見的輸入。
不要在這一層使用 eval、shell 或動態 import 執行生成程式碼。逾時可以停止等待請求,但不能可靠地終止每個子程序或外部副作用。
第 2 層:背景工作
當工作可能超過請求逾時、需要排程重試,或應獨立控制速率時,便把它移至佇列。保存操作紀錄並讓工作具備冪等性,因為佇列可能重複傳送。
工作 worker 提供持久排程,但不是安全邊界。它通常執行可信任的應用程式碼,存取權限與服務相近。持久執行指南涵蓋檢查點和未知結果。
第 3 層:隔離程序或容器
當可信任的程式碼需要套件、檔案系統,或不同的 CPU 和記憶體限制時,請使用獨立程序或容器。移除多餘權限、在可行情況下採用唯讀基礎檔案系統、只掛載必要檔案,並限制對外網絡存取。
除非平台加入更強的邊界,否則容器會共用主機 kernel。請把它視為工作負載封裝和程序隔離,再評估執行時配置是否符合威脅模型。
第 4 層:強化的 sandbox
不受信任或由模型生成的程式碼應在 sandbox 中執行。為每次執行提供臨時檔案系統、嚴格的 CPU、記憶體、程序和經過時間限制,以及對外網絡允許清單。只注入工作專用憑證,並在執行後撤銷憑證和銷毀環境。
清理前,把已批准的輸出保存到物件儲存空間。掃描產物,避免向模型傳回大小不受限制的 stdout 或二進制內容。Sandbox 指南涵蓋逃逸路徑和測試情況。
第 5 層:專用 VM
當工作需要獨立的 kernel 邊界、特權系統行為、特殊依賴項、長效桌面或客戶專用隔離時,請使用專用虛擬機器。強化映像檔、控制元數據服務存取、套用修補程式,並定義銷毀方式。
不要只因代理曾使用某台 VM,便讓它永久存在。長效機器會累積憑證、檔案、套件和網絡信任。如果無需持久保存,應從已知映像檔重新建立。
選擇層級前先分類六項需要
- 程式碼信任: 每項指示和依賴項是否都由團隊控制,還是用戶及模型也能提供程式碼?
- 權限: 工作負載必須存取哪些憑證和資源?
- 網絡: 它無需網絡、只需固定允許清單、需要公眾網絡,還是需要私有服務?
- 生命週期和狀態: 它會在數秒內完成、等待數小時,還是需要持久機器?
- 執行時介面: 它需要 shell、瀏覽器、套件安裝、可寫入檔案系統、kernel 功能或 GPU 嗎?
- 資源限制: 哪些 CPU、記憶體、程序、輸出和支出限制能阻止失控工作?
Cloudflare 的 Project Think說明代理工作負載的類似分層設計。不同供應商的實際產品對應各有不同,但通用原則是只有在需要時,才從範圍狹窄的操作逐步升級至隔離運算。
測試邊界,而不是名稱
驗證檔案系統掛載、網絡輸出、密鑰可見性、程序限制、終止、產物匯出和清理。在隔離環境中嘗試連接禁止的主機和另一租戶的資源。確認平台會記錄是哪個映像檔、政策、身份和操作建立了該次執行。
下方提示會先分類目前的工作負載,再提出基礎設施建議。它經常能找出完全不需要 shell 的工作,比單純把容器改名為 sandbox 更能改善安全性。