重要:本文件反映最新 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,並通過安全隨機數生成器生成
- 用戶特定綁定:使用
<user_id>:<session_id>格式將會話 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 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。