news 2026/4/14 15:37:13

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 后缀用途
控制面 APIbedrock管理模型、Guardrails 等
运行时 APIbedrock-runtimeInvokeModel、Converse 调用
Mantle APIbedrock-mantle推理相关
Agents 构建bedrock-agentAgent 定义、Knowledge Base 配置
Agents 运行时bedrock-agent-runtimeAgent 运行时调用

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

用 AWS CLI 创建:

# 创建 Bedrock Runtime VPC Endpointaws 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 的入站流量:

# 创建专用安全组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\--protocoltcp\--port443\--cidr10.0.0.0/16

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

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

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

{"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之后,不需要改任何代码。验证:

# 检查 DNS 解析nslookupbedrock-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 后缀什么时候需要
S3s3(Gateway 类型,免费)用了 S3 存储/知识库
CloudWatch Logslogs推日志到 CloudWatch
Secrets ManagersecretsmanagerOpenClaw SecretRef 读密钥
STSstsIAM Role 认证
EC2 Messagesec2messagesSystems Manager 连接
SSMssmSystems 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 是手动创建的,可能默认没开:

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)上验证通过。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/14 15:36:11

YOLOFuse应用解析:在工业检测中实现复杂环境下的目标识别

YOLOFuse应用解析:在工业检测中实现复杂环境下的目标识别 1. 多模态目标检测的技术背景 在工业检测领域,传统基于可见光的目标检测系统面临着诸多挑战。光照不均、烟雾粉尘、设备反光等复杂环境因素常常导致检测精度大幅下降。以半导体晶圆检测为例&am…

作者头像 李华
网站建设 2026/4/14 15:36:10

PYTHON_DAY20_数据库

数据库概述 学习目标 知道什么是数据库 知道关系型数据库和非关系型数据库的区别 一、 什么是数据库? 简单来说,数据库就是一个有组织、可高效访问和管理的电子化数据集合。 我们可以用一个形象的比喻来理解: 文件柜 vs. 数据库&#…

作者头像 李华
网站建设 2026/4/14 15:35:32

深入解析Neurosim芯片架构设计(二):从Tile到PE的层次化实现

1. Neurosim芯片的层次化架构全景 第一次看到Neurosim芯片的架构图时,那种感觉就像初次拆解俄罗斯套娃——从最外层的Chip Level开始,逐层打开Tile、PE、Sub-array这些精妙的层级结构。这种层次化设计可不是为了好看,而是实实在在解决了神经网…

作者头像 李华
网站建设 2026/4/14 15:34:17

McpAgentExecutor + McpClient:让 Agent 直接操作文件系统和数据库

标签:Java MCP NPX Agent j-langchain McpAgentExecutor 文件系统 数据库 前置阅读:Java Agent 集成 MCP 工具协议 → McpAgentExecutor:用几行代码让模型自主调用 HTTP 工具 适合人群:已配置好 NPX MCP 服务器,希望 A…

作者头像 李华
网站建设 2026/4/14 15:32:13

Android audio中的AUDIO_OUTPUT_FLAG_NON_BLOCKING

什么是AUDIO_OUTPUT_FLAG_NON_BLOCKING如字面意思,非阻塞式写入,在以下文件中也有相关定义。AudioOutputFlags.aidl /*** Write operations must return as fast as possible instead of* being blocked until all provided data has been consumed.*/ N…

作者头像 李华