深度

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

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

2026/3/124分钟 阅读ClaudeEagle

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

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

沙箱化的工具

在容器中运行execreadwriteeditapply_patchprocess 等文件/执行类工具,以及可选的沙箱浏览器。

不在容器中: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 多 Gateway 架构完全指南:一台机器运行多个独立 AI 助手实例OpenClaw 多 Gateway(Multi-Gateway)架构完整教程:多实例的隔离优势、同一台机器运行多个 Gateway(不同端口/配置文件/workspace)、systemd 管理多个 Gateway 服务、Nginx 虚拟主机为每个实例分配独立域名、API Key 隔离与成本拆分、单机多实例 vs 多机方案对比,以及 Docker Compose 多容器隔离部署方案。2026/3/26深度OpenClaw Hooks 自动化进阶:消息前后的智能拦截、转换与触发机制OpenClaw Hooks(钩子)自动化系统进阶教程:Hooks 的触发时机(before-send/after-receive/on-tool-call)、用 Hooks 拦截消息并修改内容(自动翻译/过滤/格式化)、基于条件的 Hook 触发(渠道过滤/关键词匹配)、Hook 中调用外部 API(Notion 记录/Bark 通知/监控告警)、exec 工具二次确认 Hook,以及 Hooks 与 SOUL.md 和 Standing Orders 的优先级关系详解。2026/3/26深度OpenClaw 插件开发完全指南:从零构建自定义渠道和工具插件OpenClaw 插件(Plugin)开发完整教程:插件类型(渠道插件/工具插件/Provider插件)、插件的目录结构和 package.json 规范、使用 Plugin SDK 开发自定义消息渠道(实现 onMessage/sendMessage 接口)、开发自定义工具(Tool)的函数签名和参数 Schema、本地插件安装与调试(openclaw plugins install ./local-plugin)、发布到 npm 的规范要求(@openclaw/ 命名空间)、插件的权限声明(capabilities)、社区插件列表(Plugin Bundles)获取,以及常见插件开发错误和调试技巧。2026/3/25深度OpenClaw 安全威胁模型深度解析:MITRE ATLAS 框架下的 AI 助手攻防分析OpenClaw 安全架构深度分析:个人助手信任模型(单用户/单 Gateway 边界)、形式化验证的认证逻辑、基于 MITRE ATLAS 框架的 AI 系统威胁分类(直接提示注入/间接提示注入/工具滥用/数据泄露/会话劫持)、多租户共享 Gateway 的风险与安全边界说明、exec/browser/文件工具的权限最小化配置、频道白名单与沙箱配置对应的威胁缓解措施,以及 `openclaw security audit` 命令的使用方法。2026/3/24深度OpenClaw 多模型路由完全指南:30+ 模型提供商接入、智能切换与故障转移OpenClaw 多模型路由系统完整教程:支持的 30+ 模型提供商全览(Anthropic/OpenAI/Gemini/Ollama/OpenRouter/DeepSeek/Qwen/GLM 等)、provider/model 格式的模型指定方式、按渠道/Agent/任务类型设置不同默认模型、Model Failover 故障转移配置(主模型失败自动切换备用模型)、Claude Max API Proxy 接入方式、本地模型(Ollama/vLLM)与云端模型混用策略,以及 Token 限制和费用控制实践。2026/3/24