OpenClaw 部署安全第一步:用 VPC Endpoint 让 AI Agent 调用 Bedrock 全走内网

OpenClaw 部署安全第一步:用 VPC Endpoint 让 AI Agent 调用 Bedrock 全走内网

上周排查一个延迟问题时发现了一个让我不太舒服的事:我的 OpenClaw(龙虾)Agent 调用 Amazon Bedrock 的请求,全部走的公网。OpenClaw 的 Skills 每次执行都会调大模型,这些流量全经过公网,安全隐患不小。

虽然请求是 HTTPS 加密的,但流量从 EC2 出去走公网、到 Bedrock 的 endpoint、再回来------中间经过了公共互联网。在企业安全审计的视角,这是个风险点:流量路径不可控,而且如果有人做中间人攻击(虽然概率很低),数据有暴露的可能。

更关键的是,如果你的 OpenClaw AI Agent 处理的是公司内部数据(比如用 Skills 对接 RAG 做知识库问答),大模型调用数据出公网这件事本身在合规上就可能过不去。

好消息是,亚马逊云科技的 VPC Endpoint(PrivateLink)可以完美解决这个云安全问题------让 EC2 到 Bedrock 的所有流量走 VPC 内网,完全不经过公网

折腾了一下午配好了,记录完整过程。

先理解问题:默认流量怎么走的

默认情况下,EC2 调用 Bedrock API 的流量路径是这样的:

复制代码
EC2 → NAT Gateway → Internet Gateway → 公网 → Bedrock Endpoint

或者如果你的 EC2 有公网 IP:

复制代码
EC2 → Internet Gateway → 公网 → Bedrock Endpoint

问题出在"公网"这一段。流量离开了你的 VPC,经过了亚马逊的公共网络骨干。虽然 TLS 加密保护了数据内容,但:

  • 流量路径不可控
  • 多了 NAT Gateway 的费用(数据处理费 $0.045/GB)
  • 延迟多了几毫秒(不多但有感知)
  • 合规审计时是个减分项

VPC Endpoint 怎么解决

配了 VPC Endpoint 之后,流量路径变成:

复制代码
EC2 → VPC Endpoint(ENI)→ PrivateLink → Bedrock

全程在亚马逊云科技的内部网络里走,不经过公网。VPC Endpoint 在你的子网里创建一个 ENI(弹性网络接口),流量直接从这个 ENI 走 PrivateLink 到 Bedrock。

动手配置

Step 1:创建 Bedrock VPC Endpoint

Amazon Bedrock 有 5 个 endpoint 后缀,按需创建:

服务 Endpoint 后缀 用途
控制面 API bedrock 管理模型、Guardrails 等
运行时 API bedrock-runtime InvokeModel、Converse 调用
Mantle API bedrock-mantle 推理相关
Agents 构建 bedrock-agent Agent 定义、Knowledge Base 配置
Agents 运行时 bedrock-agent-runtime Agent 运行时调用

日常跑 OpenClaw 龙虾只需要 bedrock-runtime(Skills 调大模型),如果用了 Knowledge Base 还需要 bedrock-agent-runtime

用 AWS CLI 创建:

bash 复制代码
# 创建 Bedrock Runtime VPC Endpoint
aws ec2 create-vpc-endpoint \
  --vpc-id vpc-xxxxxxxx \
  --service-name com.amazonaws.us-west-2.bedrock-runtime \
  --vpc-endpoint-type Interface \
  --subnet-ids subnet-aaaa subnet-bbbb \
  --security-group-ids sg-xxxxxxxx \
  --private-dns-enabled

关键参数:

  • --vpc-endpoint-type Interface:接口类型端点(PrivateLink)
  • --subnet-ids:选你 EC2 所在的子网
  • --private-dns-enabled:开启私有 DNS,这样 bedrock-runtime.us-west-2.amazonaws.com 会自动解析到内网地址

Step 2:安全组配置

VPC Endpoint 的安全组需要允许 EC2 的入站流量:

bash 复制代码
# 创建专用安全组
aws ec2 create-security-group \
  --group-name bedrock-vpce-sg \
  --description "Security group for Bedrock VPC Endpoint" \
  --vpc-id vpc-xxxxxxxx

# 允许 VPC 内部 HTTPS 流量
aws ec2 authorize-security-group-ingress \
  --group-id sg-vpce-xxxxx \
  --protocol tcp \
  --port 443 \
  --cidr 10.0.0.0/16

这里 10.0.0.0/16 是你 VPC 的 CIDR,意思是 VPC 内所有实例都能访问这个 Endpoint。生产环境可以收紧到 EC2 所在子网的 CIDR。

Step 3:Endpoint Policy(可选但推荐)

默认的 Endpoint Policy 允许所有操作。生产环境建议收紧:

json 复制代码
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:role/openclaw-instance-role"
      },
      "Effect": "Allow",
      "Action": [
        "bedrock:InvokeModel",
        "bedrock:InvokeModelWithResponseStream"
      ],
      "Resource": "arn:aws:bedrock:us-west-2::foundation-model/*"
    }
  ]
}

这样只有指定的 IAM Role 能通过这个 Endpoint 调用 Bedrock,而且只允许 InvokeModel 操作。双重保险。

Step 4:验证流量走内网

开了 --private-dns-enabled 之后,不需要改任何代码。验证:

bash 复制代码
# 检查 DNS 解析
nslookup bedrock-runtime.us-west-2.amazonaws.com

# 应该返回 VPC 内网 IP(10.x.x.x),不是公网 IP

如果返回的是 10.x.x.x 的内网地址,说明流量已经走 VPC Endpoint 了。

VPC 网络架构

配 VPC Endpoint 的同时,顺带说一下 AI Agent 服务器的网络架构。

推荐的架构:

复制代码
VPC (10.0.0.0/16)
├── 公有子网 (10.0.1.0/24)
│   └── NAT Gateway(给私有子网提供出网能力)
├── 私有子网 (10.0.2.0/24)
│   ├── EC2(OpenClaw)--- 无公网 IP
│   └── VPC Endpoint ENI(Bedrock Runtime)
└── 安全组
    ├── EC2 SG:入站仅允许你的 IP SSH(22)
    └── VPCE SG:入站允许 VPC CIDR 的 443

EC2 放在私有子网,没有公网 IP,SSH 通过 EC2 Instance Connect Endpoint(EICE)或 Systems Manager Session Manager 连接。Bedrock 调用走 VPC Endpoint。如果 Agent 需要访问外部网站(比如爬网页、调第三方 API),通过 NAT Gateway 出去。

还需要哪些 VPC Endpoint?

除了 Bedrock,OpenClaw 龙虾的 Skills 运行时可能还需要这些 Endpoint:

服务 Endpoint 后缀 什么时候需要
S3 s3(Gateway 类型,免费) 用了 S3 存储/知识库
CloudWatch Logs logs 推日志到 CloudWatch
Secrets Manager secretsmanager OpenClaw SecretRef 读密钥
STS sts IAM Role 认证
EC2 Messages ec2messages Systems Manager 连接
SSM ssm Systems Manager

S3 的 Gateway Endpoint 是免费的,建议无脑开。其他的 Interface Endpoint 按需开,每个约 $0.01/小时/AZ。

成本对比

项目 走公网(NAT) 走 VPC Endpoint
数据处理费 $0.045/GB(NAT) $0.01/GB(Endpoint)
固定费 $0.045/小时(NAT) $0.01/小时/AZ(Endpoint)
延迟 多几ms 内网直连
安全性 流量过公网 全程内网

如果你的 OpenClaw AI Agent 每天通过 Skills 调几百次 Bedrock 大模型,流量不大,成本差异不明显。但如果是 RAG 场景大量读写 S3 + 频繁调用大模型,VPC Endpoint 省的钱会很可观------特别是 S3 Gateway Endpoint 完全免费。

踩坑记录

坑 1:Private DNS 需要 VPC 开启 DNS 支持

--private-dns-enabled 生效的前提是 VPC 的 enableDnsSupportenableDnsHostnames 都是 true。如果你的 VPC 是手动创建的,可能默认没开:

bash 复制代码
aws ec2 modify-vpc-attribute --vpc-id vpc-xxx --enable-dns-support '{"Value": true}'
aws ec2 modify-vpc-attribute --vpc-id vpc-xxx --enable-dns-hostnames '{"Value": true}'

坑 2:安全组忘了开 443

VPC Endpoint 的安全组入站如果没开 443,请求会超时。报错信息不明显,看起来像 DNS 问题,实际是安全组拦了。

坑 3:多 AZ 建议都配上

Endpoint 只在你选的子网/AZ 里有 ENI。如果 EC2 和 Endpoint 不在同一个 AZ,流量会跨 AZ(多一点延迟和费用)。建议在 EC2 所在的 AZ 都配上。

总结

VPC Endpoint 不复杂但很重要,特别是跑 OpenClaw 龙虾这种 AI Agent 场景:

  1. 云安全:大模型 Bedrock 调用全走内网,合规审计放心
  2. 省钱:避免 NAT Gateway 的数据处理费
  3. :内网直连,Skills 执行延迟更低

对于跑 OpenClaw AI Agent 的 EC2,我的建议是至少配 bedrock-runtimes3 两个 Endpoint。S3 是免费的,Bedrock Runtime 每月不到 $8(单 AZ)。

如果你的 OpenClaw Agent 处理的是内部数据,VPC Endpoint 不是"建议配",是"必须配"。

下一篇聊聊怎么用 Secrets Manager 管理 OpenClaw AI Agent 的密钥------加密存储、自动轮转、审计日志一步到位。


以上配置在亚马逊云科技 EC2(us-west-2)上验证通过。

相关推荐
jixingkj2 小时前
避开设置误区,让免打扰模式真正适配你的生活
大数据·安全·智能手机
优家数科2 小时前
2026 中国净水出海白皮书:欧洲准入的技术红线与智能化破局
人工智能·mysql瓶颈
ZPC82102 小时前
MoveIt Servo 与自己编写的 Action Server 通信
人工智能·算法·机器人
AIminminHu2 小时前
OpenGL渲染与几何内核那点事-项目实践理论补充(一-3-(1):你的 CAD 终于能联网协作了,但渲染的“内功心法”到底是什么?)
人工智能·opengl
AI自动化工坊2 小时前
Caveman技能实战:优化AI对话风格实现65%的token成本节省
人工智能·深度学习·机器学习·ai·token·caveman
有个人神神叨叨2 小时前
Claude Managed Agents 快速入门笔记
人工智能·笔记
tyler_download2 小时前
揉扁搓圆transformer架构:KL散度损失函数的说明
人工智能·深度学习·transformer
蔡俊锋2 小时前
AI前沿动态高效追踪指南
人工智能·深度学习·ai·ai学习
小荟荟2 小时前
全国数据资产新闻和报纸摘要联播 2026年3月26日 第29期
大数据·人工智能