安全沙箱部署

防止AI误删库 —— 把OpenClaw关进沙箱里

为什么要把 OpenClaw 关进沙箱

AI 能帮你写代码、改文件、跑脚本,这既是它厉害的地方,也是它危险的地方。万一 AI 执行了一条不该执行的命令,后果可大可小。

沙箱的意思就是:给 AI 画一个圈,它只能在圈里活动,出了圈什么也干不了。哪怕它想搞事情,也伤不到你的系统。

没有沙箱可能发生什么

['AI 执行 rm -rf / 把整个系统删了(真实案例不止一个)', 'AI 误改系统关键配置文件,服务器直接起不来', 'API Key 被 AI 输出到日志里,任何人都能看到', '容器逃逸,影响宿主机上的其他服务', 'AI 通过网络把敏感数据发出去']

Docker 沙箱 + 权限控制 + 网络隔离

['只读文件系统,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 管理,配置写在文件里不容易忘:

docker-compose.yml
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 加固

想再狠一点?加上内核级的安全策略:

seccomp-profile.json(精简版)
{
  "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 这些危险操作全部拦截。

沙箱部署五步走

1

创建隔离容器

用 --read-only 和 --cap-drop ALL 创建一个高度受限的容器。

2

只读文件系统

除了 /tmp 和指定的 workspace 目录,其他地方都不能写。

3

限制网络

用 internal network 禁止直接访问外网,需要 API 的话走代理。

4

资源限额

CPU、内存、进程数都设上限,防止容器吃光宿主机资源。

5

日志审计

所有容器操作都记录日志,定期检查有没有异常行为。

沙箱部署 (OpenClaw)

多层隔离保护,文件系统只读,网络白名单控制,资源有上限。AI 误操作只影响容器内部,不会波及系统。

VS
裸机部署 (传统方式)

共享系统权限,文件完全可读写,网络无限制。部署简单,但 AI 误操作可能波及整个系统甚至删库。

🏢 企业环境可以考虑 Zscaler Private AccessCloudflare Tunnel 等方案,在网络层面做更细粒度的访问控制,连 VPN 都省了。
MOLILI 桌面应用自带沙箱隔离,AI 的所有操作都在安全沙箱内运行,不用自己折腾这些配置。 了解 MOLILI →
这篇教程对你有帮助吗?