供應商密鑰應留在模型上下文、工具參數、工具結果、URL、瀏覽器程式碼和日誌之外。MCP 伺服器使用獨立的上游憑證,模型只會取得通過授權的工具結果。
MCP 存取權杖也需要保護,但它並不是供應商權杖。將它轉傳給上游 API,會破壞協定所定義的 audience 邊界。
憑證會從哪些地方外洩
提示與上下文
代理為了診斷設定而讀取 .env,接着把值寫進思考內容、生成的程式碼或對話紀錄。在可行的情況下,應禁止模型可見的檔案工具讀取密鑰儲存區。程序需要憑證時,直接注入該程序,不要要求模型自行取得。
工具參數與結果
工具因模仿上游 API 而接受 apiKey,或傳回含有憑證和除錯標頭的供應商回應。應從結構描述完全移除密鑰欄位,改由伺服器從已驗證的工作階段狀態取得憑證。
URL
查詢字串會出現在存取日誌、瀏覽器紀錄、分析數據、錯誤報告和螢幕截圖中。MCP 授權規格要求將 bearer access token 放在 Authorization 標頭,並禁止放入 URI 查詢字串。
日誌與追蹤
HTTP middleware 可能在應用程式執行遮蔽前,就記錄標頭和請求內容。錯誤追蹤器可能擷取環境變數、子程序指令或本機檔案。應在數據收集邊界遮蔽,並測試序列化後的事件,而不只是 logger 調用。
生成的程式碼與成果
即使 .env 已被 Git 忽略,代理仍可能把值寫死在指令碼、fixture、notebook、螢幕截圖或建置輸出中。部署前要掃描建置後的客戶端套件和生成成果,搜尋憑證前綴。
AI 代理安全指南涵蓋 MCP 以外的密鑰處理。
使用兩道授權邊界
flowchart LR
C[MCP client] -->|MCP access token| S[MCP server]
S -->|validated user and policy| P[Tool executor]
P -->|separate upstream credential| U[Provider API]
U -->|bounded result| P
P -->|redacted tool result| C
MCP 伺服器會驗證存取權杖是否為自己的 audience 簽發,再授權其代表的用戶和工具操作。執行器使用專供上游服務的憑證;在可行的情況下,上游 API 也會對最終資源執行授權。
MCP 規格明確禁止把傳入的 MCP 權杖轉傳給上游 API。身份驗證與授權指南解釋資源指標、audience 檢查和獨立下游授權。
將上游憑證權限限制在工具所需範圍
使用只能執行該工具所需操作、存取所需資源的憑證。唯讀客戶查詢不應以帳戶管理員密鑰執行。如果供應商無法提供足夠精細的權限範圍,應在前方加入範圍狹窄的伺服器端 proxy,補上缺少的限制。
開發和生產環境使用不同憑證,並讓生產環境憑證遠離程式開發代理的工作區和測試 fixture。
將 Cohesivity 憑證留在伺服器端
Cohesivity 將租戶管理使用的管理密鑰,與存取已配置服務的應用程式密鑰分開。兩者都留在伺服器端程式碼,上游供應商憑證則保留在 Cohesivity 內部。
對 HTTP 應用程式,如果 offering 支援,應以應用程式密鑰交換短效邊緣工作階段權杖,再將該權杖留在伺服器請求路徑中。不要把 coh_* 值放進公開環境變數或瀏覽器請求。
後端配置操作說明會在完整設定過程中示範這項分工。
使用 canary 測試遮蔽
在測試環境中使用外型類似真實憑證的假 canary。讓請求依次通過模型輸入、工具執行、上游失敗、重試、日誌、追蹤和錯誤報告,再搜尋所有擷取成果是否出現 canary。
至少測試:
- 請求和回應日誌;
- 追蹤屬性和事件;
- 錯誤追蹤器承載數據;
- 模型對話紀錄;
- 生成的原始碼和建置輸出;
- shell 紀錄和程序命令列;
- 測試 snapshot 和 fixture。
這項測試不能使用真實憑證。
在事故發生前設計輪替與撤銷
記錄憑證擁有者、權限範圍、建立時間、最後使用時間、輪替流程和撤銷路徑。新舊憑證的重疊期間只應維持部署所需的最短時間。撤銷憑證不應要求刪除用戶帳戶,或組織中的每一項整合。
下方提示會沿着一份指定憑證追蹤整個系統,而且不會印出其值。