重要事項:本文檔反映了最新的 MCP 規範 2025-06-18 安全要求以及官方的 MCP 安全最佳實踐。請務必參考當前規範以獲取最新的指導。
模型上下文協議(Model Context Protocol)引入了超越傳統軟體安全的獨特安全挑戰。這些實踐涵蓋了基礎安全需求以及 MCP 特有的威脅,包括提示注入、工具污染、會話劫持、混淆代理問題和令牌傳遞漏洞。
MCP 規範中的關鍵要求:
不得:MCP 伺服器 不得 接受任何未明確為 MCP 伺服器簽發的令牌
必須:實現授權的 MCP 伺服器 必須 驗證所有入站請求
不得:MCP 伺服器 不得 使用會話進行身份驗證
必須:使用靜態客戶端 ID 的 MCP 代理伺服器 必須 為每個動態註冊的客戶端獲取用戶同意
身份驗證與授權控制:
- 嚴格的授權審查:對 MCP 伺服器的授權邏輯進行全面審核,確保只有預期的用戶和客戶端能夠訪問資源
- 外部身份提供者集成:使用已建立的身份提供者(如 Microsoft Entra ID),而非實現自定義身份驗證
- 令牌受眾驗證:始終驗證令牌是否明確為您的 MCP 伺服器簽發 - 絕不接受上游令牌
- 正確的令牌生命周期管理:實現安全的令牌輪換、過期策略,並防止令牌重放攻擊
受保護的令牌存儲:
- 使用 Azure Key Vault 或類似的安全憑證存儲來存儲所有機密
- 實現令牌的靜態和傳輸加密
- 定期進行憑證輪換並監控未經授權的訪問
安全的會話實踐:
- 加密安全的會話 ID:使用安全的、非確定性的會話 ID,並通過安全隨機數生成器生成
- 用戶特定綁定:將會話 ID 綁定到用戶身份,例如使用
<user_id>:<session_id>格式,以防止跨用戶會話濫用 - 會話生命周期管理:實現適當的過期、輪換和失效機制,以限制漏洞窗口
- 強制 HTTPS/TLS:所有通信必須使用 HTTPS,以防止會話 ID 被攔截
傳輸層安全:
- 優先配置 TLS 1.3,並進行適當的證書管理
- 為關鍵連接實現證書釘扎
- 定期進行證書輪換並驗證有效性
提示注入防禦:
- Microsoft Prompt Shields:部署 AI Prompt Shields 以檢測和過濾惡意指令
- 輸入清理:驗證並清理所有輸入,以防止注入攻擊和混淆代理問題
- 內容邊界:使用分隔符和數據標記系統來區分受信指令和外部內容
工具污染預防:
- 工具元數據驗證:實施工具定義的完整性檢查,並監控意外更改
- 動態工具監控:監控運行時行為,並對意外執行模式設置警報
- 批准工作流程:要求用戶明確批准工具修改和功能更改
最小權限原則:
- 僅為 MCP 伺服器授予執行功能所需的最低權限
- 實現基於角色的訪問控制(RBAC),並設置細粒度權限
- 定期進行權限審查,並持續監控權限提升
運行時權限控制:
- 應用資源限制以防止資源耗盡攻擊
- 使用容器隔離工具執行環境
- 為管理功能實現按需訪問
內容安全實現:
- Azure Content Safety 集成:使用 Azure Content Safety 檢測有害內容、越獄嘗試和政策違規
- 行為分析:實現運行時行為監控,以檢測 MCP 伺服器和工具執行中的異常
- 全面日誌記錄:記錄所有身份驗證嘗試、工具調用和安全事件,並使用安全、防篡改的存儲
持續監控:
- 實時警報,用於可疑模式和未經授權的訪問嘗試
- 與 SIEM 系統集成,實現集中化的安全事件管理
- 定期對 MCP 實現進行安全審核和滲透測試
組件驗證:
- 依賴性掃描:對所有軟體依賴項和 AI 組件進行自動漏洞掃描
- 來源驗證:驗證模型、數據源和外部服務的來源、許可和完整性
- 簽名包:使用加密簽名的包,並在部署前驗證簽名
安全開發管道:
- GitHub 高級安全性:實現密鑰掃描、依賴性分析和 CodeQL 靜態分析
- CI/CD 安全性:在自動化部署管道中集成安全驗證
- 工件完整性:對部署的工件和配置進行加密驗證
OAuth 2.1 實現:
- PKCE 實現:對所有授權請求使用 Proof Key for Code Exchange (PKCE)
- 明確同意:為每個動態註冊的客戶端獲取用戶同意,以防止混淆代理攻擊
- 重定向 URI 驗證:對重定向 URI 和客戶端標識符進行嚴格驗證
代理安全:
- 防止通過靜態客戶端 ID 利用進行授權繞過
- 為第三方 API 訪問實現適當的同意工作流程
- 監控授權碼盜竊和未經授權的 API 訪問
快速響應能力:
- 自動化響應:實現自動化系統,用於憑證輪換和威脅遏制
- 回滾程序:能夠快速恢復到已知的良好配置和組件
- 取證能力:提供詳細的審計記錄和日誌,用於事件調查
溝通與協調:
- 明確的安全事件升級程序
- 與組織事件響應團隊集成
- 定期進行安全事件模擬和桌面演練
法規合規:
- 確保 MCP 實現符合行業特定要求(如 GDPR、HIPAA、SOC 2)
- 為 AI 數據處理實現數據分類和隱私控制
- 維護全面的文檔以供合規審計
變更管理:
- 對所有 MCP 系統修改進行正式的安全審查流程
- 配置更改的版本控制和批准工作流程
- 定期進行合規評估和差距分析
零信任架構:
- 永不信任,始終驗證:持續驗證用戶、設備和連接
- 微分段:對 MCP 組件進行細粒度的網路控制隔離
- 條件訪問:基於風險的訪問控制,根據當前上下文和行為進行調整
運行時應用保護:
- 運行時應用自我保護 (RASP):部署 RASP 技術以實時檢測威脅
- 應用性能監控:監控性能異常,這可能表明存在攻擊
- 動態安全策略:根據當前威脅形勢調整安全策略
全面的 Microsoft 安全性:
- Microsoft Defender for Cloud:為 MCP 工作負載提供雲安全態勢管理
- Azure Sentinel:雲原生 SIEM 和 SOAR 功能,用於高級威脅檢測
- Microsoft Purview:為 AI 工作流和數據源提供數據治理和合規性
身份與訪問管理:
- Microsoft Entra ID:企業身份管理,支持條件訪問策略
- 特權身份管理 (PIM):按需訪問和管理功能的批准工作流程
- 身份保護:基於風險的條件訪問和自動化威脅響應
保持最新:
- 規範監控:定期審查 MCP 規範更新和安全指導變更
- 威脅情報:集成 AI 特定的威脅源和妥協指標
- 安全社區參與:積極參與 MCP 安全社區和漏洞披露計劃
自適應安全:
- 機器學習安全:使用基於機器學習的異常檢測來識別新型攻擊模式
- 預測性安全分析:實現預測模型以主動識別威脅
- 安全自動化:基於威脅情報和規範變更自動更新安全策略
免責聲明:
本文件使用 AI 翻譯服務 Co-op Translator 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而產生的任何誤解或錯誤解讀概不負責。