安全沙箱部署
防止AI誤刪庫 —— 把OpenClaw關進沙箱裡
為什麼要把 OpenClaw 關進沙箱
AI 能幫你寫程式碼、改檔案、跑腳本,這既是它厲害的地方,也是它危險的地方。萬一 AI 執行了一條不該執行的命令,後果可大可小。
沙箱的意思就是:給 AI 畫一個圈,它只能在圈裡活動,出了圈什麼也幹不了。哪怕它想搞事情,也傷不到你的系統。
['AI 執行 rm -rf / 把整個系統刪了(真實案例不止一個)', 'AI 誤改系統關鍵設定檔案,伺服器直接起不來', 'API Key 被 AI 輸出到日誌裡,任何人都能看到', '容器逃逸,影響宿主機上的其他服務', 'AI 透過網路把敏感資料發出去']
['只讀檔案系統,AI 改不了任何檔案', '丟棄所有 Linux capabilities,權限降到最低', '限制 CPU 和記憶體,防止資源耗盡', '網路隔離,只能訪問必要的 API 端點', '日誌審計,所有操作都有記錄']
Docker 沙箱搭建
核心思路:唯讀掛載 + 禁止網路 + 資源限制。
# 建立一個高度受限的容器
這條指令做了什麼:檔案系統唯讀、所有特權丟棄、記憶體限 1G、CPU 限 1 核、進程數限 100、完全斷網。夠狠了吧。
docker-compose.yml 沙箱設定
生產環境建議用 compose 管理,設定寫在檔案裡不容易忘:
version: "3.8"
AppArmor / Seccomp 加固
想再狠一點?加上核心層級的安全政策:
{
"defaultAction": "SCMP_ACT_ERRNO",
"architectures": ["SCMP_ARCH_X86_64", "SCMP_ARCH_AARCH64"],
"syscalls": [
{
"names": [
"read", "write", "open", "close", "stat", "fstat",
"mmap", "mprotect", "munmap", "brk", "ioctl",
"access", "pipe", "select", "sched_yield",
"dup", "dup2", "clone", "execve", "exit",
"wait4", "kill", "getpid", "getuid", "getgid",
"socket", "connect", "sendto", "recvfrom"
],
"action": "SCMP_ACT_ALLOW"
}
]
}
這個 seccomp 設定只允許最基本的系統呼叫,像 mount、ptrace 這些危險操作全部攔截。
沙箱部署五步走
建立隔離容器
用 --read-only 和 --cap-drop ALL 建立一個高度受限的容器。
只讀檔案系統
除了 /tmp 和指定的 workspace 目錄,其他地方都不能寫。
限制網路
用 internal network 禁止直接訪問外網,需要 API 的話走代理。
資源限額
CPU、記憶體、進程數都設上限,防止容器吃光宿主機資源。
日誌審計
所有容器操作都記錄日誌,定期檢查有沒有異常行為。
多層隔離保護,檔案系統唯讀,網路白名單控制,資源有上限。AI 誤操作只影響容器內部,不會波及系統。
共享系統權限,檔案完全可讀寫,網路無限制。部署簡單,但 AI 誤操作可能波及整個系統甚至刪庫。