重要前提:个人助手信任模型
⚠️ 个人助手信任模型:本指南假设每个 Gateway 一个受信任的操作员边界(单用户/个人助手模型)。
OpenClaw 不是为多个对抗性用户共享一个 Agent/Gateway 的多租户安全边界而设计。
如果你需要混合信任或对抗性用户操作,请通过信任边界分离(单独的 Gateway + 凭证,理想情况是单独的 OS 用户/主机)。
安全模型核心原则
OpenClaw 既是一个产品,也是一个实验——你把前沿模型行为接入真实的聊天界面和真实工具。没有"完美安全"的设置。
目标是有意识地控制:
- 谁可以与机器人对话
- 机器人可以在哪里执行操作
- 机器人可以访问什么
起点应该是:在仍能正常工作的前提下,给予最小访问权限,然后在获得信心后再逐步放宽。
部署假设
OpenClaw 假设主机和配置边界是可信的:
- 如果有人能修改 Gateway 主机状态/配置(
~/.openclaw,包括openclaw.json),将他们视为可信操作员 - 不支持的设置:多个互不信任或对抗性用户共享一个 Gateway/Agent
- 混合信任团队需要通过信任边界分离(单独的 Gateway,或至少单独的 OS 用户/主机)
- 推荐默认配置:每台机器/主机/VPS 一个用户,一个 Gateway,该用户的一个或多个 Agent
Gateway 和 Node 信任概念
把 Gateway 和 Node 视为一个操作员信任域,有不同角色:
| 组件 | 角色 |
|---|---|
| Gateway | 控制平面和策略表面(gateway.auth、工具策略、路由) |
| Node | 配对到该 Gateway 的远程执行表面(命令、设备操作、主机本地能力) |
在 Gateway 通过身份验证的调用者是 Gateway 范围内的可信角色。配对后,Node 操作是该 Node 上受信任的操作员操作。
信任边界矩阵
| 边界或控制 | 含义 | 常见误解 |
|---|---|---|
gateway.auth(token/password/设备 auth) |
向 Gateway API 验证调用者身份 | “需要在每一帧上使用每消息签名才是安全的” |
sessionKey |
上下文/会话选择的路由键 | “Session key 是用户授权令牌” |
| 工具 Allow/Deny | 工具调用策略 | “Allow 列表等于安全边界” |
| Exec Approvals | 操作员意图的防护栏 | “Exec approval 等于隔离” |
| 沙箱 | 工具执行隔离 | “沙箱等于防弹” |
共享 Slack 工作区的真实风险
如果"Slack 中的每个人都可以给机器人发消息",核心风险是委托工具权限:
- 任何允许的发送者都可以诱导工具调用(在 Agent 策略范围内)
- 一个发送者的提示/内容注入可以导致影响共享状态、设备或输出的操作
- 如果一个共享 Agent 有敏感凭证/文件,任何允许的发送者都可能通过工具使用潜在地窃取数据
正确做法:对团队工作流使用单独的工具最小化的 Agent/Gateway;私人数据 Agent 保持私有。
安全审计工具
定期运行(尤其是在更改配置或暴露网络表面后):
openclaw security audit
openclaw security audit --deep
openclaw security audit --fix
openclaw security audit --json
它会标记常见问题:Gateway auth 暴露、浏览器控制暴露、elevated 允许列表、文件系统权限、松散 exec 批准、开放频道工具暴露。
提示词注入:最大的未知风险
提示词注入(Prompt Injection)是 AI Agent 特有的攻击向量:
攻击者通过在对话/内容中注入恶意指令,让 Agent 在不知情的情况下执行非预期操作。
防御措施:
- 沙箱化所有外部不可信输入
- 使用
tools.deny禁用高风险工具 - 为不同信任级别的用户使用不同 Agent
- 永远不要在工具调用结果中盲目执行来自不可信来源的指令
多用户场景的正确部署
| 场景 | 推荐做法 |
|---|---|
| 家庭/个人使用 | 单 Gateway + 多频道,多 Agent 分工 |
| 小团队(互相信任) | 单独 Gateway + 最小工具集 |
| 企业(混合信任) | 每用户独立 VPS + 独立 Gateway |
| 对抗性用户 | 强制分离,每个用户独立部署 |
核心安全检查清单
- 运行
openclaw security audit --fix并处理所有警告 - 仅对必要用户开放频道访问(使用 allowFrom)
- 高风险工具(如 exec)加入 deny 列表或使用沙箱
- 不在配置中硬编码 secrets,使用 SecretRef
- 对外暴露的 Gateway 配置 auth 保护
- 定期更新 OpenClaw 到最新版本
- 阅读第三方技能的源代码后再启用
本指南编译自 OpenClaw 安全文档