Anthropic MCP 隧道:让 AI Agent 安全访问内网,数据不出墙

2026-05-20 15 预计阅读时间:1 分钟
来源:infoq.com AI 摘要 原文链接

免责声明:本文为 AI 摘要整理,建议结合原文阅读。摘要可能省略上下文、版本差异或边界条件,不作为官方说明。

预计阅读时间:8 分钟

企业想用自主 Agent,但不想把执行环境或内部系统暴露到公网——这是过去一年里最常被提起的矛盾。Anthropic 这次给出的答案是两条新能力:自托管沙箱MCP 隧道,都属于 Claude Managed Agents 平台的扩展。核心思路很简单:Agent 可以跑,但边界不能破。

企业部署 Agent 的安全困境

自主 Agent 要干活,就得连数据库、读内部文档、调用私有 API。传统做法要么把这些资源开个公网口子,要么把 Agent 整个搬到云上跑——两种方案对安全团队来说都像在防火墙上凿洞。

更麻烦的是执行环境。Agent 生成代码、执行脚本,需要一个运行沙箱。如果沙箱在 Anthropic 的基础设施上,企业合规团队往往直接否决:代码和数据不能离开我们的安全边界。

MCP 隧道和自托管沙箱分别解决这两个问题。

MCP 隧道:反向打通,而非正面暴露

MCP(Model Context Protocol)是 Anthropic 推出的开放协议,让 LLM 通过标准化接口连接外部工具和数据源。之前用 MCP,你得把 MCP Server 部署到 Agent 能直接访问的地方——对内网服务来说,这意味着要么暴露端口,要么搞 VPN。

MCP 隧道换了个方向:内网里的 MCP Server 不需要主动暴露任何端口,而是通过隧道把连接"推"出去到 Anthropic 的 Managed Agent 平台。Agent 发起的请求顺着隧道回到内网,响应再顺着隧道送回去。整个过程对内网基础设施来说,只有一条出站连接,没有入站端口开放。

这对安全审计很关键——你只需要在防火墙上批准一条出站规则,而不是维护一堆入站白名单。

自托管沙箱:代码在你自己的院子里跑

自托管沙箱解决的是另一个问题:Agent 生成的代码在哪里执行?

以前 Managed Agents 的沙箱在 Anthropic 侧运行。现在企业可以在自己的 Kubernetes 集群或裸金属服务器上部署沙箱运行时。Agent 仍然由 Anthropic 平台调度,但实际执行发生在企业可控的基础设施内。日志、审计、网络策略全都留在本地。

两个能力组合起来,整条链路就不出墙了:Agent 调度在云端,执行在你机房,数据访问通过隧道回到内网。

实践:搭建一条 MCP 隧道连接内网 PostgreSQL

下面用一个最小可跑示例演示如何把内网 PostgreSQL 通过 MCP 隧道暴露给 Claude Managed Agent,同时保持数据库不出公网。

前提:你有一个内网 PostgreSQL(假设地址 pg.internal.corp:5432),已安装 Anthropic MCP CLI 工具(mcp-cli),且有 Claude Managed Agents 平台的企业账号。

1. 编写 MCP Server 配置

创建 mcp-pg-server.json

{
  "mcpServers": {
    "internal-postgres": {
      "command": "mcp-server-postgres",
      "args": [],
      "env": {
        "PG_HOST": "pg.internal.corp",
        "PG_PORT": "5432",
        "PG_DATABASE": "orders",
        "PG_USER": "agent_reader",
        "PG_PASSWORD": "${PG_PASSWORD}"
      }
    }
  }
}

mcp-server-postgres 是 Anthropic 提供的官方 MCP Server 之一,封装了 PostgreSQL 的查询能力为 MCP 工具接口。密码通过环境变量注入,不要硬编码。

2. 启动隧道

# 设置密码环境变量
export PG_PASSWORD="your-secure-password"

# 启动 MCP 隧道——建立出站连接到 Anthropic 平台
mcp-cli tunnel start \
  --config mcp-pg-server.json \
  --tunnel-name "corp-pg-tunnel" \
  --region us-east-1

这条命令做的事: - 在本地启动 MCP Server 进程,连接到内网 PostgreSQL - 向 Anthropic Managed Agents 平台建立一条出站 WebSocket 长连接(隧道) - 注册工具 internal-postgres,让平台侧的 Agent 可以发现并调用

关键点:只有出站连接。你的防火墙只需要允许到 Anthropic 隧道端点的出站流量(通常是 tunnel.mcp.anthropic.com:443),不需要开任何入站端口。

3. 在 Managed Agent 中使用

Agent 的任务配置中引用隧道名即可:

agent:
  name: order-query-agent
  model: claude-sonnet-4-20250514
  tunnel_refs:
    - corp-pg-tunnel
  prompt: |
    你是订单查询助手。用户会问订单状态、金额、发货信息。
    使用 internal-postgres 工具查询 orders 表。
    只返回事实数据,不要猜测。
  sandbox: self-hosted  # 指定使用自托管沙箱

tunnel_refs 告诉 Agent 通过哪条隧道访问工具。sandbox: self-hosted 确保执行环境在企业内部。

4. 验证隧道状态

# 查看隧道是否存活
mcp-cli tunnel status corp-pg-tunnel

# 输出大致如下:
# Tunnel: corp-pg-tunnel
# Status: active
# Uptime: 2h 15m
# Connected servers: 1 (internal-postgres)
# Last heartbeat: 3s ago

如果隧道断开,Agent 会收到工具不可用的信号,不会卡死或尝试直连。

落地前的几件事

检查项 说明
出站防火墙规则 只需开放到 Anthropic 隧道端点的 443 端口出站,拒绝所有入站
MCP Server 权限 给 Agent 用的数据库账号只读、只限必要表,不要用超级用户
隧道心跳监控 隧道断开时 Agent 工具调用会失败,需要告警和自动重连机制
自托管沙箱资源 预估 Agent 并发执行量,给沙箱集群留够 CPU/内存,避免排队
审计日志 MCP Server 和沙箱的日志都要留在本地,定期导出合规报告
隧道凭证轮换 隧道认证 token 设定过期时间,纳入企业密钥轮换流程

一个风险点:隧道虽然只有出站连接,但逻辑上 Agent 已经能操作内网资源。权限边界不在网络层,而在 MCP Server 提供的工具定义里。如果 MCP Server 暴露了 DELETE 操作,Agent 就可能删数据——所以工具接口的设计本身就是安全边界,要像设计 API 权限一样认真。

MCP 隧道和自托管沙箱不是万能方案,但它们把"Agent 要进内网"这个需求从"开洞"变成了"拉线"。对安全团队来说,这是从否决到可以谈的区别。


相关推荐