第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”:
- 关闭沙箱:
agents.defaults.sandbox.mode = "off" - 允许工具:添加到
tools.sandbox.tools.allow - 从禁止列表中移除:从
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
- 对不同的信任级别使用不同的沙箱模式