沙箱 vs 工具策略 vs Elevated
OpenClaw 有三层安全机制。理解它们的区别对于正确配置安全性至关重要。
概览
| 机制 | 目的 | 作用范围 | 强制执行 |
|---|---|---|---|
| 沙箱 | 隔离执行环境 | 进程、网络、文件系统 | 运行时隔离 |
| 工具策略 | 控制可用工具 | 智能体工具集 | 工具调用前 |
| Elevated | 临时提升权限 | 特定用户/命令 | 命令级别 |
沙箱 (Sandbox)
沙箱提供运行时隔离,防止智能体访问主机系统。
功能
- 进程隔离(限制可执行文件)
- 网络访问控制
- 文件系统访问(只读/读写/无访问)
- Docker 容器支持(可选)
配置
json5
{
agents: {
defaults: {
sandbox: {
mode: "all", // off | non-main | all
scope: "agent", // session | agent | shared
workspaceAccess: "rw", // none | ro | rw
docker: {
image: "openclaw-sandbox:latest",
network: "none"
}
}
}
}
}使用场景
- 不可信代码执行
- 限制文件系统修改
- 网络隔离
- Docker 容器化执行
工具策略 (Tool Policy)
工具策略控制在智能体运行时可以使用哪些工具。
功能
- 白名单/黑名单工具
- 按提供商限制
- 按智能体覆盖
配置
json5
{
tools: {
// 全局策略
deny: ["process", "elevated"],
allow: ["read", "write", "edit", "exec", "browser"],
// 按提供商限制
byProvider: {
"openai/gpt-4o": { deny: ["exec"] },
"anthropic/*": { allow: ["browser", "read"] }
}
},
agents: {
list: [
{
id: "restricted",
tools: {
allow: ["read", "sessions_send"],
deny: ["exec", "write", "browser"]
}
}
]
}
}使用场景
- 限制敏感工具访问
- 按模型能力限制
- 按智能体角色限制
Elevated (提升权限)
Elevated 允许临时提升权限以运行敏感命令。
功能
- 用户批准后运行
- 基于发送者的允许列表
- 审计日志
配置
json5
{
tools: {
elevated: {
enabled: true,
allowFrom: {
whatsapp: ["+15551234567"],
telegram: ["tg:123456789"]
}
}
}
}使用场景
- 临时运行系统命令
- 需要用户确认的敏感操作
- 安全审计
优先级
当多个机制同时作用时,优先级顺序为:
- Elevated - 如果命令被标记为 elevated,首先检查允许列表
- 工具策略 - 检查工具是否被允许
- 沙箱 - 在允许的工具执行时应用隔离
决策流程
命令调用
│
▼
┌─────────────────────┐
│ 是否是 elevated 命令?│
└─────────┬───────────┘
│
┌─────┴─────┐
▼ ▼
是 否
│ │
▼ ▼
┌───────────┐ ┌─────────────────────┐
│检查允许列表│ │ 工具是否被允许? │
└─────┬─────┘ └─────────┬───────────┘
│ │
▼ ▼
批准? ┌──────┴──── ──┐
│ ▼ ▼
是/否 是 否
│ │ │
▼ ▼ ▼
执行/拒绝 进入沙箱 拒绝常见问题
什么时候使用沙箱?
当你不信任代码执行来源,或者需要严格隔离时。
什么时候使用工具策略?
当你需要控制智能体可以做什么,但不一定要隔离执行时。
什么时候使用 Elevated?
当某些命令需要额外确认,但不应该完全禁用时。
可以同时使用吗?
可以!它们设计为协同工作,提供深度防御。