亚马逊AWS官方博客

OpenClaw 安全和功能增强实践

摘要:本文记录了我在 AWS EC2 上部署 OpenClaw后,围绕安全防护和功能增强两条主线所做的一系列配置。不是官方教程,而是实际踩坑后的工程实践。


1. OpenClaw 简介

OpenClaw 是一个开源、自托管的 AI Agent 平台。它运行在你自己的服务器上,通过 TelegramWhatsAppDiscordSlack 等消息平台与用户交互——像给朋友发消息一样,直接 DM 你的 Agent

与云端 AI 助手不同,OpenClaw 的核心设计理念是本地优先:数据不离开你的基础设施,所有配置和对话历史都在你的掌控之中。

1.1. 核心能力

能力

说明

多平台消息集成

TelegramWhatsAppDiscordSlackTeamsLark/飞书、SignaliMessage

任务编排

串联文件操作、Shell 命令、Web 搜索、API 调用等完成复杂工作流

Skill 系统

可扩展的技能框架,支持自定义自动化(如定时任务、数据处理)

多模型支持

支持主流模型提供商 + 本地模型

Gateway 架构

中心化网关统一管理路由、插件和消息通道

1.2. 为什么选择 OpenClaw

  • 隐私可控:自托管,数据不经过第三方
  • 可定制:从搜索引擎到语音转写,每个组件都可替换
  • 自主运维:出问题自己排查,不依赖厂商支持周期
  • 成本透明:只付计算和模型调用费用,没有平台抽成

一句话概括:OpenClaw 让你拥有一个跑在自己服务器/电脑上、通过聊天工具交互、能力可无限扩展的 AI Agent

2.OpenClaw 的安全挑战

在深入安全实践之前,我们先梳理 OpenClaw 自托管部署面临的主要安全挑战。理解这些风险,才能理解后续每一项安全措施的必要性。

2.1. Agent 自治权限

OpenClaw Agent 继承运行用户的系统权限——它能读写文件、执行 Shell 命令、调用 API。这意味着:

  • Agent 可以访问服务器上的敏感文件(SSH 密钥、环境变量、配置文件)
  • Agent 可以执行任意命令,且默认不需要逐条审批
  • 一旦 Agent 行为被劫持,攻击者等同于获得了服务器的用户权限

这与传统 Web 应用的安全模型完全不同——你不是在保护一个”接口”,而是在保护一个能自主行动的实体。

2.2. 凭证散落

一个典型的 OpenClaw 部署需要管理多组凭证:

凭证

存储位置

Gateway Token

openclaw.json 或环境变量

LLM API Key

openclaw.jsonBedrock 场景下用 IAM Role 替代)

消息平台 Bot Token

openclaw.json

搜索 API KeyTavily 等)

环境变量或 MCP 配置

OAuth 凭据(Gmail 等)

本地 token 文件

这些凭证分散在配置文件、环境变量、脚本中。任何一个泄露都可能导致对应服务被滥用。

2.3. 网络暴露

OpenClaw Gateway 默认监听端口 18789。如果直接暴露在公网:

  • 攻击者可以通过端口扫描发现你的实例
  • 拿到 Gateway Token 即可完全控制 Agent
  • 互联网上已有大量暴露的 OpenClaw 实例被扫描发现(https://openclaw.allegro.earth/)

Gateway Token 就是 Agent 的”钥匙”——它不应该出现在公网可达的任何地方。

[图1]

2.4. 提示注入

AI Agent 天然面临提示注入(Prompt Injection)风险:

  • Agent 抓取的网页可能包含恶意指令,诱导 Agent 执行非预期操作
  • 用户输入中嵌入的指令可以绕过 Agent 的行为约束
  • 攻击者可以通过精心构造的内容让 Agent 泄露系统信息或执行危险命令

这不是理论风险——已有公开案例证明,恶意网页可以在无需用户交互的情况下劫持 AI Agent

2.5. 配置脆弱性

OpenClaw 的核心配置是一个 JSON 文件(openclaw.json)。配置错误会导致:

  • 插件加载失败 → Gateway 启动失败 → 循环崩溃
  • 错误的模型参数 → Agent 行为异常
  • 漏配安全选项 → 默认不安全

JSON 没有 schema 校验的话,一个多余的逗号就能让整个系统瘫痪。

2.6. 小结

挑战

核心风险

后续对应实践

凭证散落

任一泄露即服务失陷

VPC Endpoint SSM Parameter StoreIAM Role

网络暴露

被完全控制

VPC Endpoint、无公网端口

提示注入

Agent 行为被劫持

Skill 审计、最小权限

配置脆弱性

一个错误全局崩溃

自愈机制、Skill校验配置

3.  实践:龙虾阿含的架构概览(我的 OpenClaw Agent 实例)

[图2]

运行环境:

  • >EC2 实例:Graviton ARM (aarch64),Ubuntu 24.04
  • 模型:Opus 4.6 via Amazon Bedrock
  • 通道:Discord + Telegram 双通道
  • 网络:通过AWS服务对阿含功能进行增强。所有 AWS 服务通过 VPC Endpoint (PrivateLink) 访问,不经公网
  • 权限:通过IAM Role授权,符合最小权限原则

4. 安全增强

4.1. 一键案例部署:SSM 中转 + VPC Endpoint,零公网暴露

这个设置非常重要,为OpenClaw的安全打好了基础。如果你通过sample-OpenClaw-on-AWS-with-Bedrock方案部署(https://github.com/aws-samples/sample-OpenClaw-on-AWS-with-Bedrock),就不需要费时间配置了,方案中会自动设置这部分内容。具体设置可以访问链接了解,包括了使用IAM Role实现最小权限,Gateway Token存放。

效果:EC2实例不需要开放任何端口。AWS 服务调用全走PrivateLink,不暴露于公网。

[图3]

该方案通过SSM Parameter Store存储Gateway Token。其它的凭证也可以参考实现,特别是OpenClaw在v2026.3.7 中引入了SecretRef exec 模式。将Token/Key等凭证存放在SSM Parameter Store中,在Gateway 启动时通过脚本调用aws ssm get-parameter,Token 只在内存中短暂存在,不会写到磁盘文件,规避明文导致的泄露风险。支持审计追踪,每次读取 Parameter Store 都会记录在 CloudTrail 中,谁在什么时候取了 Token 一目了然。

[图4]

4.2. 配置安全:OpenClaw-Skill 防止配置错误

OpenClaw的强大功能需要额外配置Tools/Skills才能完整体验,很多都需要修改配置文件 openclaw.json。配错一个字段,Gateway 可能起不来。OpenClaw exec 权限可以修改配置,更需要防护。

推荐做法:

1. 安装 OpenClaw-Skill 参考文档,覆盖安装、配置、通道、安全、多 Agent、故障排查等全部场景,8800+ 行结构化文档。将链接发送给你的龙虾即可

2. 在 Agent 记忆中写入硬规则:

# MEMORY.md 中的约束
- **修改 gateway 配置前必须先查 OpenClaw 手册**,确认配置项正确再改
- **重启 gateway 前必须先告知**,不要静默重启

3. 设置OpenClaw定时任务,每天自动检查 GitHub 上的 Skill 是否有更新

这样,当OpenClaw需要改配置时,会参考文档,不会瞎改。而后续增加其它的功能时,它会更智能的提出有哪些可行的配置方式。

4.3. 自愈机制:Gateway 崩溃自动修复

OpenClaw Gateway 偶尔会因为配置变更或边缘 bug 崩溃。systemd 可以自动重启OpenClaw服务,但如果是配置问题,重启多少次都没用。

自愈机制:systemd + Claude Code 自动诊断修复(自愈机制在OpenClaw Agent 之外独立运行,systemd → OnFailure → Claude Code → 修复 → 通知)。配置参考了https://github.com/win4r/openclaw-min-bundle

[图5]

核心脚本openclaw-fix.sh

# 收集最近日志
LOGS=$(journalctl --user -u openclaw-gateway -n 100 --no-pager)

# 调用 Claude Code 分析(带 OpenClaw-Skill 作为上下文)
claude -p "分析以下 OpenClaw Gateway 崩溃日志,找出根因并修复:
$LOGS"

关键点:Claude Code 也安装了 OpenClaw-Skill,所以它知道正确的配置格式,不会越修越坏。

安装方式:先要求OpenClaw安装好Claude Code且一并配置上OpenClaw-Skill,这样Claude Code也知道正确的配置格式。然后让OpenClaw来读取具体配置文档(https://github.com/kingdoooo/openclaw-setup-guides/auto-fix-setup-guide.md),它会自动完成设置。

4.4. Skill 安全审查:skill-vetter

ClawHub GitHub 安装第三方 Skill 之前,先用 skill-vetter 审查:

  • 检查是否有可疑的 system-prompt-override
  • 检查权限范围(读写了哪些文件)
  • 检查是否有外传数据的行为
  • 检查脚本中的危险命令

[图6]

5. 功能增强篇

5.1. 搜索增强:Tavily + Gemini Deep Search 分层架构

OpenClaw 默认的 web_search 工具需要 Brave Search API Key(虽然有免费额度,但需信用卡注册)。我搭建了一个两层递进的搜索架构,灵感来自 AI超元域 Codex 搜索增强方案(他使用 Codex CLI + Tavily,我改用了 Gemini CLI + Tavily)。

[图7]

第一层:Tavily免费额度 1000 /月,无需信用卡同步调用,延迟约 0.6

第二层:Gemini Deep SearchGemini CLI 本身有内置的google_web_search web_fetch 工具。使用gemini-3.1-pro-preview 模型(Google AI Pro 订阅),通过精心设计的提示词实现多轮搜索 + 综合分析 + 异步执行(1-5 分钟),完成后推送通知。适合复杂问题、深度调研。

原则:简单事用简单工具,别杀鸡用牛刀。Tavily 不够再升级。

安装:将search-enhancement-guide.md发送给OpenClaw即可。它会自己完成配置。

注意这里需要先安装Gemini CLI并登录认证。首次运行会自动弹出一个 Google OAuth 链接,类似:

To authenticate, visit this URL:

https://accounts.google.com/o/oauth2/auth?client_id=…&redirect_uri=…&scope=…

Enter the authorization code:

步骤:

  1. 在浏览器打开链接
  2. 用 youremail@gmail.com(Google AI Pro 账号)登录
  3. 授权后浏览器跳转,URL 里带 code=XXXXX
  4. 把 code 粘贴给终端,完成认证。

认证完成后凭证缓存在 ~/.gemini/ 下,后续运行不需要再登录。

5.2. 语音输入:AWS Transcribe Streaming

OpenClaw 支持语音消息自动转写,但默认方案需要 OpenAI Whisper API 或本地 Whisper 模型。一般部署OpenClaw的机器规格不会很大,跑本地模型太慢(超过10秒),而 OpenAI API需要 API Key

方案:AWS Transcribe Streaming——利用已有的 IAM Role,通过 VPC Endpoint 走内网访问,零额外配置。

# transcribe.py 核心流程
# 1. ffmpeg 将 .ogg 转为 PCM 16kHz
# 2. 音频字节流直接推送给 Transcribe Streaming API,通过PrivateLink,不需要公网
# 3. 实时返回识别文字

OpenClaw 的原生集成(将这个链接丢给你的龙虾参考https://github.com/kingdoooo/openclaw-setup-guides/blob/main/transcribe-setup-guide.md):

// openclaw.json
{
  "tools": {
    "media": {
      "audio": {
        "enabled": true,
        "models": [{
          "type": "cli",
          "command": "python3",
          "args": ["/home/ubuntu/clawd/scripts/transcribe.py", "{{MediaPath}}"],
          "timeoutSeconds": 30
        }]
      }
    }
  }
}

添加Transcribe Streaming VPC Endpoint 配置:

所有 AWS 服务调用通过 VPC EndpointPrivateLink),不会经过公网。

服务

Endpoint 类型

服务名

Transcribe Streaming

Interface

com.amazonaws.us-east-1.transcribestreaming

VPC Endpoint 设置参考:AWS 官方文档 – VPC Endpoints

EC2 Role中添加Transcribe Steaming权限:

    {
      "Sid": "TranscribeStreaming",
      "Effect": "Allow",
      "Action": [
        "transcribe:StartStreamTranscription"
      ],
      "Resource": "*"
    }

配置后,收到语音消息的流程完全自动化:

[图8]

效果:

  • 延迟 2-3 秒
  • 中文识别质量好
  • 费用极低
  • 不需要 S3,不需要额外 API Key
  • 通过 VPC Endpoint 走内网,音频数据不经过公网

5.3. 自建 Skill:从 Gmail 发票下载到经验提炼

OpenClaw Skill 系统不只是装别人的插件,更强大的是把自己的经验提炼成可复用的 Skill

起因: 我需要下载 Gmail 中一整年的发票用于报销。听起来简单,实际踩了一堆坑。

第一步:发现能力

OpenClaw 对话中了解到,可以通过 Gmail API 只读权限(gmail.readonly)实现邮件的搜索、查看和附件下载。于是配置了Gmail API并授权,它自己写了搜索和下载脚本。

第二步:遇到问题

实际执行中遇到了一系列问题:

1. 链接被 Tracker 包裹:邮件中的下载链接被营销平台的跟踪链接包裹,<a href=”跟踪链接“>真实链接</a>,只提取 href 会拿到已过期的跟踪链接

<!-- 邮件中的链接 -->
<a href="https://tracking.xxxcloud.net/click/xxx">
  http://u.baiwang.com/4hJBiMxxxxx    ← 真实 URL 藏在显示文本里
</a>
2. 二维码隐藏下载入口:部分发票平台在邮件中嵌入 base64 二维码图片,扫码才能获取下载页面

3. 搜索关键词不全:最初只搜发票 OR invoice”,遗漏了水单 / folio / 行程单 / 报销单

4. 下载按钮不触发下载:部分链接的下载按钮用 location.href 跳转,headless 浏览器捕获不到 download 事件,需要分析前端 Vue 源码找到真实 API

第三步:逐一攻克

  • OpenClaw能力强大,在数次调整后能够快速解决这些问题。

第四步:一句话提炼成 Skill

所有问题解决后,我对 Agent 说:把这次的经验整理成一个 Skill,分享给其他人。

Agent 使用 OpenClaw 内置的 skill-creatorinit_skill.py 初始化 + package_skill.py 打包),自动生成了完整的 Skillhttps://github.com/kingdoooo/openclaw-setup-guides/blob/main/gmail-invoice-downloader.skill):

gmail-invoice-downloader/
├── SKILL.md                        # 核心工作流 + 关键教训
├── scripts/
│   ├── gmail-auth.py               # OAuth2 一次性授权
│   ├── gmail-helper.py             # Gmail API 搜索
│   └── download-invoices.py        # 完整下载流水线
└── references/
    ├── setup.md                    # Gmail API 配置指南
    └── platforms.md                # 不同平台的发票下载模式

这就是 Skill 系统的价值:经验不只是解决一次问题,而是沉淀成可复用的知识。

6. 总结

类别

措施

效果

网络安全

SSM 中转 + VPC Endpoint

零公网暴露,AWS 服务走内网

认证安全

IAM Role 临时凭证

无永久密钥泄露风险

配置安全

OpenClaw-Skill

OpenClaw/Claude Code 改配置前都有参考

插件案例

skill-vetter扫描

减少恶意Skill风险

自愈

systemd + Claude Code 自动修复

60s 5 次崩溃自动诊断修复

搜索

Tavily + Gemini Deep Search

快速同步 + 深度异步,两层递进

语音

AWS Transcribe Streaming

2-3s 延迟,自动转写,费用极低

自建 Skill

经验提炼 + skill-creator 打包

踩坑经验沉淀为可复用知识

OpenClaw 本身是一个强大的框架,但真正的价值在于你如何围绕它构建自己的安全和能力体系。

本文自愈/搜索/语音/发票下载等功能增强的配置,可以在GitHub中下载。也可以直接将Repo链接发送给OpenClaw,让它自己配置。

7. OpenClaw on AWS — 4 种部署方式

OpenClaw 在 AWS 上有 4 种部署方式,覆盖从个人体验到企业级多租户的不同场景。

7.1. 方式 1:OpenClaw on AWS with Bedrock

一键 CloudFormation 部署,适合个人和小团队。

  • 部署方式:一个 CloudFormation 模板,约 8 分钟完成
  • 计算资源:EC2 实例(Graviton ARM,比 x86 便宜 20-40%)
  • 模型接入:Amazon Bedrock(Claude、Minimax、GLM、Nova、DeepSeek、Llama 等),IAM 认证,无需 API Key
  • 安全设计:SSM Session Manager 访问(无公网端口)、VPC Endpoint 内网通信、CloudTrail 审计

这是本文开头介绍的部署方式。

GitHub: sample-OpenClaw-on-AWS-with-Bedrock

7.2. 方式 2:OpenClaw on AWS EKS(多租户)

Kata 容器 + 裸金属节点,适合企业级多租户。

  • 部署方式:EKS 集群 + 编排层(Router / Orchestrator / Reconciler)
  • 租户隔离:每个用户运行在独立的 Kata Containers 微虚机中,裸金属节点提供硬件级隔离
  • 网络隔离:VPC CNI NetworkPolicy(eBPF)
  • 数据隔离:EKS Pod Identity + ABAC Session Tags,每个租户只能访问自己的 S3 数据
  • 弹性:Karpenter 自动扩缩裸金属节点,预热池减少冷启动
  • 状态持久化:Pod 终止前自动同步状态到 S3

适合需要给多个用户/团队提供 Agent 服务的企业,安全隔离级别高。

GitHub: sample-multi-tenancy-openclaw-on-eks

7.3. 方式 3:OpenClaw on Bedrock AgentCore

Serverless 微虚机,按用户隔离,实验性参考架构。

  • 计算模型:AgentCore Runtime,每个用户独立的 Serverless 微虚机,无空闲计算成本
  • 冷启动:冷启动时间10-15 秒
  • 持久化:S3 同步 .openclaw/ 目录,微虚机回收后状态不丢失
  • 安全:私有子网、Webhook 加密校验、KMS 静态加密、最小权限 IAM
  • 调度:EventBridge Scheduler 支持定时任务

GitHub: sample-host-openclaw-on-amazon-bedrock-agentcore

7.4. 方式 4:OpenClaw on Lightsail

最简部署,适合快速体验。

  • 部署方式:Lightsail 实例,简化的 Amazon 计算服务
  • 目标用户:想快速体验 OpenClaw 的开发者和小团队
  • 特点:固定月费、简单管理界面
  • 模型集成:通过 Amazon Bedrock 接入基础模型

适合不想处理 VPC、IAM 等复杂配置,只想快速跑起来试试的用户。

博客: Introducing OpenClaw on Amazon Lightsail

7.5. 方式对比

维度

Bedrock (EC2)

EKS 多租户

AgentCore

Lightsail

复杂度

低(一键部署)

中(K8s + Kata

中(CDK

适合场景

个人 / 小团队

企业多租户

企业多租户

快速体验

租户隔离

单用户

硬件级(微虚机)

用户级(Serverless

单用户

弹性伸缩

手动

Karpenter 自动

Serverless 自动

手动

安全级别

SSM + VPC Endpoint

Kata + eBPF + ABAC

KMS + 私有子网

基础

成本模型

EC2 按实例

EC2 裸金属 + EKS

按调用

固定月费

注意:在本文写作时,各项目仍在不断更新,实际情况可能会发生变化。请关注相关GitHub项目,获取最新信息。

8. 致谢与参考

本文的实践很大程度上受到以下项目和内容的启发:

参考

说明

AI超元域 YouTube

OpenClaw 深度教程、搜索增强方案(Codex + Tavily)等

win4r/OpenClaw-Skill

OpenClaw 参考文档 Skill8800+ 行,覆盖全部核心功能

OpenClaw 官方文档

配置参考、音频转写、cron 调度等

OpenClaw GitHub

源码和 issue 讨论

AWS VPC Endpoints 文档

VPC Endpoints 配置参考

9. 结语

➡️ 下一步行动:

相关产品:

  • Amazon VPC — 用于启动 AWS 资源的隔离云网络
  • Amazon Bedrock — 用于构建生成式人工智能应用程序和代理的端到端平台
  • Amazon Transcribe — 自动将语音转换为文本
  • Amazon EC2 — 安全且可调整大小的计算容量,支持几乎所有工作负载
  • Amazon IAM — 身份管理以及对 AWS 服务和资源的访问权限

相关文章:

*前述特定亚马逊云科技生成式人工智能相关的服务目前在亚马逊云科技海外区域可用。亚马逊云科技中国区域相关云服务由西云数据和光环新网运营,具体信息以中国区域官网为准。

本篇作者

彭金冬

亚马逊云科技解决方案架构师,负责电商行业客户的架构设计和技术支持。


AWS 架构师中心:云端创新的引领者

探索 AWS 架构师中心,获取经实战验证的最佳实践与架构指南,助您高效构建安全、可靠的云上应用