安全沙箱部署
防止AI误删库 —— 把OpenClaw关进沙箱里
为什么要把 OpenClaw 关进沙箱
AI 能帮你写代码、改文件、跑脚本,这既是它厉害的地方,也是它危险的地方。万一 AI 执行了一条不该执行的命令,后果可大可小。
沙箱的意思就是:给 AI 画一个圈,它只能在圈里活动,出了圈什么也干不了。哪怕它想搞事情,也伤不到你的系统。
['AI 执行 rm -rf / 把整个系统删了(真实案例不止一个)', 'AI 误改系统关键配置文件,服务器直接起不来', 'API Key 被 AI 输出到日志里,任何人都能看到', '容器逃逸,影响宿主机上的其他服务', 'AI 通过网络把敏感数据发出去']
['只读文件系统,AI 改不了任何文件', '丢弃所有 Linux capabilities,权限降到最低', '限制 CPU 和内存,防止资源耗尽', '网络隔离,只能访问必要的 API 端点', '日志审计,所有操作都有记录']
Docker 沙箱搭建
核心思路:只读挂载 + 禁止网络 + 资源限制。
# 创建一个高度受限的容器
docker run -d --name openclaw-sandbox \
--read-only \
--tmpfs /tmp:size=100m \
--tmpfs /var/tmp:size=50m \
--cap-drop ALL \
--security-opt no-new-privileges:true \
--memory 1g \
--cpus 1.0 \
--pids-limit 100 \
--network none \
-v openclaw_data:/data:ro \
openclaw/openclaw:latest
这条命令做了什么:文件系统只读、所有特权丢弃、内存限 1G、CPU 限 1 核、进程数限 100、完全断网。够狠了吧。
docker-compose.yml 沙箱配置
生产环境建议用 compose 管理,配置写在文件里不容易忘:
version: "3.8"
services:
openclaw:
image: openclaw/openclaw:latest
container_name: openclaw-sandbox
read_only: true
tmpfs:
- /tmp:size=100m
- /var/tmp:size=50m
cap_drop:
- ALL
security_opt:
- no-new-privileges:true
- seccomp:./seccomp-profile.json
deploy:
resources:
limits:
cpus: "1.0"
memory: 1G
reservations:
memory: 256M
pids_limit: 100
networks:
- sandbox_net
volumes:
- openclaw_data:/data:ro
- ./workspace:/workspace # AI 只能在这个目录写
environment:
- OPENCLAW_API_KEY_FILE=/run/secrets/api_key
secrets:
- api_key
restart: unless-stopped
networks:
sandbox_net:
driver: bridge
internal: true # 禁止外网访问
volumes:
openclaw_data:
secrets:
api_key:
file: ./secrets/api_key.txt
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 误操作可能波及整个系统甚至删库。