跳转到内容

沙盒 vs 工具策略 vs 提权

OpenClaw 提供了多层安全机制来控制代理可以做什么。了解这些机制之间的区别对于配置安全的 Gateway 至关重要。

功能范围目的机制
沙盒 (Sandboxing)执行环境将代理的代码执行与主机系统隔离。Docker 容器
工具策略 (Tool Policy)工具访问控制代理可以调用哪些工具。允许/拒绝列表 (Allow/Blocklist)
提权执行 (Elevated Execution)权限级别允许特定命令以 root/管理员权限运行。sudo / 权限标志

沙盒是关于隔离的。

  • 它做什么: 所有的代码执行(Python, Bash 等)都在 Docker 容器内运行。
  • 它防止什么: 代理无法访问主机文件系统(除了挂载的目录)、主机进程或任意主机网络,除非明确允许。
  • 配置位置: config.json5 中的 sandbox 部分。
config.json5
{
sandbox: {
mode: "docker", // 或 "local" (无沙盒)
docker: {
image: "python:3.11-slim"
}
}
}

工具策略是关于能力的。

  • 它做什么: 它定义了特定代理或会话被允许使用哪些注册的工具(例如 fs_read, http_request, google_search)。
  • 它防止什么: 代理无法调用未经授权的工具。例如,您可以允许代理读取文件但禁止其写入文件。
  • 配置位置: 可以在 Gateway 全局配置,也可以在每个会话的基础上配置。
config.json5
{
security: {
toolPolicy: {
default: "deny",
allow: [
"fs_*", // 允许所有文件系统工具
"web_browser_*" // 允许浏览器工具
],
deny: [
"system_exec" // 明确禁止系统命令执行
]
}
}
}

提权是关于权限的。

  • 它做什么: 允许某些操作以更高权限(例如 sudo 或 Administrator)运行。这通常适用于 local 模式(非沙盒),但在特权容器中也可以适用。
  • 它防止什么: 默认情况下,代理以普通用户权限运行,无法安装系统包或修改受保护的系统文件。
  • 配置位置: 通常通过特定的工具参数或 Gateway 启动时的环境标志控制。

为了获得最佳安全性,请采用纵深防御(Defense in Depth)策略:

  1. 启用沙盒: 始终在 Docker 容器中运行不可信代码。
  2. 限制工具策略: 仅启用代理完成任务所需的最小工具集。
  3. 避免提权: 除非绝对必要,否则不要给予代理 root/sudo 权限。

示例场景: 您希望代理能够分析数据,但不希望它能上网或删除文件。

  • 沙盒: 启用(保护主机)。
  • 工具策略: 允许 python_repl, fs_read;拒绝 http_request, fs_delete
  • 提权: 禁用。