实战 09:简易 OpenClaw——安全、部署、运维与最终验收
1、本篇任务:把 Gateway 当成高权限基础设施上线
OpenClaw 类系统可能读文件、执行命令、控制浏览器、发消息和定时唤醒。安全顺序必须是:先确定谁能说话,再确定能在哪些 Session 活动,最后确定能调用什么工具。Prompt 规则排在这些硬控制之后。
2、信任边界
一个 Gateway 适合一个个人或相互信任团队,不适合作为敌对租户间的强隔离层。敌对用户使用独立 OS 用户、容器/VM、Gateway、凭证和存储。Sandbox 降低工具爆炸半径,但 Gateway 本身仍在宿主运行。
3、网络暴露
默认 loopback;远程优先可信 overlay/TLS 反代;LAN/custom bind 必须认证、真实 firewall 和最小来源。不要无认证监听 0.0.0.0。Control UI 与 Agent 生成的 HTML/widget 不共享高权限 origin,设置 CSP,视为不可信内容。
WebSocket/HTTP 连接限制 body、frame、并发、速率和空闲时间;trusted proxy 只信明确代理 IP,并正确验证 forwarded identity。
4、凭证与身份
渠道 token、模型 key、OAuth refresh token 用密钥管理或权限严格文件加密保存;不进入 prompt、memory、trace、artifact 和错误。支持轮换与撤销。Pairing code 短期一次性,尝试限速;设备/用户 token 绑定 principal 和 scopes,不使用永久共享管理员 token。
5、Tool Blast Radius
按 Session/Agent/Channel 设置 tool profile:messaging 只允许消息与必要 Session 工具;coding 允许 workspace 工具;admin 控制面工具不暴露给普通 Agent。高风险工具 allowlist/ask;路径和网络 egress 限制;外部消息、删除、发布和付款有审批/幂等。
Elevated/host execution 明确显示并默认关闭于共享 Channel。Sandbox mode 可按 all/non-main/session/agent 配置;敏感 Channel 强制 sandbox,backend 不可用时 fail closed。
6、Sandbox 加固
固定镜像、非 root、只读根、最小 mounts、资源/pids/TTL、无 Docker socket、默认无网络。浏览器使用独立网络、限制控制入口和下载;观察页面用短期 token。Artifact 离开 Sandbox 前做类型、恶意内容和密钥扫描。
7、配置治理
JSON5/YAML 配置必须 schema 验证;候选写临时文件后原子替换;保留 last-known-good 和 rejected copy;敏感字段不会被 *** 覆盖真实值;变更记录 actor/diff/version。启动失败只开放 doctor/health 等最小诊断面。
配置分环境,禁止生产继承开发的 open DMs、host exec、宽 CORS 和调试日志。使用安全审计命令/自建 audit 检查 bind/auth、DM scope、allowlist、sandbox、tools、plugin/skill 来源和文件权限漂移。
8、可观测性
关联 gateway request、channel event、identity、conversation、session、run、tool、job 和 outbound message ID。指标包括连接数、inbox/outbox 延迟、重复抑制、队列/死信、模型与工具错误、Session ownership、Cron 延迟、权限拒绝、Sandbox 资源和每用户费用。
日志默认脱敏;审计日志与调试 trace 分离;用户可查询自己的消息/Job/Memory,管理员访问也留审计。
9、备份与恢复
备份配置、身份映射、Session/Memory、Jobs、Inbox/Outbox、审计和 artifact metadata;密钥单独备份。演练数据库恢复、Channel token 轮换、丢失 Sandbox、队列重放和 Gateway 切换。恢复后依靠事件/消息幂等避免重新发送历史动作。
10、发布流程
固定镜像与依赖 → staging 接测试 Channel → 协议兼容/迁移 → 安全测试 → 代表性 Agent eval → 小范围 identity allowlist → 观察指标 → 扩大。回滚包括二进制、配置、插件/Skills、数据库 schema 与 Agent prompt/model。
11、故障演练
模型不可用时队列降级;渠道 429/断连时不丢不重;数据库短暂故障时不 ACK 未持久事件;worker 在外部发送后崩溃仍去重;Gateway 重启后 Cron 不重复;Sandbox 逃逸尝试被阻止;被盗 token 撤销后现有连接失效;恶意 Skill/插件安装被供应链策略拒绝。
12、最终验收矩阵
| 维度 | 通过标准 |
|---|---|
| 身份 | 未配对用户、越权角色、转发审批均失败 |
| 隔离 | DM/群/租户/Agent/Memory/Workspace 无串读 |
| 可靠性 | webhook、queue、send、cron 重试不重复副作用 |
| 恢复 | Gateway/worker 重启后 Session、Job、审批可继续 |
| 工具 | deny/ask/allow 可解释,Sandbox/路径/网络策略生效 |
| 质量 | 固定 eval 覆盖路由、工具、拒答、安全和成本 |
| 运维 | health、metrics、dead letter、audit、backup、rollback 可操作 |
达到以上标准,你实现的不是完整 OpenClaw,但已经拥有其最重要的工程骨架:中心 Gateway、多渠道适配、Session 与身份、可靠消息、长期记忆、Skills、调度、多 Agent、Sandbox 和运维闭环。
如果您觉得这篇文章有帮助,请点个赞吧~
评论
请登录后发表评论
去登录