1. 為何要保護一個 MCP 代理
把一個代理直接指向五個 MCP 伺服器,你就有了五個信任 邊界、五個憑證儲存,以及零共享稽核軌跡。讀取一筆 客戶記錄的tools/call 和運行一個 shell
命令的那個,對模型而言看起來完全相同,而一個社群伺服器可以在
它首次載入時悄悄請求 shell.exec 與一個外部網路範圍。
修正之道是讓 OrcaRouter 成為每個呼叫都會穿越的單一咽喉要道。
要端對端保護 MCP 代理流量,你把所有 MCP 派發
路由通過防火牆的 MCP 閘道,這樣每個
tools/call 都會在抵達真正的伺服器之前被政策評估——
技能被風險評分、egress 受治理、憑證靜態加密。
2. 從 Secure Agents 基準開始
在撰寫任何客製的東西之前,先設定一個姿態。在主控台中開啟 Firewall → Posture 並套用balanced
自主等級(Developer
角色)。在一次交易中,它會稽核工具呼叫並標記 PII,同時
拒絕最具破壞性的動作——你在廣泛強制執行之前觀察,
帶一鍵還原。
當 Events 與 Runs 動態
看起來正確時,移動到 tight:預設拒絕、拒絕破壞性 shell、
拒絕 SSRF 形狀的 egress,外加 PII Shield 與 Secrets Blocker
防護欄被強制執行。那個單一開關就是本配方所構建的
底線。
3. 把每個 tools/call 路由通過一個 MCP 閘道
每個 MCP 伺服器註冊一次;閘道會把它們的工具彙整在一個 單一連線之下(命名空間化為<server>.<tool>),並把每個
tools/call 透過防火牆引擎運行。
從主控台(或 REST API,Developer+)註冊一個伺服器:
github.create_issue 與 shell.exec 並排顯示在一個
連線之下,而每次派發都會在它運行之前被評估。一個被封鎖的呼叫
會回到模型作為一個工具錯誤(firewall deny: …),而非一次
傳輸崩潰,所以代理可以適應。
在你能針對一個伺服器的工具撰寫規則之前,**探測(probe)**它以
發現它們的名稱與 schema:
4. 隔離代理拉入的技能
MCP 閘道治理呼叫;技能治理則治理一個代理載入的 能力。每個可安裝的技能、BYO MCP 伺服器, 或外掛,都會被掃描進一個風險帶與一個騎在每個規則裁決之上的 強制執行模式:| 模式 | 執行期效果 |
|---|---|
allow | 由規則裁決決定;技能不增添任何東西。 |
quarantine | 任何未達 deny 的東西都會被保留待 pending_approval。 |
block | 技能的工具被強制拒絕。 |
5. 拒絕 SSRF 形狀的 egress
一個被入侵或被混淆的 MCP 工具伸手觸及雲端中繼資料或一個 內網主機,是經典的外洩路徑。兩個層次涵蓋它。 首先,閘道在註冊時與每個派發躍點上,對照一個 SSRF 政策 驗證每個遠端 MCP 端點及其解析出的撥號 IP—— 內網範圍與雲端中繼資料地址會被拒絕,並重新檢查以 擊敗 DNS 重綁定。那是內建的;你不需要設定它。 其次,tight 自主等級出貨一個 SSRF egress 預設集,它
拒絕擷取形狀的工具名稱——http_fetch、web_search、
fetch_url、request,以及它們的 <server>.* 命名空間形式——所以一個
整個工作就是「去擷取這個 URL」的工具會在它撥號之前被擋下。
要按目的地治理工具可以觸及何處,撰寫你自己的
egress 規則,帶一份 host/CIDR 拒絕清單——那就是
固定外送觸及範圍的介面:
6. 讓伺服器憑證保持加密
每個 MCP 伺服器的auth_json 都靜態加密並在讀取時遮罩;
閘道在派發時注入憑證,所以它們從不抵達
模型或客戶端。支援的 auth_mode 值:
bearer
bearer
{ "token": "…" } —— 一個靜態 bearer 權杖,作為
Authorization: Bearer 送出。oauth
oauth
{ "client_id": "…", "client_secret": "…", "token_url": "…" } ——
client-credentials OAuth;閘道擷取並刷新權杖。basic
basic
{ "username": "…", "password": "…" } —— HTTP Basic 驗證。none
none
"" —— 一個未驗證的伺服器。預設值。status(ok / degraded / down),來自
上一次探測,在你
依賴它之前告訴你它是否可觸及。
7. 在請求上加一條內容防護欄
防火牆治理動作;用一條防護欄 搭配它,讓流經你 MCP 代理的文字也被篩查。 Secrets Blocker 預設集會在模型——或任何工具——看見一個請求中的憑證之前 捕捉它,而一個 PII Shield 會在進入路上遮罩識別碼。兩者都隨tight 自主等級
開啟,或透過 guardrail_id 把一個命名的防護欄附加到代理的中繼金鑰。
8. 驗證與觀察
在你信任政策之前,確認它做你預期的事,然後對動態 保持留意:測試一個工具呼叫
對照你的政策乾跑一個樣本
tools/call,並查看裁決、
匹配到的規則與原因——沒有東西被派發,沒有東西被記錄。Discovered tools
工作區看過的每個工具,標記為 covered 或 gap——直接從
真實 MCP 流量撰寫規則。
Events & Runs
每次派發、它的裁決,以及它命中的介面,按每個
代理 run 彙整。
Anomaly feed
對照一個習得基準的速率/成本飆升、重試迴圈與新穎工具路徑。
9. 下一步去哪裡
MCP 工具下毒
隔離與 MCP 閘道背後的威脅模型。
過度代理權
為何預設拒絕與 HITL 對自主工具使用很重要。
自主代理配方
端對端加固一個高自主代理。
停止外洩
深入鎖定外送 egress。
