Cloudflare 如何检测 MCP 流量并帮助保护其安全

💡 原文英文,约3800词,阅读约需14分钟。
📝

内容提要

Cloudflare 推出新功能,通过识别MCP协议流量、检测影子MCP和门户绕过,帮助管理员监控和控制AI代理的工具调用。结合MCP服务器门户和网关策略,可阻止未批准的连接,并支持私有服务器和OAuth,提升安全治理。

🔎

延伸解读

MCP 流量识别的技术原理

文章指出,MCP 流量并不总是带有明显的 URL 特征,例如路径中不一定包含 /mcp。Cloudflare 通过检查 HTTP 头中的 MCP-Protocol-Version 来识别符合规范的流量,而较新的 2026-07-28 规范还引入了 Mcp-Method 和 Mcp-Name 头,使得网络设备无需解析请求体即可识别操作类型。但需要注意,旧版客户端或非标准实现可能不携带这些头,因此仅靠头部检测存在盲区。

影子 MCP 与门户绕过的区别

文章区分了两种安全风险:影子 MCP 指员工直接连接未经批准的服务器,而门户绕过则是员工绕过已批准服务器的门户直接访问其上游地址。两者都需要网络层控制,但门户绕过还需要服务器端配合,例如通过 Access 策略或源 IP 限制来拒绝直接请求。理解这一区别有助于管理员针对不同场景制定策略。

三层控制点的权衡

文章比较了在客户端、网络边界和 MCP 服务器三个位置实施控制的优劣。客户端控制最早但难以统一管理;网络层覆盖面广但需要 TLS 解密且无法看到本地 stdio 调用;服务器端控制最精确但仅对实现了该控制的服务器有效。实际部署中应结合三层控制,以兼顾覆盖面和深度。

从发现到治理的路径

文章提出了一条从发现到治理的路径:先通过仪表盘和日志识别 MCP 流量,再决定是否批准服务器,将批准的服务器纳入门户,最后通过策略阻止绕过门户的直接连接。这一流程强调先建立可见性,再逐步收紧控制,避免一开始就全面封锁影响业务。

Q&A

Cloudflare 如何检测 MCP 流量?

Cloudflare 通过检查 TLS 解密后的 HTTP 请求中的 MCP-Protocol-Version 头来识别 MCP 流量。该头在 MCP 2025-11-25 规范中要求客户端在初始化后发送,在 2026-07-28 规范中要求每个 POST 请求都包含。Gateway 使用此信号将流量分类为 MCP,并提供 experimental.is_mcp 选择器供管理员在策略中使用。

什么是影子 MCP 和门户绕过?它们有什么区别?

影子 MCP 是指员工直接连接未经组织批准的 MCP 服务器,安全团队无法了解其工具和数据。门户绕过是指员工绕过组织提供的 MCP 门户,直接连接到上游服务器,从而跳过访问策略、工具目录和审计。区别在于影子 MCP 涉及未批准的服务器,而门户绕过涉及已批准但被绕过的情况。

Cloudflare 如何帮助阻止影子 MCP 流量?

Cloudflare Gateway 可以识别 TLS 检查后的 MCP 流量,并允许管理员使用 experimental.is_mcp 选择器在策略中阻止或允许该流量。此外,MCP 流量仪表板显示哪些主机和用户正在生成 MCP 流量,帮助管理员发现影子 MCP。管理员可以将发现的服务器放入 MCP 门户,并通过 Gateway 策略阻止未通过门户的 MCP 连接。

MCP 流量仪表板提供哪些信息?

仪表板显示总 MCP 请求数、唯一用户数、唯一服务器数、随时间变化的 MCP 服务器请求数、按入口(门户或直接连接)的流量细分、门户外最常见的 MCP 服务器(影子 MCP)以及按请求量排名的用户。管理员可以按服务器、用户或入口类型过滤,并深入查看 Gateway 日志。

Cloudflare 如何强制仅通过 MCP 门户访问?

Cloudflare 在 Gateway 策略中引入了流量来源选择器,当流量通过 MCP 门户路由时,会带有 mcp_portal 流量来源。管理员可以编写策略,例如:experimental.is_mcp == true and not traffic.onramp in ("mcp_portal") 则阻止,从而阻止直接连接,只允许通过门户的流量。

MCP 门户如何支持 OAuth 认证?

MCP 门户现在支持预注册的 OAuth 客户端。管理员可以手动配置 OAuth 凭据,注册回调 URL,并输入客户端 ID 和密钥。门户会尽可能自动发现 OAuth 元数据,否则管理员需手动提供授权、令牌、撤销和发行者端点。每个用户仍需授权访问自己的数据源,存储的客户端密钥仅用于获取更新的工具和提示列表。

Cloudflare 如何支持私有 MCP 服务器?

Cloudflare 正在开发让 MCP 门户通过 Cloudflare Gateway 路由连接到私有网络中的服务器。私有服务器保留其私有主机名,门户通过 Cloudflare 的私有路由访问它,并应用相同的访问策略、日志和工具控制。目前该功能正在积极开发中。

Cloudflare Agents SDK 如何支持新的无状态 MCP 协议?

Cloudflare Agents SDK v0.20.0 支持 MCP 2026-07-28 无状态协议,作为客户端和服务器。客户端首先探测 server/discover,如果不支持则回退到传统的 initialize 握手。服务器端 createMcpHandler 可以直接从 Worker 提供无状态工具,无需传输会话或 Durable Object。

🏷️

标签

➡️

继续阅读