- 教程
- 文档
- 人工智能
【免费下载链接】mcp-for-beginners
This open-source curriculum introduces the fundamentals of Model Context Protocol (MCP) through real-world, cross-language examples in .NET, Java, TypeScript, JavaScript, Rust and Python. Designed for developers, it focuses on practical techniques for building modular, scalable, and secure AI workflows from session setup to service orchestration.
导读
本文是 mcp-for-beginners 课程安全模块(02-Security)的完整技术解读,围绕 Model Context Protocol(MCP)在 AI 驱动应用中的安全架构展开。你将系统掌握 MCP 特有的威胁模型——提示注入、工具投毒、会话劫持、confused deputy、token passthrough 与供应链风险,并学会将 OWASP MCP Top 10 风险映射到 Azure Entra ID、Prompt Shields、Azure Content Safety、GitHub Advanced Security 等具体缓解手段,同时结合本仓库的 TypeScript 示例源码理解令牌验证与工具级授权的落地实现。读完本文,你将能够为 MCP 服务器设计并实施一套"基础安全实践 + MCP 特有控制"的分层防御方案。
说明:本文以 02-Security/README.md(含各语言翻译版,如 translations/cs/02-Security/README.md)为主体骨架,并引用仓库内 01-CoreConcepts/mcp-2026-07-28.md、02-Security/mcp-security-best-practices.md、02-Security/mcp-security-controls.md、02-Security/azure-content-safety-implementation.md 及 02-Security/samples/cimd-dcr-auth 示例源码作为纵深佐证。
学习目标
按本模块(02-Security/README.md)的设计,完成本节学习后你将能够:
- 识别 MCP 特有威胁:辨认提示注入(prompt injection)、工具投毒(tool poisoning)、过度权限(excessive permissions)、会话劫持(session hijacking)、confused deputy 问题、token passthrough 漏洞与供应链风险;
- 应用安全控制:实施健壮的认证、最小权限访问、安全的令牌管理、会话安全控制与供应链验证;
- 利用 Microsoft 安全方案:理解并部署 Microsoft Prompt Shields、Azure Content Safety 与 GitHub Advanced Security 保护 MCP 工作负载;
- 验证工具安全性:认识工具元数据校验、动态变更监控以及间接提示注入防御的重要性;
- 整合最佳实践:将既有安全基础(安全编码、服务器加固、零信任)与 MCP 特有控制结合,形成全面防护。
该模块将安全放在课程第二节,呼应 MicrosoftSecure by Design原则。与大多数传统软件相比,MCP 系统同时面临既有安全问题(安全编码、最小权限、供应链安全)与 AI 特有的新威胁(提示注入、工具投毒、会话劫持、confused deputy 攻击、token passthrough 漏洞、动态能力修改)。
当前安全态势:MCP 2026-07-28 规范与授权演进
分层安全与规范基线
现代 MCP 实现需要分层(layered)安全方法,同时覆盖传统软件安全与 AI 特有威胁。快速演进的 MCP 规范持续强化其安全控制,使其更好地与企业安全架构及既有最佳实践集成。
编写安全敏感代码前,务必核对当前 MCP 规范(当前版本2026-07-28)及其安全最佳实践文档。本仓库 01-CoreConcepts/mcp-2026-07-28.md 完整总结了该版本相对2025-11-25的全部变更,其中授权强化与安全直接相关。
授权更新要点(详见 01-CoreConcepts/mcp-2026-07-28.md):
- MCP
2026-07-28要求客户端校验授权响应中的iss参数(RFC 9207),以缓解 MCP 单客户端、多服务器模式中常见的 mix-up 攻击; - 已注册凭据必须绑定到签发它的授权服务器(凭据与签发者绑定);
- 动态客户端注册(Dynamic Client Registration, DCR)已弃用,新实现应改用Client ID Metadata Documents(CIMD);
- 兼容模式下 DCR 客户端需声明其 OIDC
application_type,避免桌面/CLI 客户端被错误地默认标记为"web"。
MCP 认证的演进路径
MCP 规范在认证与授权上的演进可概括为三个阶段:
- 早期方式:要求开发者自行实现认证服务器,MCP 服务器充当 OAuth 2.0 授权服务器,直接管理用户认证;
- 当前标准(
2026-07-28):MCP 服务器可将认证委托给外部身份提供者(如 Microsoft Entra ID);客户端还必须应用当前的签发者校验与凭据绑定要求; - 传输层安全:为本地(STDIO)与远程(Streamable HTTP)连接增强安全的传输机制支持,并配以正确的认证模式。
MCP Security Summit Workshop(Sherpa)路线图
模块强烈推荐 MCP Security Summit Workshop(Sherpa) 作为动手安全训练:这是一场在 Microsoft Azure 中保护 MCP 服务器的引导式"远征",采用"脆弱 → 利用 → 修复 → 验证"(vulnerable → exploit → fix → validate)方法论。你将通过攻击故意不安全的服务器直接体验漏洞、使用 Azure Entra ID / Key Vault / API Management / AI Content Safety 等 Azure 原生安全能力、按纵深防御层层构建、每项技术对应 OWASP MCP Azure 安全指南,并最终带走可运行、经过测试的生产级实现。
| 营地 | 关注点 | 覆盖的 OWASP 风险 |
|---|---|---|
| 大本营(Base Camp) | MCP 基础与认证漏洞 | MCP01、MCP07 |
| 营地 1:身份(Identity) | OAuth 2.1、Azure 托管标识、Key Vault | MCP01、MCP02、MCP07 |
| 营地 2:网关(Gateway) | API Management、专用终结点、治理 | MCP02、MCP06、MCP07、MCP09 |
| 营地 3:I/O 安全 | 提示注入、PII 保护、内容安全 | MCP03、MCP05、MCP06、MCP10 |
| 营地 4:监控(Monitoring) | Log Analytics、仪表盘、威胁检测 | MCP04、MCP08 |
| 峰会(Summit) | 红队 / 蓝队集成测试 | 全部 |
OWASP MCP Top 10 安全风险总览
OWASP MCP Azure 安全指南 描述了 MCP 实现中最关键的十类安全风险,本仓库 02-Security/mcp-security-controls.md 与 02-Security/mcp-security-best-practices.md 均以其为对齐框架:
| 风险 | 描述 | Azure 缓解 |
|---|---|---|
| MCP01 | 令牌管理不当与机密泄露 | Azure Key Vault、托管标识 |
| MCP02 | 通过范围蔓延实现权限提升 | RBAC、条件访问 |
| MCP03 | 工具投毒 | 工具验证、完整性校验 |
| MCP04 | 软件供应链攻击与依赖篡改 | GitHub Advanced Security、依赖扫描 |
| MCP05 | 命令注入与执行 | 输入校验、沙箱化 |
| MCP06 | 意图流颠覆 | Azure AI Content Safety、Prompt Shields |
| MCP07 | 认证与授权不足 | Azure Entra ID、OAuth 2.1 + PKCE |
| MCP08 | 缺乏审计与遥测 | Azure Monitor、Application Insights |
| MCP09 | 影子 MCP 服务器 | API Center 治理、网络隔离 |
| MCP10 | 上下文注入与过度共享 | 数据分类、最小暴露 |
认证与授权安全
风险与威胁向量
现代 MCP 实现面临以下认证与授权挑战:
- 错误的授权逻辑:MCP 服务器中缺陷的授权实现可能暴露敏感数据并错误应用访问控制;
- OAuth 令牌泄露:本地 MCP 服务器令牌被盗可让攻击者冒充服务器并访问下游服务;
- Token Passthrough 漏洞:令牌处理不当会造成安全控制绕过与责任(accountability)缺口;
- 过度权限:权限过大的 MCP 服务器违反最小权限原则并扩大攻击面。
Token Passthrough:关键反模式
当前 MCP 授权规范明确禁止 token passthrough,因其具有严重的安全后果:
- 安全控制绕过:MCP 服务器与下游 API 实现的关键安全控制(速率限制、请求校验、流量监控)依赖正确的令牌校验;客户端直接使用令牌访问 API 会绕过这些保护,破坏安全架构;
- 责任与审计难题:MCP 服务器无法区分使用上游签发令牌的不同客户端,破坏审计追踪;下游资源服务器日志显示误导性的请求来源而非真实的 MCP 服务器中介,使事件调查与合规审计显著困难;
- 数据外泄风险:未经校验的令牌声明使持有被盗令牌的恶意行为者可利用 MCP 服务器作为数据外泄代理;信任边界被破坏,非授权访问模式绕过既定安全控制;
- 多服务攻击向量:被多个服务接受的泄露令牌可在互联系统间横向移动;当令牌来源无法验证时,服务间的信任假设可能被破坏。
强制要求:
必须(MANDATORY):MCP 服务器不得(MUST NOT)接受任何非明确签发给该 MCP 服务器的令牌。
仓库配套文档 02-Security/mcp-security-controls.md 进一步给出了可执行的 YAML 控制清单:
Token Validation Requirements: audience_validation: MANDATORY # 受众校验:令牌必须匹配 MCP 服务器身份 issuer_verification: MANDATORY # 签发者校验:令牌签发者必须匹配身份提供者 signature_check: MANDATORY # 签名校验:加密验证令牌完整性 expiration_enforcement: MANDATORY # 过期强制:严格执行令牌生命周期上限 scope_validation: MANDATORY # 范围校验:令牌包含所请求操作所需权限 Token Lifecycle Management: rotation_frequency: "Short-lived tokens preferred" # 优先短生命周期令牌 secure_storage: "Azure Key Vault or equivalent" # 安全存储 transmission_security: "TLS 1.3 minimum" # 传输安全 replay_protection: "Implemented via nonce/timestamp" # 重放保护认证与授权控制
- 严格的授权审查:对 MCP 服务器授权逻辑进行全面审计,确保只有预期的用户与客户端能访问敏感资源;
- 安全令牌管理:遵循令牌验证与生命周期最佳实践——校验令牌受众声明与 MCP 服务器身份匹配、实施正确的令牌轮换与过期策略、防止令牌重放攻击与未授权使用;
- 受保护的令牌存储:令牌在静态与传输中均加密存储(可使用 Azure Key Vault 等密钥库)。
访问控制实现
- 最小权限原则:仅授予 MCP 服务器实现预期功能所需的最低权限;定期审查与更新权限以防止权限蔓延(privilege creep);
- 基于角色的访问控制(RBAC):实施细粒度角色分配,将角色严格限定在特定资源与操作上,避免扩大攻击面的宽泛或无谓权限;
- 持续权限监控:实施持续的访问审计与监控,观察权限使用模式中的异常,并及时修正过度或未使用的权限。
源码佐证:CIMD 与 DCR 授权示例
仓库中的 02-Security/samples/cimd-dcr-auth 是可直接运行的可执行示例,它用 TypeScript 对比了两种 OAuth 客户端在访问受保护 MCP 服务器前获取身份的方式:
- Client ID Metadata Documents(CIMD):以稳定的 HTTPS URL 作为
client_id,适用于客户端与授权服务器之间无既有关系的情形,是首选机制; - Dynamic Client Registration(DCR):运行时请授权服务器铸造不透明客户端 ID,MCP
2026-07-28仅保留 DCR 作向后兼容。
该示例使用稳定版 MCP TypeScript SDK v2 与无状态 MCP2026-07-28请求模型,可对接 Auth0 等外部 OAuth 2.1/OpenID Connect 授权服务器;MCP 服务器是资源服务器——校验访问令牌但不认证用户或签发令牌。其架构是:客户端通过 CIMD(URL 形式的 client_id)或 DCR(registration_endpoint回退)向授权服务器获取访问令牌,随后携带 Bearer 令牌调用 MCP 服务器,MCP 服务器通过授权服务器 JWKS 端点校验令牌。
注册优先级(同时支持所有机制的客户端应按此顺序):
- 已有预注册客户端信息时优先使用预注册信息;
- 授权服务器通告
client_id_metadata_document_supported: true时使用 CIMD; - 仅当服务器通告
registration_endpoint时才以 DCR 作为回退; - 以上皆不可用时,询问用户提供预注册客户端信息。
工具级授权验证体现在 src/mcp.ts 中:greet工具在调用时检查authInfo?.scopes.includes("tool:greet"),缺少范围即返回insufficient_scope错误——这正是"在 MCP 工具内强制 OAuth 范围"的落地写法。而 src/oauth.ts 展示了资源服务器的令牌验证核心:通过授权服务器jwks_uri构建远程 JWKS,使用jose的jwtVerify同时校验issuer(签发者)、audience(受众)、algorithms(算法)、client_id/azp与exp声明,并从中提取scope/permissions作为授权决策依据。该示例的 Security Notes 再次强调:绝不接受为其他资源签发的令牌、绝不将 MCP 令牌透传给下游 API。
AI 特有的安全威胁
间接提示注入(Cross-Domain Prompt Injection)
间接提示注入是 MCP 赋能的 AI 系统中最关键的漏洞之一。攻击者将恶意指令嵌入外部内容——文档、网页、电子邮件或数据源——AI 系统随后将其当作合法命令处理。
攻击场景:
- 基于文档的注入:在处理文档中隐藏恶意指令,触发非预期的 AI 动作;
- 网页内容利用:被攻陷的网页包含内嵌提示指令,在抓取时操纵 AI 行为;
- 基于电子邮件的攻击:电子邮件中的恶意提示导致 AI 助手泄露信息或执行未授权动作;
- 数据源污染:被攻陷的数据库或 API 向 AI 系统提供被污染的内容。
现实影响:此类攻击可导致数据外泄、隐私泄露、生成有害内容以及操纵用户交互。攻击示意图如下:
工具投毒攻击(Tool Poisoning)
工具投毒针对定义 MCP 工具的元数据,利用 LLM 解读工具描述与参数来决定是否执行的方式实施攻击:
- 元数据操纵:攻击者将恶意指令注入工具描述、参数定义或用法示例;
- 隐形指令:工具元数据中的隐藏提示被 AI 模型处理,但对人类用户不可见;
- 动态工具修改("Rug Pulls"):用户批准过的工具事后被修改,在用户不知情下执行恶意动作;
- 参数注入:工具参数模式中嵌入恶意内容,影响模型行为。
托管服务器风险:远程 MCP 服务器风险更高,因为工具定义可在用户初次批准后被更新,导致先前安全的工具变成恶意工具。攻击示意图如下:
防御框架(来自 02-Security/mcp-security-controls.md):
Tool Definition Protection: validation: - "Schema validation against expected formats" # 模式校验 - "Content analysis for malicious instructions" # 恶意指令内容分析 - "Parameter injection detection" # 参数注入检测 - "Hidden instruction identification" # 隐形指令识别 integrity_verification: - "Cryptographic hashing of tool definitions" # 工具定义加密哈希 - "Digital signatures for tool packages" # 工具包数字签名 - "Version control with change auditing" # 版本控制与变更审计 - "Tamper detection mechanisms" # 篡改检测机制 monitoring: - "Real-time change detection" # 实时变更检测 - "Behavioral analysis of tool usage" # 工具使用行为分析 - "Anomaly detection for execution patterns" # 执行模式异常检测 - "Automated alerting for suspicious modifications" # 可疑修改自动告警配套实践(02-Security/mcp-security-best-practices.md)要求:实施工具元数据完整性校验并监控意外变更、监控运行时行为并对异常执行模式告警、对工具修改与能力变更要求明确的用户审批流程。
其他 AI 攻击向量
- 跨域提示注入(XPIA):利用多域内容绕过安全控制的复杂攻击;
- 动态能力修改:对工具能力的实时更改逃过初始安全评估;
- 上下文窗口投毒:操纵大型上下文窗口以隐藏恶意指令;
- 模型混淆攻击:利用模型局限制造不可预测或不安全的行为。
AI 安全风险的影响
- 数据外泄:未授权访问与窃取敏感企业或个人数据;
- 隐私泄露:暴露个人可识别信息(PII)与机密业务数据;
- 系统操纵:对关键系统与工作流的非预期修改;
- 凭据窃取:认证令牌与服务凭据被攻陷;
- 横向移动:以被攻陷的 AI 系统为跳板实施更广泛的网络攻击。
Microsoft AI 安全方案:Prompt Shields 与 Azure Content Safety
AI Prompt Shields:对抗注入攻击的进阶防护
MicrosoftAI Prompt Shields通过多层安全机制对直接与间接提示注入攻击提供全面防御:
- 高级检测与过滤:机器学习算法与 NLP 技术检测外部内容中的恶意指令;对文档、网页、电子邮件与数据源进行实时嵌入式威胁分析;具备合法与恶意提示模式的情境理解;
- Spotlighting 技术:区分可信系统指令与可能被攻陷的外部输入;通过文本变换方法增强模型相关性并隔离恶意内容;帮助 AI 系统维持正确的指令层级并忽略注入命令;
- 分隔符与数据标记系统(Delimiter & Datamarking):在可信系统消息与外部输入文本之间定义明确边界;特殊标记突出可信与不可信数据源之间的界限;清晰分隔防止指令混淆与未授权命令执行;
- 持续威胁情报:Microsoft 持续监控新兴攻击模式并更新防御;主动搜寻新的注入技术与攻击向量;定期更新安全模型以应对演化中的威胁;
- Azure Content Safety 集成:作为 Azure AI Content Safety 套件的一部分,额外检测越狱尝试、有害内容与安全策略违规;在 AI 应用组件间提供统一安全控制。
将 Azure Content Safety 集成进 MCP 服务器
仓库专门文档 02-Security/azure-content-safety.md 与 02-Security/azure-content-safety-implementation.md 给出了落地路径:把内容安全过滤器作为中间件加入 MCP 服务器的请求处理流水线:
- 服务器启动时初始化过滤器;
- 处理前校验所有传入的工具请求;
- 返回客户端前检查所有传出响应;
- 记录并对安全违规告警;
- 为失败的内容安全检查实现合适的错误处理。
这构成多层防护:处理前扫描输入、返回前验证输出、针对已知有害模式使用阻止列表(blocklists)、利用 Azure 持续更新的内容安全模型。集成最佳实践包括:为 MCP 注入模式定制自定义阻止列表、按用例与风险容忍度调整严重性阈值、对输入输出全覆盖应用内容安全检查、为重复检查实现缓存、定义内容安全服务不可用时的回退行为、被阻断时给用户清晰反馈,并随新威胁定期更新阻止列表与模式。相关实现(02-Security/azure-content-safety-implementation.md)面向的正是 MCP06(意图流颠覆),并推荐结合 Sherpa 营地 3 的 I/O 安全动手练习。
高级 MCP 安全威胁
会话劫持漏洞(Session Hijacking)
会话劫持是无状态协议层下状态化 MCP 实现中的关键攻击向量:未授权方获取并滥用合法会话标识符,冒充客户端执行未授权操作。
攻击场景与风险:
- 会话劫持提示注入:持有被盗会话 ID 的攻击者向共享会话状态的服务器注入恶意事件,可能触发有害动作或访问敏感数据;
- 直接冒充:被盗会话 ID 允许直接调用 MCP 服务器并绕过认证,攻击者被视为合法用户;
- 被攻陷的可恢复流(Resumable Streams):攻击者可提前终止请求,导致合法客户端以潜在恶意内容恢复。
会话管理安全控制(关键要求):
- 授权验证:实现授权的 MCP 服务器必须(MUST)验证所有入站请求,且不得(MUST NOT)依赖会话进行认证;
- 安全会话生成:使用加密安全、非确定性的会话 ID,由安全随机数生成器产生;
- 用户特定绑定:使用
<user_id>:<session_id>等格式将会话 ID 绑定到用户特定信息,防止跨用户会话滥用; - 会话生命周期管理:实施正确的过期、轮换与失效策略,缩小漏洞窗口;
- 传输安全:所有通信强制 HTTPS,防止会话 ID 被截获。
配套文档 02-Security/mcp-security-controls.md 把"状态句柄"(state handle)作为无状态协议下保持应用状态的推荐模式,并给出 YAML 控制:状态句柄生成需加密安全 RNG、最低 128 位熵、Base64url 编码且必须非确定性;状态绑定需在服务端绑定到已认证主体、每个请求重新授权、绝不信任客户端提供的用户 ID;生命周期需可配置过期、在权限提升事件后轮换、安全事件时立即失效并自动清理过期状态。同时明确:将句柄视为"名字"而非"凭证"——句柄持有不等于访问授权。
Confused Deputy 问题
Confused deputy 问题发生在 MCP 服务器作为客户端与第三方服务之间的认证代理时:通过静态客户端 ID 的利用,攻击者可绕过授权。
攻击机制与风险:
- 基于 Cookie 的同意绕过:用户先前认证产生的同意 Cookie 被攻击者利用——通过精心构造的重定向 URI 发起恶意授权请求;
- 授权码窃取:现有同意 Cookie 可能使授权服务器跳过同意界面,将授权码重定向到攻击者控制的端点;
- 未授权 API 访问:被盗授权码可换取令牌并冒充用户,无需显式批准。
缓解策略(强制控制):
- 显式同意要求:使用静态客户端 ID 的 MCP 代理服务器必须(MUST)在转发授权前为每个动态注册的客户端获取用户同意;
- OAuth 2.1 安全实现:遵循当前 OAuth 安全最佳实践,所有授权请求使用 PKCE(Proof Key for Code Exchange);
- 严格客户端校验:对重定向 URI 与客户端标识符实施严格验证。
仓库的注册优先级实践与之呼应(02-Security/samples/cimd-dcr-auth/README.md):偏好预注册或 CIMD,仅在兼容场景下使用 DCR 回退,并对重定向 URI 采用精确匹配校验。该示例的安全注意事项还包括:授权服务器抓取 CIMD URL 时应用 SSRF 控制、回路之外的所有授权与元数据端点使用 HTTPS、除非提供者文档化可靠标识符约定否则不从不透明客户端 ID 推断 DCR。
Token Passthrough 漏洞(再次强调)
Token passthrough是明确的反模式:MCP 服务器未做校验即接受客户端令牌并转发到下游 API,违反 MCP 授权规范。其安全影响包括:直接客户端到 API 的令牌使用绕过速率限制、校验与监控;上游签发令牌使客户端识别不可能,破坏事件调查能力;未校验令牌使恶意行为者可借服务器代理未授权数据访问;令牌来源无法验证时破坏下游服务信任假设;跨多服务被接受的泄露令牌使横向移动扩大。
不可协商的要求:
- 令牌校验:MCP 服务器不得(MUST NOT)接受非明确签发给该 MCP 服务器的令牌;
- 受众验证:始终验证令牌受众声明与 MCP 服务器身份匹配;
- 正确的令牌生命周期:实施短期访问令牌与安全轮换实践。
02-Security/mcp-security-best-practices.md 将上述汇总为四条 MUST 级要求:不得接受非本服务器签发的令牌;实现授权的服务器必须验证全部入站请求;不得将会话用于认证;使用静态第三方客户端 ID 的代理服务器必须在转发授权前为每个 MCP 客户端获取同意。
AI 系统的供应链安全
供应链安全已从传统软件依赖扩展到整个 AI 生态。现代 MCP 实现必须严格验证与监控所有 AI 相关组件,因为每个组件都引入可能危及系统完整性的潜在漏洞。
扩展的 AI 供应链组件
传统软件依赖:开源库与框架、容器镜像与基础系统、开发工具与构建流水线、基础设施组件与服务。
AI 特有的供应链要素:
- 基础模型(Foundation Models):来自各提供者的预训练模型,需验证来源(provenance);
- Embedding 服务:外部向量化与语义搜索服务;
- 上下文提供者(Context Providers):数据源、知识库与文档仓库;
- 第三方 API:外部 AI 服务、ML 流水线与数据处理端点;
- 模型工件(Model Artifacts):权重、配置与微调模型变体;
- 训练数据源:用于模型训练与微调的数据集。
全面的供应链安全策略
组件验证与信任:集成前验证所有 AI 组件的来源、许可与完整性;对模型、数据源与 AI 服务实施漏洞扫描与安全审查;评估 AI 服务提供者的安全记录与实践;确保所有组件满足组织安全与监管要求。
安全部署流水线:将安全扫描集成到自动化部署流水线全程;对所有部署工件(代码、模型、配置)实施加密验证;采用每阶段含安全验证的渐进式部署策略;仅从经过验证、安全的工件仓库部署。
持续监控与响应:对所有软件与 AI 组件依赖进行持续漏洞监控;持续评估模型行为、性能漂移与安全异常;监控外部 AI 服务的可用性、安全事件与策略变更;集成针对 AI 与 ML 安全风险的威胁情报源。
访问控制与最小权限:按业务必要性限制对模型、数据与服务的访问;实施具有最小所需权限的专用服务账户;隔离 AI 组件并限制服务间网络访问;使用集中式 API 网关控制与监控外部 AI 服务的访问。
事件响应与恢复:建立修补或替换被攻陷 AI 组件的流程;自动化轮换机密、API 密钥与服务凭据;具备快速回滚到先前已知良好版本的能力;针对上游 AI 服务被攻陷制定专门响应流程。
Microsoft 安全工具与集成
GitHub Advanced Security提供全面供应链保护:
- 机密扫描(Secret Scanning):自动检测仓库中的凭据、API 密钥与令牌;
- 依赖扫描(Dependency Scanning):评估开源依赖与库的漏洞;
- CodeQL 分析:针对安全漏洞与编码问题的静态代码分析;
- 供应链洞察(Supply Chain Insights):依赖健康与安全状态的可见性。
Azure DevOps 与 Azure Repos 集成:跨 Microsoft 开发平台的无缝安全扫描集成、Azure Pipelines 中面向 AI 工作负载的自动化安全检查、以及安全 AI 组件部署的策略强制。依赖验证的 YAML 控制模板(02-Security/mcp-security-controls.md)涵盖自动化漏洞扫描(GitHub Advanced Security)、许可合规、已知漏洞库检查、恶意软件检测、包签名校验、校验和验证、来源证明(Provenance Attestation)与软件物料清单(SBOM),以及模型来源验证、对抗鲁棒性评估等 AI 组件专项检查。
基础安全最佳实践
MCP 实现继承并构建于组织既有的安全态势之上。强化基础安全实践能显著提升 AI 系统与 MCP 部署的整体安全性。
核心安全基础
安全开发实践:
- OWASP 合规:防御 OWASP Top 10 Web 应用漏洞;
- AI 专项防护:实施 OWASP Top 10 for LLM 控制;
- 安全机密管理:使用专用密钥库存储令牌、API 密钥与敏感配置;
- 端到端加密:在所有应用组件与数据流中实现安全通信;
- 输入校验:严格校验所有用户输入、API 参数与数据源。
基础设施加固:
- 多因素认证(MFA):所有管理与服务账户强制 MFA;
- 补丁管理:对操作系统、框架与依赖进行自动化、及时的补丁;
- 身份提供者集成:通过企业身份提供者(Microsoft Entra ID、Active Directory)实现集中身份管理;
- 网络分段:逻辑隔离 MCP 组件,限制横向移动可能;
- 最小权限原则:所有系统组件与账户仅授予最小所需权限。
安全监控与检测:
- 全面日志:详细记录 AI 应用活动(含 MCP 客户端-服务器交互);
- SIEM 集成:集中式安全信息与事件管理用于异常检测;
- 行为分析:AI 驱动的监控检测系统与用户行为的异常模式;
- 威胁情报:集成外部威胁源与失陷指标(IOC);
- 事件响应:定义良好的安全事件检测、响应与恢复流程。
零信任架构:
- 永不信任,始终验证:持续验证用户、设备与网络连接;
- 微分段:隔离单个工作负载与服务的细粒度网络控制;
- 身份为中心的安全:基于已验证身份而非网络位置的安全策略;
- 持续风险评估:基于当前情境与行为的动态安全态势评估;
- 条件访问:基于风险因素、位置与设备信任自适应的访问控制。
企业集成模式
Microsoft 安全生态集成:Microsoft Defender for Cloud(云安全态势管理)、Azure Sentinel(云原生 SIEM/SOAR)、Microsoft Entra ID(含条件访问策略的企业身份与访问管理)、Azure Key Vault(HSM 背书的集中机密管理)、Microsoft Purview(AI 数据源与工作流的数据治理与合规)。
合规与治理:确保 MCP 实现满足行业合规要求(GDPR、HIPAA、SOC 2);正确分类与处理 AI 系统处理的敏感数据;为监管合规与取证调查提供全面审计追踪;在 AI 系统架构中落实隐私保护设计原则;为 AI 系统修改建立正式的安全审查变更管理流程。
基础实践与 MCP 特有控制共同构成"纵深防御"(defense in depth):02-Security/mcp-security-controls.md 将其总结为多层安全(无单点失败)、冗余控制与故障安全默认,叠加零信任实现与持续安全演化。
关键安全要点
- 分层安全方法:将基础安全实践(安全编码、最小权限、供应链验证、持续监控)与 AI 特有控制结合,实现全面防护;
- AI 特有威胁格局:MCP 系统面临提示注入、工具投毒、会话劫持、confused deputy、token passthrough 与过度权限等独特风险,需要专项缓解措施;
- 认证与授权卓越:使用外部身份提供者(Microsoft Entra ID)实现健壮认证,强制正确令牌校验,绝不接受非明确签发给 MCP 服务器的令牌;
- AI 攻击预防:部署 Microsoft Prompt Shields 与 Azure Content Safety 防御间接提示注入与工具投毒,同时验证工具元数据并监控动态变更;
- 会话与传输安全:使用绑定用户身份的加密安全非确定性会话 ID,实施正确的会话生命周期管理,绝不用会话进行认证;
- OAuth 安全最佳实践:通过动态注册客户端的显式用户同意、含 PKCE 的正确 OAuth 2.1 实现与严格重定向 URI 校验来预防 confused deputy 攻击;
- 令牌安全原则:避免 token passthrough 反模式,验证令牌受众声明,实施短期令牌与安全轮换,保持清晰的信任边界;
- 全面供应链安全:以与传统软件依赖同等的安全严格性对待 AI 生态所有组件(模型、embedding、上下文提供者、外部 API);
- 持续演化:跟踪快速演进的 MCP 规范,参与安全社区标准制定,随协议成熟保持自适应安全态势;
- Microsoft 安全集成:利用 Microsoft 全面安全生态(Prompt Shields、Azure Content Safety、GitHub Advanced Security、Entra ID)增强 MCP 部署防护。
仓库内延伸阅读
本节(02-Security)还包含多份专项文档与示例,可作为深入学习的起点(注意以下路径均已转换为仓库根目录相对路径):
- MCP 安全最佳实践:面向 MCP 实现的完整安全最佳实践清单(令牌、状态句柄、AI 威胁、供应链、OAuth、事件响应、合规等 12 类实践);
- MCP 安全控制:最新安全控制与可执行 YAML 配置模板(令牌校验、状态句柄、工具安全、沙箱、SIEM、事件响应);
- Azure Content Safety 实现指南:Azure Content Safety 集成的实操示例与最佳实践;
- Azure Content Safety 概览:Prompt Shields 五大机制与官方资源导航;
- CIMD 与 DCR 授权示例:可运行 TypeScript MCP
2026-07-28资源服务器,对比首选 CIMD 与弃用的 DCR 回退,含 12 个本地测试(CIMD 文档形状、URL 约束、JWT 签名/签发者/受众/过期/客户端 ID/范围校验、非回路 DCR 端点拒绝等); - MCP 最佳实践速查:MCP 安全实践快速参考;
- 2026-07-28 规范变更详解:授权强化、无状态协议层、SEP 列表与弃用特性(Roots/Sampling/Logging/DCR)的完整说明。
下一步可进入课程第三章 开始使用 MCP,在安全基线之上动手构建第一个 MCP 服务器。
- 教程
- 文档
- 人工智能
【免费下载链接】mcp-for-beginners
This open-source curriculum introduces the fundamentals of Model Context Protocol (MCP) through real-world, cross-language examples in .NET, Java, TypeScript, JavaScript, Rust and Python. Designed for developers, it focuses on practical techniques for building modular, scalable, and secure AI workflows from session setup to service orchestration.
相关推荐
MCP 安全最佳实践:面向 2026-07-28 规范的纵深防御与 AI 威胁防护实战指南(mcp-for-beginners)
MCP 安全最佳实践:面向 2026 07 28 规范的纵深防御与 AI 威胁防护实战指南(mcp for beginners) 本指南以 mcp for be
教程文档人工智能MCP 安全防护实战指南:mcp-for-beginners 中的威胁建模、认证授权与纵深防御
MCP 安全防护实战指南:mcp for beginners 中的威胁建模、认证授权与纵深防御 导读 :本文以 mcp for beginners 课程的安全模
教程文档人工智能PaddleNLP FlashMask 奖励模型(RM)训练实战:数据格式、配置参数与源码级原理解析
PaddleNLP FlashMask 奖励模型(RM)训练实战:数据格式、配置参数与源码级原理解析 奖励模型(Reward Model,RM)是 RLHF 对
教程文档人工智能
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考