惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 聂微东
Forbes - Security
Forbes - Security
IT之家
IT之家
P
Privacy International News Feed
宝玉的分享
宝玉的分享
小众软件
小众软件
Google DeepMind News
Google DeepMind News
美团技术团队
G
GRAHAM CLULEY
T
Tor Project blog
Recorded Future
Recorded Future
I
Intezer
C
Cyber Attacks, Cyber Crime and Cyber Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
The Hacker News
The Hacker News
Hugging Face - Blog
Hugging Face - Blog
A
About on SuperTechFans
Scott Helme
Scott Helme
WordPress大学
WordPress大学
F
Full Disclosure
D
Docker
G
Google Developers Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Cyberwarzone
Cyberwarzone
The Last Watchdog
The Last Watchdog
V
V2EX
www.infosecurity-magazine.com
www.infosecurity-magazine.com
NISL@THU
NISL@THU
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Security Latest
Security Latest
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Recent Announcements
Recent Announcements
P
Palo Alto Networks Blog
L
LINUX DO - 热门话题
V
Visual Studio Blog
B
Blog RSS Feed
Microsoft Security Blog
Microsoft Security Blog
博客园 - 叶小钗
N
Netflix TechBlog - Medium
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
量子位
腾讯CDC
H
Heimdal Security Blog
博客园 - 【当耐特】
Simon Willison's Weblog
Simon Willison's Weblog
P
Privacy & Cybersecurity Law Blog
S
Securelist
Vercel News
Vercel News
J
Java Code Geeks

土法炼钢兴趣小组的算法知识备份

国密算法与国密 TLS 系列索引 【系统架构设计】架构质量属性:不只是"高可用高性能" 【系统架构设计百科】告警策略:如何避免"狼来了" 【系统架构设计】CQRS:读写分离的架构哲学 【系统架构设计】空间架构:极端扩展场景的解法 【系统架构设计】微服务架构深度审视:优势、代价与适用边界 【系统架构设计】扩展性原理:水平、垂直与对角扩展 【系统架构设计】无状态设计:扩展的第一步也是最难的一步 【系统架构设计】缓存架构:从本地到分布式的多级缓存体系 【系统架构设计】管道与过滤器:Unix 哲学的架构表达 【系统架构设计】复杂性管理:架构的核心战场 【系统架构设计】消息队列架构:异步解耦的设计与陷阱 【系统架构设计】CDN 架构:全球加速的设计原理 【系统架构设计】连接池设计:被忽视的性能杀手 【系统架构设计】弹性设计模式:熔断器、舱壁与超时 【系统架构设计】高可用设计模式:冗余、故障转移与仲裁 【系统架构设计】容量规划:从拍脑袋到数据驱动 【系统架构设计】数据库扩展:分库分表的工程实践与替代方案 【系统架构设计】SLO 工程:可靠性的量化管理 【系统架构设计】性能建模:用数学思维分析系统瓶颈 【系统架构设计】混沌工程:主动验证系统的韧性 【系统架构设计】零拷贝与内存映射:数据搬运的极致优化 【系统架构设计】线程模型:从 thread-per-request 到协程 【系统架构设计】容灾架构:多活与灾备设计 【系统架构设计】数据库性能模式:索引、查询与连接管理 【系统架构设计】数据建模:从关系范式到文档模型的真实权衡 【系统架构设计】吞吐量优化:批处理、流水线与并发模型 【系统架构设计】流处理架构:从批处理到实时的范式迁移 【系统架构设计】搜索引擎架构:倒排索引之上的系统设计 【系统架构设计】时序数据架构:监控与 IoT 的存储设计 【系统架构设计】数据迁移与版本化:在线不停机的数据演进 【系统架构设计】数据湖与数据仓库:分析架构的演进路线 【系统架构设计】API 网关设计:入口层的职责边界 【系统架构设计】应用层数据一致性模式:在正确性与性能之间走钢丝 【系统架构设计】多模数据库选型:Polyglot Persistence 的工程实践 【系统架构设计】服务发现与注册:动态拓扑的基础设施 【系统架构设计】配置管理架构:从配置文件到配置中心 【系统架构设计】全链路压测:大规模系统的性能验证 【系统架构设计】幂等性设计:分布式环境下的安全重试 【系统架构设计】契约测试与 Schema 演进:服务间的信任协议 【系统架构设计】长连接与推送架构:WebSocket、SSE 与 MQTT 【系统架构设计】延迟分析:从 P50 到 P999 的全链路追踪 【系统架构设计百科】DDD 战术模式:聚合、实体与值对象 【系统架构设计百科】防腐层与开放主机服务:系统集成的 DDD 方案 【系统架构设计百科】领域事件与事件风暴:从业务到架构的桥梁 【系统架构设计百科】CQRS + Event Sourcing 完整实战:从领域建模到部署 【系统架构设计百科】DDD 与微服务:用领域模型划分服务边界 【系统架构设计】DDD 战略设计:限界上下文与上下文映射 【系统架构设计百科】认证架构:从 Session 到 JWT 到 OIDC 【系统架构设计】API 设计哲学:REST vs GraphQL vs gRPC 的真实权衡 排序算法专题:从 TimSort 到并行排序 【密码学百科】国密算法体系:SM2/SM3/SM4/SM9 全景解读 【密码学百科】承诺方案:Pedersen 承诺、向量承诺与多项式承诺 【密码学百科】不经意传输与隐私信息检索:OT、OT 扩展与 PIR 【密码学百科】门限密码学:门限签名、门限解密与分布式密钥生成 完美哈希:从理论到 gperf 实践 【密码学百科】安全多方计算:从 Yao 的混淆电路到实用 MPC 【密码学百科】同态加密:从 Paillier 到全同态加密(FHE) 【密码学百科】零知识证明系统:zk-SNARKs、zk-STARKs 与 Bulletproofs 【密码学百科】概率论与密码分析:生日攻击、差分分析与线性分析 【密码学百科】计算复杂性与归约:密码安全性证明的基石 【密码学百科】秘密共享:Shamir 方案、VSS 与安全多方计算入口 【密码学百科】椭圆曲线代数:Weierstrass 方程、点群运算与曲线选择 【密码学百科】离散对数与配对密码学:从 DLP 到 BLS 签名 【密码学百科】格密码数学基础:SVP、LWE 与格基约化 【密码学百科】抽象代数:群、环、域的密码学视角 【密码学百科】有限域算术:GF(2^n) 运算与在 AES/ECC 中的应用 【密码学百科】数论进阶:二次剩余、椭圆曲线上的 Weil 配对 【密码学百科】密码学简史:从凯撒密码到量子时代 【密码学百科】威胁模型与安全目标:CIA 三要素之外 【密码学百科】Kerckhoffs 原则与现代密码设计哲学 【密码学百科】随机性:密码学的基石 【密码学百科】信息论入门:熵、完美保密与 Shannon 定理 【密码学百科】分组密码原理:Feistel 网络与 SPN 结构 【密码学百科】AES 逐步拆解:SubBytes 到 MixColumns 的数学 【密码学百科】分组密码工作模式全览:ECB/CBC/CTR/OFB/CFB 【密码学百科】流密码:RC4 的兴衰与 ChaCha20 的崛起 【密码学百科】密码学哈希函数:MD5→SHA-2→SHA-3 的进化之路 【密码学百科】MAC 与 HMAC:消息认证的正确姿势 【密码学百科】认证加密(AEAD):GCM、ChaCha20-Poly1305 与 OCB 【密码学百科】密钥派生函数:HKDF、PBKDF2、Argon2 与密码存储 【密码学百科】公钥密码的数论基础:模运算、群、原根 【密码学百科】RSA 从原理到攻击:教科书 RSA 为什么不安全 【密码学百科】Diffie-Hellman 密钥交换与离散对数问题 【密码学百科】椭圆曲线密码学(ECC):从几何直觉到点群运算 【密码学百科】数字签名:ECDSA、EdDSA 与 Schnorr 签名 【密码学百科】现代密钥交换:X25519、ECDHE 与前向保密 【密码学百科】混合加密与 KEM/DEM 范式:ECIES 与 HPKE 【密码学百科】填充方案:PKCS#1 v1.5、OAEP 与 PSS 【密码学百科】TLS 协议全解析:从握手到 0-RTT 【密码学百科】PKI 与数字证书:信任链的构建与崩塌 【密码学百科】密码认证协议:从 SRP 到 OPAQUE 【密码学百科】零知识证明入门:如何证明你知道而不泄露 【密码学百科】安全信道构造:Noise 协议框架与 Signal 协议 【密码学百科】密钥管理工程:HSM、KMS 与密钥生命周期 【密码学百科】侧信道攻击:从时序攻击到功耗分析 【密码学百科】密码学实现陷阱:三层漏洞分类、审计工具链与系统性预防 密码敏捷性:如何设计可升级的密码系统 【密码学百科】OpenSSL/BoringSSL 架构剖析:ENGINE、Provider 与 FIPS 模块 排序基准测试:用数据说话
【Agent 身份与安全】MCP 架构与安全基线
Liao Tonglang · 2026-06-18 · via 土法炼钢兴趣小组的算法知识备份

Model Context Protocol(MCP) 把 LLM 应用连接外部工具和数据的标准化——Host 跑模型,Client 连 Server,Server 暴露 toolsresourcesprompts。从安全视角,MCP 解决的是工具供应链问题:谁认证 Server、谁授权 tool 调用、transport 上 secret 如何走。

本文以 MCP Specification截至 2026-06 的公开版本 2025-03-26,A 级)为准,标注与 OAuth 2.1 草案 的衔接点。旧版 HTTP+SSE transport(2024-11-05)已被 Streamable HTTP 取代——部署时需核对 Server 协议版本。


一、Host / Client / Server 三角

flowchart TD
  HOST["MCP Host<br/>IDE / Agent 运行时"]
  LLM["LLM"]
  CLIENT["MCP Client"]
  S1["Server: Git"]
  S2["Server: Postgres"]
  HOST --> LLM
  HOST --> CLIENT
  CLIENT -->|"stdio 或 Streamable HTTP"| S1
  CLIENT -->|"stdio 或 Streamable HTTP"| S2
角色 职责 信任假设
Host UI、模型推理、聚合多个 Client 用户直接交互;Host 策略是最后防线
Client 协议会话、capability 协商、JSON-RPC Host 内嵌;须受 Host 策略约束
Server tools / resources / prompts 默认不可信第三方

MCP 基于 JSON-RPC 2.0 消息(UTF-8)。生命周期:initializeinitialized → 能力交换 → tools/listtools/call 等。

关键架构事实:一个 Host 可连多个 Server。每个 Server 的 OAuth token、API key 必须隔离——Client 不得把 Server A 的 credential 泄漏给 Server B(第 07 篇 展开供应链)。


二、Transport:stdio vs Streamable HTTP

MCP spec 2025-03-26 定义两种标准 transport(A 级):

2.1 stdio

属性 规范要求
启动方式 Client 以子进程启动 Server
消息通道 stdin / stdout,newline 分隔 JSON-RPC
stderr Server 可写日志;Client 可忽略
stdout 约束 合法 MCP 消息——禁止 printf 调试污染
sequenceDiagram
  participant Client
  participant Server as Server Process
  Client->>+Server: Launch subprocess
  loop Message Exchange
    Client->>Server: Write JSON-RPC to stdin
    Server->>Client: Write JSON-RPC to stdout
    Server--)Client: Optional logs on stderr
  end
  Client->>Server: Close stdin, terminate
  deactivate Server

安全含义

  • 无网络暴露——攻击面从远程变为本地进程
  • 恶意 Server 二进制 = 本地代码执行(RCE)——与安装未签名 npm 包同级。
  • 缓解:签名验证、最小文件系统权限、容器隔离(联动 零信任供应链)。

2.2 Streamable HTTP(取代 HTTP+SSE)

2025-03-26 spec 用 Streamable HTTP 替代 2024-11-05 的 HTTP+SSE transport。

属性 要求
端点 单一 MCP endpoint,支持 POST + GET
POST 每个 JSON-RPC 消息一次 POST;可返回 JSON 或 SSE stream
GET 可选 SSE stream,Server 主动推送
Session Mcp-Session-Id header(初始化后)

Security Warning(spec 原文意图,A 级):

  1. Server 必须验证 Origin header——防 DNS rebinding。
  2. 本地 Server 只 bind 127.0.0.1,非 0.0.0.0
  3. Server 对所有连接做认证。

无上述保护时,远程网页可通过 DNS rebinding 调用用户本机 MCP Server——与 CSRF 变体同类。

2.3 Transport 对比表

维度 stdio Streamable HTTP
部署 本地子进程 独立 HTTP 服务
认证 进程边界 + OS 用户 OAuth / mTLS / API Key
多租户 单用户机器 团队共享 Server
主要威胁 恶意二进制、本地提权 网络攻击、Origin 绕过、会话劫持
TLS 不适用 必须 HTTPS

stdio 不是”更安全”——只是攻击面不同。企业远程 MCP 服务必须用 Streamable HTTP + 完整认证栈。

2.4 向后兼容

Spec 定义:新 Client 应对 Server URL POST InitializeRequest;若 4xx 则 fallback 旧 HTTP+SSE。生产环境应显式配置 transport 版本,避免静默降级到旧协议。


3.1 Tools

tools/list 返回 tool 名 + JSON Schema description。tools/call 执行 tool。

方法 数据流 风险
tools/list Server → Client → 可能进入 LLM context 恶意 description = indirect prompt injection 入口
tools/call LLM → Client → Server → 外部系统 越权调用、参数注入

3.2 Resources

resources/read 返回只读数据——内容可能含隐藏指令(安全侧见 第 07 篇)。credential 角度:resource URI 不得嵌入 token。

3.3 Prompts

Server 提供的 prompt 模板——同样进入模型 context,需 Host 侧 allowlist。


四、认证:OAuth 2.1 for MCP

MCP Authorization 扩展(截至 2026-06 仍为草案演进中,以 modelcontextprotocol.io 当前 spec 为准)描述:

  • MCP Server 作为 OAuth 2.0 Resource Server
  • Host/Client 作为 Public Client,走授权码 + PKCE
  • IAM OAuth 2.1 + PKCE 一致

4.1 推荐 token 模型

反模式 推荐
用户主 session token 注入 MCP Server per-Server scoped token
全 scope access token 共享给所有 Server 每 Server 独立 resource / audience
refresh token 存 MCP Server refresh 仅存 Host/Gateway;Server 拿短期 access token

Token Exchange 衔接:Host 经 Gateway 用 RFC 8693 换 audience=git-mcp-server 的 delegated token。

4.2 授权序列

sequenceDiagram
  participant User
  participant Host as MCP Host
  participant IdP as Authorization Server
  participant MCPS as MCP Server

  User->>Host: 连接 Git MCP Server
  Host->>IdP: PKCE authorize scope=mcp:tools:git
  IdP->>User: consent UI
  User->>IdP: 批准
  IdP->>Host: authorization code
  Host->>IdP: code + PKCE verifier
  IdP->>Host: access_token aud=git-mcp
  Host->>MCPS: Initialize + Bearer token
  MCPS->>MCPS: 验证 aud + scope + exp
  Host->>MCPS: tools/list, tools/call

4.3 Session 与 MCP HTTP Session

Streamable HTTP 的 Mcp-Session-Id

  • 初始化响应 header 返回
  • 后续 POST/GET 必须携带
  • Server 可随时 404 终止 session

安全:Session ID 应密码学随机(spec 建议 UUID/JWT/hash)。泄露 Session ID = 劫持 MCP 会话——须与 Bearer token 绑定或短期轮换。


风险 说明 缓解
Tool poisoning 恶意 description 诱导模型越权 Host 展示 tool 列表供用户批准;策略引擎过滤
Over-privileged tool run_sql 无 WHERE 限制 OPA/Cedar 在 Host 层
Indirect injection Resource 含隐藏指令 清洗 resource;本文只谈 credential 与授权
Cross-server leak Server A 的 token 出现在 Server B 请求 凭据隔离清单 §六

Host 应在 tools/call 发出前做策略检查——不能假设 LLM 输出参数安全。


六、Secret 隔离清单

  • 每个 Server 独立 OAuth client 或 resource indicator
  • token 存 Host 进程内存,写进 prompt / context / resource
  • stdio Server 最小文件系统权限(container / user namespace)
  • 远程 Server TLS + 可选证书 pin / mTLS
  • Origin 验证(Streamable HTTP)
  • localhost bind(本地 Server)
  • 审计:tool 名、参数 hash、delegator id(第 09 篇
  • Server 版本 pin + SBOM(第 07 篇

七、JSON-RPC 与错误处理

MCP 错误通过 JSON-RPC error 对象返回。Host 应区分:

错误类 安全动作
401 / 认证失败 不自动重试 user password;走 OAuth refresh
403 / scope 不足 提示用户 re-consent 或缩小 tool
Server 内部错误 不将 stack trace 注入 LLM context

八、多 Server 拓扑

flowchart LR
  subgraph Host Process
    C1[Client A]
    C2[Client B]
    POL[Policy Engine]
  end
  C1 -->|token_A| SA[Server A]
  C2 -->|token_B| SB[Server B]
  POL --> C1
  POL --> C2

Policy Engine 统一拦截所有 tools/call——与 零信任策略引擎 同构:默认拒绝、显式允许。


九、与 llm-infra 系列边界

llm-infra/ 讲框架选型、网关、部署。本系列讲 identity + policy + audit。MCP 工程实现见 llm-infra;安全基线以本文与 spec 为准。


十、部署检查表(Streamable HTTP)

检查项 通过标准
HTTPS 生产强制
Origin 验证 实现 spec Security Warning
OAuth PKCE Public Client 无 secret
Token audience 每 Server 独立
Session ID 熵 ≥ 128 bit
Rate limit 防 brute force / DoS
日志 不含 Bearer token 明文

十一、边界

  • 不预测 MCP spec 最终 IETF RFC 号
  • 不复现 prompt injection 攻击全文
  • Multi-Agent(A2A)不在本系列首批范围
  • OAuth 2.1 for MCP 截至 2026-06 为草案演进——以 spec 发布日期为准

十二、MCP Initialize 与安全

Initialize 前 HTTP 层须已完成 OAuth。Capability 协商应 disable 不需要的能力减攻击面。


十三、stdio 沙箱

专用低权用户、seccomp、网络 egress allowlist——恶意 Server 等同本地 RCE。


十四、DNS Rebinding

Spec Security Warning:验证 Origin、localhost bind、认证——缺任一项可被远程网页调用本地 MCP。


十五、OAuth Scope 命名

mcp:server:<id>:tools:invoke per-server——与 Token Exchange 组合。


十六、安全检查总表

# stdio HTTP
1 来源可信
2 per-server 凭据
3 TLS N/A
4 Origin N/A
5 Policy on tools/call

二十六.1 MCP 运维:Initialize 安全

MCP Host 在 Streamable HTTPstdio 混合部署时,Initialize 安全 决定可用性与安全窗口。Spec(2025-03-26,截至 2026-06)要求 Client 在 Initialize 安全 场景下仍保持 JSON-RPC 语义。

Transport Initialize 安全 注意点
stdio 子进程 Initialize 安全 隔离
HTTP TLS + OAuth + Initialize 安全 header 验证

Host 层 Function Calling 策略 应在 tools/call 发出前执行——Initialize 安全 不能替代 authorization。

sequenceDiagram
  participant Host
  participant Server
  Host->>Server: MCP request (Initialize 安全)
  Server->>Host: response / error

二十六.2 MCP 运维:SSE 重连

MCP Host 在 Streamable HTTPstdio 混合部署时,SSE 重连 决定可用性与安全窗口。Spec(2025-03-26,截至 2026-06)要求 Client 在 SSE 重连 场景下仍保持 JSON-RPC 语义。

Transport SSE 重连 注意点
stdio 子进程 SSE 重连 隔离
HTTP TLS + OAuth + SSE 重连 header 验证

Host 层 Function Calling 策略 应在 tools/call 发出前执行——SSE 重连 不能替代 authorization。

sequenceDiagram
  participant Host
  participant Server
  Host->>Server: MCP request (SSE 重连)
  Server->>Host: response / error

二十六.3 MCP 运维:session 固定

MCP Host 在 Streamable HTTPstdio 混合部署时,session 固定 决定可用性与安全窗口。Spec(2025-03-26,截至 2026-06)要求 Client 在 session 固定 场景下仍保持 JSON-RPC 语义。

Transport session 固定 注意点
stdio 子进程 session 固定 隔离
HTTP TLS + OAuth + session 固定 header 验证

Host 层 Function Calling 策略 应在 tools/call 发出前执行——session 固定 不能替代 authorization。

sequenceDiagram
  participant Host
  participant Server
  Host->>Server: MCP request (session 固定)
  Server->>Host: response / error

二十六.4 MCP 运维:CORS

MCP Host 在 Streamable HTTPstdio 混合部署时,CORS 决定可用性与安全窗口。Spec(2025-03-26,截至 2026-06)要求 Client 在 CORS 场景下仍保持 JSON-RPC 语义。

Transport CORS 注意点
stdio 子进程 CORS 隔离
HTTP TLS + OAuth + CORS header 验证

Host 层 Function Calling 策略 应在 tools/call 发出前执行——CORS 不能替代 authorization。

sequenceDiagram
  participant Host
  participant Server
  Host->>Server: MCP request (CORS)
  Server->>Host: response / error

二十六.5 MCP 运维:mTLS

MCP Host 在 Streamable HTTPstdio 混合部署时,mTLS 决定可用性与安全窗口。Spec(2025-03-26,截至 2026-06)要求 Client 在 mTLS 场景下仍保持 JSON-RPC 语义。

Transport mTLS 注意点
stdio 子进程 mTLS 隔离
HTTP TLS + OAuth + mTLS header 验证

Host 层 Function Calling 策略 应在 tools/call 发出前执行——mTLS 不能替代 authorization。

sequenceDiagram
  participant Host
  participant Server
  Host->>Server: MCP request (mTLS)
  Server->>Host: response / error

二十六.6 MCP 运维:rate limit

MCP Host 在 Streamable HTTPstdio 混合部署时,rate limit 决定可用性与安全窗口。Spec(2025-03-26,截至 2026-06)要求 Client 在 rate limit 场景下仍保持 JSON-RPC 语义。

Transport rate limit 注意点
stdio 子进程 rate limit 隔离
HTTP TLS + OAuth + rate limit header 验证

Host 层 Function Calling 策略 应在 tools/call 发出前执行——rate limit 不能替代 authorization。

sequenceDiagram
  participant Host
  participant Server
  Host->>Server: MCP request (rate limit)
  Server->>Host: response / error

二十六.7 MCP 运维:WAF

MCP Host 在 Streamable HTTPstdio 混合部署时,WAF 决定可用性与安全窗口。Spec(2025-03-26,截至 2026-06)要求 Client 在 WAF 场景下仍保持 JSON-RPC 语义。

Transport WAF 注意点
stdio 子进程 WAF 隔离
HTTP TLS + OAuth + WAF header 验证

Host 层 Function Calling 策略 应在 tools/call 发出前执行——WAF 不能替代 authorization。

sequenceDiagram
  participant Host
  participant Server
  Host->>Server: MCP request (WAF)
  Server->>Host: response / error

二十六.8 MCP 运维:content-type

MCP Host 在 Streamable HTTPstdio 混合部署时,content-type 决定可用性与安全窗口。Spec(2025-03-26,截至 2026-06)要求 Client 在 content-type 场景下仍保持 JSON-RPC 语义。

Transport content-type 注意点
stdio 子进程 content-type 隔离
HTTP TLS + OAuth + content-type header 验证

Host 层 Function Calling 策略 应在 tools/call 发出前执行——content-type 不能替代 authorization。

sequenceDiagram
  participant Host
  participant Server
  Host->>Server: MCP request (content-type)
  Server->>Host: response / error

二十六.9 MCP 运维:batch JSON-RPC

MCP Host 在 Streamable HTTPstdio 混合部署时,batch JSON-RPC 决定可用性与安全窗口。Spec(2025-03-26,截至 2026-06)要求 Client 在 batch JSON-RPC 场景下仍保持 JSON-RPC 语义。

Transport batch JSON-RPC 注意点
stdio 子进程 batch JSON-RPC 隔离
HTTP TLS + OAuth + batch JSON-RPC header 验证

Host 层 Function Calling 策略 应在 tools/call 发出前执行——batch JSON-RPC 不能替代 authorization。

sequenceDiagram
  participant Host
  participant Server
  Host->>Server: MCP request (batch JSON-RPC)
  Server->>Host: response / error

二十六.10 MCP 运维:progress notification

MCP Host 在 Streamable HTTPstdio 混合部署时,progress notification 决定可用性与安全窗口。Spec(2025-03-26,截至 2026-06)要求 Client 在 progress notification 场景下仍保持 JSON-RPC 语义。

Transport progress notification 注意点
stdio 子进程 progress notification 隔离
HTTP TLS + OAuth + progress notification header 验证

Host 层 Function Calling 策略 应在 tools/call 发出前执行——progress notification 不能替代 authorization。

sequenceDiagram
  participant Host
  participant Server
  Host->>Server: MCP request (progress notification)
  Server->>Host: response / error

二十六.11 MCP 运维:resource 订阅

MCP Host 在 Streamable HTTPstdio 混合部署时,resource 订阅 决定可用性与安全窗口。Spec(2025-03-26,截至 2026-06)要求 Client 在 resource 订阅 场景下仍保持 JSON-RPC 语义。

Transport resource 订阅 注意点
stdio 子进程 resource 订阅 隔离
HTTP TLS + OAuth + resource 订阅 header 验证

Host 层 Function Calling 策略 应在 tools/call 发出前执行——resource 订阅 不能替代 authorization。

sequenceDiagram
  participant Host
  participant Server
  Host->>Server: MCP request (resource 订阅)
  Server->>Host: response / error

二十六.12 MCP 运维:prompt 模板

MCP Host 在 Streamable HTTPstdio 混合部署时,prompt 模板 决定可用性与安全窗口。Spec(2025-03-26,截至 2026-06)要求 Client 在 prompt 模板 场景下仍保持 JSON-RPC 语义。

Transport prompt 模板 注意点
stdio 子进程 prompt 模板 隔离
HTTP TLS + OAuth + prompt 模板 header 验证

Host 层 Function Calling 策略 应在 tools/call 发出前执行——prompt 模板 不能替代 authorization。

sequenceDiagram
  participant Host
  participant Server
  Host->>Server: MCP request (prompt 模板)
  Server->>Host: response / error

二十六.13 MCP 运维:version 协商

MCP Host 在 Streamable HTTPstdio 混合部署时,version 协商 决定可用性与安全窗口。Spec(2025-03-26,截至 2026-06)要求 Client 在 version 协商 场景下仍保持 JSON-RPC 语义。

Transport version 协商 注意点
stdio 子进程 version 协商 隔离
HTTP TLS + OAuth + version 协商 header 验证

Host 层 Function Calling 策略 应在 tools/call 发出前执行——version 协商 不能替代 authorization。

sequenceDiagram
  participant Host
  participant Server
  Host->>Server: MCP request (version 协商)
  Server->>Host: response / error

二十六.14 MCP 运维:error code

MCP Host 在 Streamable HTTPstdio 混合部署时,error code 决定可用性与安全窗口。Spec(2025-03-26,截至 2026-06)要求 Client 在 error code 场景下仍保持 JSON-RPC 语义。

Transport error code 注意点
stdio 子进程 error code 隔离
HTTP TLS + OAuth + error code header 验证

Host 层 Function Calling 策略 应在 tools/call 发出前执行——error code 不能替代 authorization。

sequenceDiagram
  participant Host
  participant Server
  Host->>Server: MCP request (error code)
  Server->>Host: response / error

二十六.15 MCP 运维:stdio 生命周期

MCP Host 在 Streamable HTTPstdio 混合部署时,stdio 生命周期 决定可用性与安全窗口。Spec(2025-03-26,截至 2026-06)要求 Client 在 stdio 生命周期 场景下仍保持 JSON-RPC 语义。

Transport stdio 生命周期 注意点
stdio 子进程 stdio 生命周期 隔离
HTTP TLS + OAuth + stdio 生命周期 header 验证

Host 层 Function Calling 策略 应在 tools/call 发出前执行——stdio 生命周期 不能替代 authorization。

sequenceDiagram
  participant Host
  participant Server
  Host->>Server: MCP request (stdio 生命周期)
  Server->>Host: response / error

二十六.16 MCP 运维:remote 部署

MCP Host 在 Streamable HTTPstdio 混合部署时,remote 部署 决定可用性与安全窗口。Spec(2025-03-26,截至 2026-06)要求 Client 在 remote 部署 场景下仍保持 JSON-RPC 语义。

Transport remote 部署 注意点
stdio 子进程 remote 部署 隔离
HTTP TLS + OAuth + remote 部署 header 验证

Host 层 Function Calling 策略 应在 tools/call 发出前执行——remote 部署 不能替代 authorization。

sequenceDiagram
  participant Host
  participant Server
  Host->>Server: MCP request (remote 部署)
  Server->>Host: response / error

二十六.17 MCP 运维:Initialize 安全

MCP Host 在 Streamable HTTPstdio 混合部署时,Initialize 安全 决定可用性与安全窗口。Spec(2025-03-26,截至 2026-06)要求 Client 在 Initialize 安全 场景下仍保持 JSON-RPC 语义。

Transport Initialize 安全 注意点
stdio 子进程 Initialize 安全 隔离
HTTP TLS + OAuth + Initialize 安全 header 验证

Host 层 Function Calling 策略 应在 tools/call 发出前执行——Initialize 安全 不能替代 authorization。

sequenceDiagram
  participant Host
  participant Server
  Host->>Server: MCP request (Initialize 安全)
  Server->>Host: response / error

二十六.18 MCP 运维:SSE 重连

MCP Host 在 Streamable HTTPstdio 混合部署时,SSE 重连 决定可用性与安全窗口。Spec(2025-03-26,截至 2026-06)要求 Client 在 SSE 重连 场景下仍保持 JSON-RPC 语义。

Transport SSE 重连 注意点
stdio 子进程 SSE 重连 隔离
HTTP TLS + OAuth + SSE 重连 header 验证

Host 层 Function Calling 策略 应在 tools/call 发出前执行——SSE 重连 不能替代 authorization。

sequenceDiagram
  participant Host
  participant Server
  Host->>Server: MCP request (SSE 重连)
  Server->>Host: response / error

二十六.19 MCP 运维:session 固定

MCP Host 在 Streamable HTTPstdio 混合部署时,session 固定 决定可用性与安全窗口。Spec(2025-03-26,截至 2026-06)要求 Client 在 session 固定 场景下仍保持 JSON-RPC 语义。

Transport session 固定 注意点
stdio 子进程 session 固定 隔离
HTTP TLS + OAuth + session 固定 header 验证

Host 层 Function Calling 策略 应在 tools/call 发出前执行——session 固定 不能替代 authorization。

sequenceDiagram
  participant Host
  participant Server
  Host->>Server: MCP request (session 固定)
  Server->>Host: response / error

二十六.20 MCP 运维:CORS

MCP Host 在 Streamable HTTPstdio 混合部署时,CORS 决定可用性与安全窗口。Spec(2025-03-26,截至 2026-06)要求 Client 在 CORS 场景下仍保持 JSON-RPC 语义。

Transport CORS 注意点
stdio 子进程 CORS 隔离
HTTP TLS + OAuth + CORS header 验证

Host 层 Function Calling 策略 应在 tools/call 发出前执行——CORS 不能替代 authorization。

sequenceDiagram
  participant Host
  participant Server
  Host->>Server: MCP request (CORS)
  Server->>Host: response / error

二十六.21 MCP 运维:mTLS

MCP Host 在 Streamable HTTPstdio 混合部署时,mTLS 决定可用性与安全窗口。Spec(2025-03-26,截至 2026-06)要求 Client 在 mTLS 场景下仍保持 JSON-RPC 语义。

Transport mTLS 注意点
stdio 子进程 mTLS 隔离
HTTP TLS + OAuth + mTLS header 验证

Host 层 Function Calling 策略 应在 tools/call 发出前执行——mTLS 不能替代 authorization。

sequenceDiagram
  participant Host
  participant Server
  Host->>Server: MCP request (mTLS)
  Server->>Host: response / error

二十六.22 MCP 运维:rate limit

MCP Host 在 Streamable HTTPstdio 混合部署时,rate limit 决定可用性与安全窗口。Spec(2025-03-26,截至 2026-06)要求 Client 在 rate limit 场景下仍保持 JSON-RPC 语义。

Transport rate limit 注意点
stdio 子进程 rate limit 隔离
HTTP TLS + OAuth + rate limit header 验证

Host 层 Function Calling 策略 应在 tools/call 发出前执行——rate limit 不能替代 authorization。

sequenceDiagram
  participant Host
  participant Server
  Host->>Server: MCP request (rate limit)
  Server->>Host: response / error

附录 A、MCP 架构 场景演练

A.1 邮件摘要 Agent

步骤 动作
1 用户 consent read:mail
2 Exchange scope=read:mail:inbox
3 OPA 限 folder
4 audit 含 act
flowchart LR
  S1["用户 consent read:mail"] --> S2["Exchange scope=read:mail:inbox"]
  S2 --> S3["OPA 限 folder"]
  S3 --> S4["audit 含 act"]

A.2 SQL 分析 Agent

步骤 动作
1 read:warehouse
2 只读 DB role
3 Rego deny DDL
4 HITL 导出 CSV >10k rows
flowchart LR
  S1["read:warehouse"] --> S2["只读 DB role"]
  S2 --> S3["Rego deny DDL"]
  S3 --> S4["HITL 导出 CSV >10k rows"]

A.3 MCP Git Agent

步骤 动作
1 per-server OAuth
2 stdio pin version
3 tool allowlist
4 supply chain SBOM
flowchart LR
  S1["per-server OAuth"] --> S2["stdio pin version"]
  S2 --> S3["tool allowlist"]
  S3 --> S4["supply chain SBOM"]

A.4 跨 API 编排

步骤 动作
1 多 resource Exchange
2 每 API 独立 token
3 Gateway 聚合
4 trace 串联
flowchart LR
  S1["多 resource Exchange"] --> S2["每 API 独立 token"]
  S2 --> S3["Gateway 聚合"]
  S3 --> S4["trace 串联"]

A.5 offboarding

步骤 动作
1 SCIM deactivate
2 CAEP or TTL
3 cache flush
4 audit retention
flowchart LR
  S1["SCIM deactivate"] --> S2["CAEP or TTL"]
  S2 --> S3["cache flush"]
  S3 --> S4["audit retention"]

A.6 供应链攻击响应

步骤 动作
1 disconnect MCP Server
2 rotate per-server token
3 SBOM diff
4 post-incident audit
flowchart LR
  S1["disconnect MCP Server"] --> S2["rotate per-server token"]
  S2 --> S3["SBOM diff"]
  S3 --> S4["post-incident audit"]

A.7 HITL 超时

步骤 动作
1 pending transfer
2 7200s expire
3 Agent Cancelled
4 audit expired
flowchart LR
  S1["pending transfer"] --> S2["7200s expire"]
  S2 --> S3["Agent Cancelled"]
  S3 --> S4["audit expired"]

A.8 跨云 OBO

步骤 动作
1 Entra user token
2 Gateway normalize act
3 RS 统一 audit schema
4 policy 同构
flowchart LR
  S1["Entra user token"] --> S2["Gateway normalize act"]
  S2 --> S3["RS 统一 audit schema"]
  S3 --> S4["policy 同构"]

附录 B、MCP 架构 常见问题

Q:能否省略 Agent Gateway?
A:仅当 Agent 永不持 user refresh 且 RS 支持 Token Exchange 直联——多数企业仍要 Gateway 聚 policy、HITL、audit。

Q:MCP 是否替代 OAuth?
A:否。MCP 管 tool 协议;OAuth 管身份。

Q:CAEP 未支持怎么办?
A:短 TTL(≤15min)为基线;heartbeat 补 Gateway 层 revoke。

Q:如何证明 Agent 未越权?
A:deny 日志 + policy_version + 定期 access review(IGA)。

Q:Gen2 到 Gen4 最小步骤?
A:Gateway 托管 refresh → 启用 Exchange → RS 解析 act → 下线 Agent 侧 refresh。



上一篇Human-in-the-Loop

下一篇MCP 供应链


参考资料

  1. Model Context Protocol, Specification 2025-03-26, Transports / Authorization(阅读日期 2026-06)
  2. IETF OAuth 2.1 Draft, The OAuth 2.1 Authorization Framework(截至 2026-06 draft 状态)
  3. Token Exchange — 本系列第 02 篇
  4. 零信任供应链

同主题继续阅读

把当前热点继续串成多页阅读,而不是停在单篇消费。

2026-06-18 · architecture / security

【Agent 身份与安全】AI Agent 的身份、委托与审计

IAM 系列(人)与零信任系列(边界)的自然延伸:当 LLM Agent 代表用户调用 API、执行 SQL、读写邮件时,传统 OAuth 模型如何扩展?拆解 Token Exchange、MCP 安全模型、工具级授权、持续验证与审计归因。