13
13 / 16

安全最佳实践

⏱️ 30分钟

OpenClaw 的安全起点不是“防住所有 Prompt 注入”,而是先限制谁能触发 Agent以及Agent 被触发后能做什么。官方安全文档给出的优先顺序也是:先收紧开放的 DM/群组,再处理工具、网络暴露、文件权限、插件与模型。

先确认信任模型

OpenClaw 默认面向个人助手场景:一个 Gateway 对应一个受信任操作边界。它不是让多个互不信任用户共享同一高权限 Agent 的多租户隔离层。

如果两个用户或组织不能互相信任,正确做法是拆分 Gateway 和凭证;高风险场景还应使用不同 OS 用户或主机。

风险不是一项,而是相乘

外部输入 × 可用工具 × 数据范围 × 自动执行
                     ↓
                  故障半径

一个公开群聊本身未必造成事故;但公开群聊加上 Shell、文件和网络写权限,就会让恶意或误导性内容获得真实执行能力。

上线前的四层检查

要检查什么安全基线
入口DM、群聊、配对、允许名单默认拒绝陌生发送者;群聊要求明确触发
Gateway绑定地址、认证、远程访问优先 loopback;不要无认证暴露到公网
工具Shell、文件、浏览器、网络、Cron默认最小权限;高影响动作必须询问
数据配置、凭证、日志、工作区限制可读范围;不要把凭证写进 Skill 或对话

运行官方安全审计

每次修改安全相关配置或开放新的网络入口后运行:

openclaw security audit

需要探测运行中的 Gateway 时:

openclaw security audit --deep

--fix 只执行有限的安全修复,不能替你决定业务需要哪些权限。运行前仍要读清变更范围:

openclaw security audit --fix

权限矩阵

不要只写“管理员可以使用全部工具”。把动作写到可审查粒度:

动作默认允许条件回退
读取指定工作区允许仅工作区路径停止任务并记录路径
修改文件询问显示目标文件与变更摘要使用版本记录恢复
执行 Shell拒绝单独审批具体命令终止进程并保留日志
向外发送消息询问展示收件人和最终正文停止后续发送并通知人工
创建 Cron询问写明频率、输入和所有者禁用任务并记录最后执行

Pairing 与 allowlist 解决什么

Pairing/allowlist 控制谁能直接向 Agent 发起请求。但它们不能净化对话里引用的网页、附件、转发消息或工具结果。受信任用户也可能把不受信任内容带入上下文。

因此仍需同时限制工具权限、工作区范围和自动执行规则。

Skill 和插件审查

安装前回答五个问题:

  1. 来源和维护者能否确认?
  2. 它会读取哪些文件、环境变量或凭证?
  3. 它会访问哪些域名或外部服务?
  4. 它是否执行脚本或安装依赖?
  5. 删除它以后,如何撤销凭证和残留任务?

看不懂脚本时,不要把它安装到持有生产凭证的 Gateway。

本章实践:完成安全基线

  • Gateway 只暴露在需要的网络范围;
  • DM 与群组入口已配置 pairing/allowlist;
  • 文件权限限制到指定工作区;
  • Shell、浏览器写入、消息发送和 Cron 默认拒绝或询问;
  • 凭证不在 Skill、Prompt、日志样例中;
  • 已运行 openclaw security audit 并记录结果;
  • 已写明停止、撤销和人工通知流程。

完成标准:拿任意一条外部输入,都能指出它最多可以触达哪些数据和动作。

官方资料