免費全文 Agent 開發 實戰

讓 Agent 安全地執行程式碼:沙箱的三層防護

允許模型執行程式碼是能力躍升,也是風險躍升。這是可實作的三層防護。

Agent 開發教程封面

程式碼執行能讓 Agent 從「會講」變成「會做」,但它同時把提示注入的後果從錯誤答案升級為系統入侵。防護必須在執行環境本身,不能只靠提示。

第一層:隔離的執行環境

  • 獨立容器,不掛載主機檔案系統。
  • 唯讀根檔案系統,只有 /tmp 之類的暫存目錄可寫。
  • 非 root 使用者執行。
  • 每次任務用完即銷毀,不重複使用容器。

第二層:資源與網路限制

docker run --rm \
  --network=none \
  --memory=512m --cpus=1 \
  --pids-limit=64 \
  --read-only --tmpfs /tmp:size=64m \
  -u 1000:1000 \
  sandbox-python:latest python /tmp/task.py

--network=none 是最有價值的一條。多數需要執行程式碼的任務(資料處理、計算、格式轉換)不需要網路,關掉它就擋掉了資料外洩與對外攻擊。

第三層:逾時與輸出限制

proc = subprocess.run(cmd, capture_output=True, timeout=20)
out = proc.stdout.decode('utf-8', 'replace')[:8000]

不要做的事

  • 不要用 evalexec 在主程序裡跑模型產出的程式碼。
  • 不要把真實憑證以環境變數注入沙箱。
  • 不要因為「只是內部工具」就省略隔離——提示注入不分內外網。
沙箱逃逸是真實存在的風險。把沙箱當成降低風險的手段,而不是絕對保證;敏感系統仍要有稽核與最小權限設計。
下一步

這個主題還有更深入的實戰教程

VIP 專區收錄 50 篇進階內容:架構設計、生產環境取捨、成本與合規。 每週五新增 3 篇。

看訂閱方案 → 先逛逛 VIP 專區

延伸閱讀

更多Agent 開發 →