沙盒 vs 工具策略 vs 提权
OpenClaw 提供了多层安全机制来控制代理可以做什么。了解这些机制之间的区别对于配置安全的 Gateway 至关重要。
| 功能 | 范围 | 目的 | 机制 |
|---|---|---|---|
| 沙盒 (Sandboxing) | 执行环境 | 将代理的代码执行与主机系统隔离。 | Docker 容器 |
| 工具策略 (Tool Policy) | 工具访问 | 控制代理可以调用哪些工具。 | 允许/拒绝列表 (Allow/Blocklist) |
| 提权执行 (Elevated Execution) | 权限级别 | 允许特定命令以 root/管理员权限运行。 | sudo / 权限标志 |
1. 沙盒 (Sandboxing)
Section titled “1. 沙盒 (Sandboxing)”沙盒是关于隔离的。
- 它做什么: 所有的代码执行(Python, Bash 等)都在 Docker 容器内运行。
- 它防止什么: 代理无法访问主机文件系统(除了挂载的目录)、主机进程或任意主机网络,除非明确允许。
- 配置位置:
config.json5中的sandbox部分。
{ sandbox: { mode: "docker", // 或 "local" (无沙盒) docker: { image: "python:3.11-slim" } }}2. 工具策略 (Tool Policy)
Section titled “2. 工具策略 (Tool Policy)”工具策略是关于能力的。
- 它做什么: 它定义了特定代理或会话被允许使用哪些注册的工具(例如
fs_read,http_request,google_search)。 - 它防止什么: 代理无法调用未经授权的工具。例如,您可以允许代理读取文件但禁止其写入文件。
- 配置位置: 可以在 Gateway 全局配置,也可以在每个会话的基础上配置。
{ security: { toolPolicy: { default: "deny", allow: [ "fs_*", // 允许所有文件系统工具 "web_browser_*" // 允许浏览器工具 ], deny: [ "system_exec" // 明确禁止系统命令执行 ] } }}3. 提权执行 (Elevated Execution)
Section titled “3. 提权执行 (Elevated Execution)”提权是关于权限的。
- 它做什么: 允许某些操作以更高权限(例如
sudo或 Administrator)运行。这通常适用于local模式(非沙盒),但在特权容器中也可以适用。 - 它防止什么: 默认情况下,代理以普通用户权限运行,无法安装系统包或修改受保护的系统文件。
- 配置位置: 通常通过特定的工具参数或 Gateway 启动时的环境标志控制。
总结:如何组合使用
Section titled “总结:如何组合使用”为了获得最佳安全性,请采用纵深防御(Defense in Depth)策略:
- 启用沙盒: 始终在 Docker 容器中运行不可信代码。
- 限制工具策略: 仅启用代理完成任务所需的最小工具集。
- 避免提权: 除非绝对必要,否则不要给予代理 root/sudo 权限。
示例场景: 您希望代理能够分析数据,但不希望它能上网或删除文件。
- 沙盒: 启用(保护主机)。
- 工具策略: 允许
python_repl,fs_read;拒绝http_request,fs_delete。 - 提权: 禁用。