深度

OpenClaw Docker 沙箱安全指南:工具隔离、工作区访问控制与自定义镜像

OpenClaw Docker 沙箱完整配置指南:三种沙箱模式(off/non-main/all)、三种容器范围(session/agent/shared)、工作区访问控制(none/ro/rw)、基础与功能完整镜像构建、自定义 Bind 挂载安全配置、容器初始化命令、沙箱浏览器,以及多 Agent 独立沙箱配置。

2026/3/124分钟 阅读ClaudeEagle

OpenClaw 支持在 Docker 容器中运行工具,降低 AI 误操作的影响范围。沙箱是可选功能,默认关闭——开启后,exec、read、write 等工具在隔离容器中执行,Gateway 本身仍在宿主机上运行。

沙箱不是完美的安全边界,但能有效限制模型做蠢事时的文件和进程访问范围。

沙箱化的工具

在容器中运行:exec、read、write、edit、apply_patch、process 等文件/执行类工具,以及可选的沙箱浏览器。

不在容器中:Gateway 进程本身;通过 tools.elevated 显式指定在宿主机运行的工具。

三种沙箱模式(mode)

模式说明
off不启用沙箱(默认)
non-main仅非主 Session 使用沙箱(推荐)
all所有 Session 都在容器中运行

non-main 基于 Session Key(默认 main),不是 Agent ID。群组/频道 Session 都是非主 Session,会被沙箱化。

三种容器范围(scope)

范围说明
session(默认)每个 Session 一个独立容器
agent同一 Agent 的所有 Session 共用一个容器
shared所有沙箱 Session 共用一个容器

工作区访问(workspaceAccess)

选项说明
none(默认)容器内使用独立沙箱工作区(~/.openclaw/sandboxes/)
ro将 Agent 工作区以只读方式挂载到容器的 /agent
rw将 Agent 工作区以读写方式挂载到容器的 /workspace

最简启用配置

json
{
  "agents": {
    "defaults": {
      "sandbox": {
        "mode": "non-main",
        "scope": "session",
        "workspaceAccess": "none"
      }
    }
  }
}

构建沙箱镜像

bash
# 基础镜像(仅核心工具,无 Node)
bash scripts/sandbox-setup.sh

# 功能更完整的镜像(含 curl/jq/nodejs/python3/git)
bash scripts/sandbox-common-setup.sh

# 沙箱浏览器镜像
bash scripts/sandbox-browser-setup.sh

使用 common 镜像:

json
{
  "agents": {
    "defaults": {
      "sandbox": {
        "docker": {
          "image": "openclaw-sandbox-common:bookworm-slim"
        }
      }
    }
  }
}

默认镜像不含 Node.js。如果 Skill 需要 Node,需自行构建镜像或通过 setupCommand 安装(需要网络出口)。

自定义 Bind 挂载

将宿主机目录挂载到容器内:

json
{
  "agents": {
    "defaults": {
      "sandbox": {
        "docker": {
          "binds": [
            "/home/user/source:/source:ro",
            "/var/data/myapp:/data:ro"
          ]
        }
      }
    },
    "list": [
      {
        "id": "build",
        "sandbox": {
          "docker": {
            "binds": ["/mnt/cache:/cache:rw"]
          }
        }
      }
    ]
  }
}

全局 binds 和 per-agent binds 会合并(不是替换)。

安全注意:

  • 敏感目录(密钥、SSH 等)尽量用 :ro
  • 禁止挂载 docker.sock、/etc、/proc、/sys、/dev(OpenClaw 自动阻止)

容器初始化命令(setupCommand)

容器创建后只运行一次(不是每次执行都跑):

json
{
  "agents": {
    "defaults": {
      "sandbox": {
        "docker": {
          "network": "bridge",
          "setupCommand": "apt-get update && apt-get install -y ffmpeg"
        }
      }
    }
  }
}

注意事项:

  • 默认网络是 none(无出口),安装包需先设置 network: "bridge"
  • readOnlyRoot: true 时无法写入,需设为 false 或用自定义镜像
  • 需要 root 用户安装软件(省略 user 字段或设 "0:0")

沙箱浏览器配置

json
{
  "agents": {
    "defaults": {
      "sandbox": {
        "browser": {
          "autoStart": true,
          "network": "openclaw-sandbox-browser",
          "allowHostControl": false
        }
      }
    }
  }
}
  • autoStart: true:浏览器工具需要时自动启动容器
  • allowHostControl: true:允许沙箱 Session 显式控制宿主机浏览器
  • 支持 noVNC 观察访问(短效 Token URL,密码在 URL Fragment 中,不写日志)

多 Agent 沙箱独立配置

json
{
  "agents": {
    "list": [
      {
        "id": "personal",
        "sandbox": { "mode": "off" }
      },
      {
        "id": "family",
        "sandbox": { "mode": "all", "scope": "agent" },
        "tools": {
          "allow": ["read"],
          "deny": ["exec", "write", "edit"]
        }
      }
    ]
  }
}

调试沙箱

bash
# 查看当前沙箱配置和工具策略
openclaw sandbox explain

工具策略与沙箱的关系

  • 工具 allow/deny 策略在沙箱规则之前执行
  • 被 deny 的工具,沙箱无法让它重新可用
  • tools.elevated 是显式逃逸机制,让 exec 在宿主机上运行
  • 详见:Sandbox vs Tool Policy vs Elevated

原文:Sandboxing - OpenClaw | 来源:OpenClaw 官方文档

相关文章推荐

深度OpenClaw Docker 沙箱安全指南:隔离 AI 工具执行、保护主机系统OpenClaw Docker 沙箱安全配置:三种沙箱模式(off/non-main/all)、三种容器粒度(session/agent/shared)、工作区访问权限控制、自定义挂载安全限制、沙箱浏览器、per-Agent 覆盖,以及 Elevated 工具逃生通道的使用注意事项。2026/3/1深度OpenClaw Session ID 生命周期规则:什么时候会开新会话,什么时候延续旧会话详解 OpenClaw sessionKey 与 sessionId 的区别,以及触发新会话的四种情形:手动重置、每日重置、空闲过期、父级分叉保护,附 Session Store 字段说明和 Cron 会话保留策略。2026/8/13深度OpenClaw 计费故障处理机制:余额不足时系统怎么办,Backoff 退避策略详解详解 OpenClaw 账单/额度类故障处理机制:与普通限流超时不同,计费故障采用更长的指数退避(5小时起步翻倍至24小时封顶)并标记禁用,附三类故障处理力度对比表和多账号部署实战建议。2026/8/13深度OpenClaw Model Failover 完全解析:Auth Profile 怎么轮换,为什么你的 OAuth 账号会"莫名其妙"被切走详解 OpenClaw Model Failover 机制:Auth Profile 轮换顺序、Session Stickiness 会话粘性、指数退避冷却规则,解释多账号场景下 OAuth 与 API Key 切换的常见困惑及固定账号的配置方法。2026/8/13深度OpenClaw Context Engine 完全指南:四个生命周期钩子如何决定模型看到什么详解 OpenClaw 可插拔上下文引擎架构:Ingest/Assemble/Compact/After turn 四个生命周期钩子的工作原理,systemPromptAddition 动态注入机制,以及如何安装和配置自定义 Context Engine 插件。2026/8/12深度OpenClaw Delegate 架构详解:让 Agent 以组织身份代表你行动,而不是冒充你详解 OpenClaw Delegate 代表架构:Agent 如何拥有独立身份代表组织成员行动而不冒充人类,三级能力分层(只读起草/代表发送/主动式)及硬性阻断规则、Gateway工具限制、沙箱隔离等安全配置。2026/8/12