第2课 安全性#

为什么需要了解这个#

AI 助手可以在你的电脑上执行命令:读取文件、运行程序、访问互联网。这很强大,但也有风险——模型可能犯错或执行不必要的操作。OpenClaw 提供三层保护,让你掌控全局。

三层保护#

OpenClaw 有三个不同(但相关的)安全机制:

1. 沙箱 (Sandbox) —— 命令在哪里执行#

沙箱是一个隔离的环境,就像一间没有窗户和门的房间。助手可以在里面做任何事,但无法触及系统的其他部分。

技术上这是一个 Docker 容器——你电脑上的特殊"虚拟盒子"。

运行模式(设置 agents.defaults.sandbox.mode):

模式 含义
"off" 沙箱关闭。所有操作直接在你的电脑上执行
"non-main" 只有非主会话(群聊)在沙箱中运行
"all" 所有操作都在沙箱中运行

范围 (scope) —— 创建多少个容器:

  • "session" —— 每个对话一个单独的容器
  • "agent" —— 每个助手一个容器(默认)

启用沙箱示例:

{
  agents: {
    defaults: {
      sandbox: {
        mode: "non-main",
        scope: "agent"
      }
    }
  }
}

2. 工具策略 (Tool Policy) —— 哪些工具可用#

即使助手在沙箱中运行,你也可以限制它使用哪些工具。

两个列表:

  • allow(允许)—— 如果指定了,只有列出的工具可用
  • deny(禁止)—— 这些工具始终被阻止

规则:deny 始终优先于 allow。如果一个工具同时在两个列表中——它会被阻止。

示例——只允许读取文件:

{
  tools: {
    sandbox: {
      tools: {
        allow: ["read", "exec", "process"],
        deny: ["browser", "canvas", "nodes", "cron"]
      }
    }
  }
}

工具组(快捷方式):

可以使用组来代替逐个列出工具:

包含内容
group:runtime exec, bash, process
group:fs read, write, edit, apply_patch
group:ui browser, canvas
group:messaging message
group:nodes nodes

3. Elevated(提权)—— 从沙箱中"逃出"#

Elevated 是从沙箱中的"紧急出口",仅用于 exec 命令。

如果助手在沙箱中工作,但需要在主机上执行某些操作,可以临时允许:

  • /elevated on —— 允许在主机上执行(需要确认)
  • /elevated full —— 无需确认即可执行(适合有经验的用户)

Elevated 不会提供新工具的访问权限——只允许 exec 在沙箱外运行。

配置中的设置:

{
  tools: {
    elevated: {
      enabled: true,
      allowFrom: {
        telegram: ["tg:123456789"]  // 谁可以使用
      }
    }
  }
}

绑定挂载的安全性#

如果你将主机文件夹挂载到沙箱中(通过 docker.binds),请注意:

  • 默认情况下文件夹以完全访问权限(读写)挂载
  • 添加 :ro 表示只读:"/home/user/docs:/docs:ro"
  • 永远不要挂载 /var/run/docker.sock——这会给予系统的完全控制权

如何检查当前设置#

OpenClaw 有内置的安全检查工具:

openclaw sandbox explain
openclaw sandbox explain --agent work
openclaw sandbox explain --json

它会显示:

  • 当前沙箱模式
  • 哪些工具被允许/禁止
  • Elevated 设置

工具被阻止时怎么办#

如果你看到 “Tool X blocked by sandbox tool policy”:

  1. 关闭沙箱agents.defaults.sandbox.mode = "off"
  2. 允许工具:添加到 tools.sandbox.tools.allow
  3. 从禁止列表中移除:从 tools.sandbox.tools.deny 中删除

实用建议#

场景 建议
个人使用,信任 AI sandbox.mode: "off"
有其他人的群组/频道 sandbox.mode: "non-main"
公开机器人 sandbox.mode: "all" + 严格的 deny 列表
家庭机器人 使用限制工具的单独智能体

本课总结#

  • 沙箱在 Docker 容器中隔离执行——防止 AI 的错误
  • 工具策略限制哪些工具可用
  • Elevated 是从沙箱的紧急出口,仅用于 exec
  • 使用 openclaw sandbox explain 检查当前设置
  • deny 始终优先于 allow
  • 对不同的信任级别使用不同的沙箱模式