Skip to Content

安全加固

安全是运行 AI 代理系统时最不能忽视的问题。OpenClaw 提供了多层安全机制,从 DM 访问控制到工具沙箱,帮助你构建安全可靠的部署。本文将系统性地介绍各项安全功能的配置与最佳实践。

openclaw security audit 命令

OpenClaw 提供了内置的安全审计工具,帮助你发现配置中的潜在风险。

运行安全审计

# 执行完整安全审计 openclaw security audit # 输出示例 # 🔍 OpenClaw Security Audit # ================================ # [WARN] DM policy is set to "open" - anyone can DM your bot # [WARN] No tool restrictions configured - all tools are available # [PASS] API keys are stored in environment variables # [PASS] Workspace permissions are correctly set # [WARN] 3 skills have network access without explicit approval # [FAIL] Sensitive data found in openclaw.yaml (API key hardcoded) # # Summary: 1 FAIL, 3 WARN, 2 PASS

审计检查项

审计命令会检查以下方面:

  • DM 策略:是否设置了访问控制
  • API Key 存储:是否有硬编码的凭证
  • 工具权限:是否有过于宽泛的工具授权
  • 技能安全:已安装技能的权限需求
  • 文件权限:配置文件和数据目录的系统权限
  • 网络暴露:Gateway 是否暴露在公网
# 只检查特定类别 openclaw security audit --category credentials openclaw security audit --category permissions # 输出为 JSON 格式(便于自动化) openclaw security audit --format json

DM 策略

DM(私聊)策略控制 谁可以与你的 AI 私聊。这是多用户部署中最重要的安全设置之一。

三种策略模式

# openclaw.yaml security: dm: policy: "pairing" # pairing | allowlist | open

pairing(配对模式)— 推荐

用户需要通过配对流程才能与 AI 对话:

security: dm: policy: "pairing" pairing: # 配对码有效时间(秒) codeExpiry: 300 # 是否需要管理员批准 requireApproval: true

配对流程:

  1. 用户向 Bot 发送消息
  2. Bot 回复”请输入配对码”
  3. 管理员生成配对码并发给用户
  4. 用户输入配对码完成配对
  5. 后续对话无需重复配对
# 管理员生成配对码 openclaw pairing create --user "alice#1234" # 查看待配对请求 openclaw pairing pending # 批准/拒绝配对请求 openclaw pairing approve <request-id> openclaw pairing reject <request-id>

allowlist(白名单模式)

只允许列表中的用户与 AI 对话:

security: dm: policy: "allowlist" allowlist: # 按平台+用户ID指定 - platform: "discord" userId: "123456789" - platform: "telegram" userId: "987654321" # 也支持用户名匹配 - platform: "discord" username: "alice#1234"

open(开放模式)

任何人都可以与 AI 对话。仅推荐用于测试或个人使用

security: dm: policy: "open" # ⚠️ 警告:任何人都可以与你的 Bot 对话 # 这可能导致 API 费用失控

硬化基线配置示例

以下是一个面向生产环境的安全硬化配置:

# openclaw.yaml — 安全硬化基线配置 security: # DM 访问控制 dm: policy: "pairing" pairing: requireApproval: true codeExpiry: 300 # 速率限制 rateLimit: # 每用户每分钟最大消息数 messagesPerMinute: 20 # 每用户每天最大消息数 messagesPerDay: 500 # 超限后的行为 onExceeded: "reject" # reject | queue | warn # 工具安全 tools: profile: "restricted" deny: - "exec" # 禁止执行系统命令 - "file_delete" # 禁止删除文件 - "network_raw" # 禁止原始网络访问 # 模型限制(控制成本) agents: defaults: models: primary: "anthropic/claude-sonnet-4-20250514" denied: - "anthropic/claude-opus-4-20250514" - "openai/o3" # 会话安全 dmScope: "per-peer" session: idleResetMinutes: 60 dailyResetHour: 4

工具策略(tools.profile, allow/deny)

工具策略控制 AI 可以使用哪些工具,是防止 AI 执行危险操作的关键机制。

tools.profile 预设

tools: # 预设安全配置文件 profile: "default" # default | restricted | minimal | custom

各预设的能力范围:

  • default:允许大部分工具,禁止高危操作(如系统命令执行)
  • restricted:只允许读取类操作和安全的写入操作
  • minimal:只允许最基本的对话工具,几乎不使用外部工具
  • custom:完全自定义 allow/deny 列表

allow/deny 列表

tools: profile: "custom" # 允许使用的工具(白名单) allow: - "read" # 读取文件 - "web_search" # 搜索网页 - "web_fetch" # 获取网页内容 - "memory_search" # 搜索记忆 - "memory_get" # 获取记忆 - "send_email" # 发送邮件 # 明确禁止的工具(黑名单,优先级高于 allow) deny: - "exec" # 执行系统命令 - "write" # 写入文件(如果不需要) - "file_delete" # 删除文件 - "browser" # 浏览器控制

策略优先级

deny 列表 > allow 列表 > profile 预设

即使工具在 allow 中出现,如果它也在 deny 中,则 始终被禁止

针对不同场景的工具策略

# 场景一:只读助手(信息查询类) tools: profile: "custom" allow: - "read" - "web_search" - "web_fetch" - "memory_search" deny: - "write" - "edit" - "exec" # 场景二:开发助手(需要文件操作) tools: profile: "default" deny: - "exec" # 仍然禁止系统命令 - "browser" # 不需要浏览器 # 场景三:全能助手(信任用户) tools: profile: "default" # 不额外限制

沙箱简介

OpenClaw 支持在 沙箱环境 中运行工具,为工具执行提供额外的隔离层。

沙箱的作用

AI 请求执行工具 OpenClaw 工具路由 ↓ 沙箱启用 在隔离环境中执行 - 独立文件系统 - 网络访问受限 - 无法访问宿主敏感文件 返回结果给 AI

沙箱配置

# openclaw.yaml sandbox: enabled: true # 沙箱类型 type: "container" # container | nsjail | bubblewrap # 允许沙箱访问的目录 mounts: - source: "~/.openclaw/workspace" target: "/workspace" readOnly: false - source: "~/.openclaw/skills" target: "/skills" readOnly: true # 网络限制 network: enabled: true # 允许的外部域名 allowedDomains: - "api.openai.com" - "api.anthropic.com" - "*.googleapis.com" # 资源限制 resources: maxMemory: "512m" maxCpu: "1.0" maxDisk: "1g" timeout: 30 # 秒

何时使用沙箱

  • 运行不可信代码:用户要求 AI 执行任意代码时
  • 测试第三方技能:首次使用新技能时
  • 多租户环境:多个用户共享同一个 OpenClaw 实例时
  • 合规要求:企业环境中需要工具执行隔离

凭证存储位置

了解 OpenClaw 在哪里存储敏感信息,有助于你正确保护它们。

凭证存储路径

~/.openclaw/ ├── .env # 环境变量(API Keys 等) ├── openclaw.yaml # 主配置文件(不应包含明文凭证) ├── auth/ │ ├── oauth-tokens.json # OAuth 令牌 │ └── pairing-codes.json # 配对码 ├── sessions/ │ └── *.json # 会话数据(可能包含对话内容) └── credentials/ └── *.enc # 加密存储的凭证

保护建议

# 确保配置目录权限正确 chmod 700 ~/.openclaw chmod 600 ~/.openclaw/.env chmod 600 ~/.openclaw/auth/* # 检查是否有明文凭证泄露 grep -r "sk-" ~/.openclaw/openclaw.yaml grep -r "password" ~/.openclaw/openclaw.yaml # 确保 .env 不被 Git 追踪 echo ".env" >> ~/.openclaw/.gitignore

凭证轮换

# 定期轮换 API Key # 1. 在提供商控制台生成新 Key # 2. 更新 .env 文件 # 3. 重启 Gateway 使其生效 openclaw gateway restart

安全检查清单

部署 OpenClaw 到生产环境前,请逐项检查以下清单:

访问控制

  • DM 策略已设置为 pairingallowlist(非 open
  • 配对/白名单已正确配置
  • 速率限制已启用
  • 会话隔离级别 dmScope 已设置为 per-peer 或更细

工具与技能

  • 已配置工具策略(tools.profile 或 allow/deny)
  • 危险工具已被禁用(exec, file_delete 等)
  • 已审查所有已安装的第三方技能
  • 不需要的技能已被禁用

凭证管理

  • 所有 API Key 存储在环境变量或 .env 文件中
  • openclaw.yaml 中没有硬编码凭证
  • .env 文件权限设为 600
  • OAuth 令牌文件权限正确
  • .env 已添加到 .gitignore

网络安全

  • Gateway 不直接暴露在公网(或有防火墙规则)
  • 如使用沙箱,网络白名单已配置
  • HTTPS/TLS 已启用(如果 Gateway 对外服务)

监控与审计

  • 定期运行 openclaw security audit
  • 日志记录已启用
  • 异常行为告警已配置
  • 定期审查对话日志中的异常模式

成本控制

  • 模型白名单已配置(防止使用昂贵模型)
  • 速率限制防止 API 费用爆发
  • 设置了每日/每月费用告警
# 一键执行安全审计 openclaw security audit # 查看详细报告 openclaw security audit --verbose # 修复已知问题后重新审计 openclaw security audit --fix # 自动修复安全配置

安全没有终点,只有持续改进。建议每次更新 OpenClaw 或添加新技能后,都重新运行安全审计,确保你的部署始终处于安全状态。


💬 有问题或建议? 欢迎在下方评论区留言讨论。


Last updated on