跳轉到主要內容
一個 MCP 代理是一個有觸及力的代理。它連接的每個 Model Context Protocol 伺服器都是一組沒有人審查過的全新工具、憑證與網路 目的地——而代理可以在執行中途拉入一個新的。本配方展示 四個招式,把一個四散蔓延的 MCP 設定變成一個受治理的:一個受稽核的單一 MCP 閘道、 技能隔離、egress 拒絕,以及加密的伺服器驗證。 你針對你的工作區,從主控台(或 REST API)設定其中的一切。 你的代理像以前一樣持續講 MCP。

1. 為何要保護一個 MCP 代理

把一個代理直接指向五個 MCP 伺服器,你就有了五個信任 邊界、五個憑證儲存,以及零共享稽核軌跡。讀取一筆 客戶記錄的 tools/call 和運行一個 shell 命令的那個,對模型而言看起來完全相同,而一個社群伺服器可以在 它首次載入時悄悄請求 shell.exec 與一個外部網路範圍。 修正之道是讓 OrcaRouter 成為每個呼叫都會穿越的單一咽喉要道。 要端對端保護 MCP 代理流量,你把所有 MCP 派發 路由通過防火牆的 MCP 閘道,這樣每個 tools/call 都會在抵達真正的伺服器之前被政策評估—— 技能被風險評分、egress 受治理、憑證靜態加密。
這是一個配方——它把既有功能縫合成一次具體的 加固過程。關於完整參考,跟隨連結進入 防火牆MCP 伺服器技能

2. 從 Secure Agents 基準開始

在撰寫任何客製的東西之前,先設定一個姿態。在主控台中開啟 Firewall → Posture 並套用 balanced 自主等級(Developer 角色)。在一次交易中,它會稽核工具呼叫並標記 PII,同時 拒絕最具破壞性的動作——你在廣泛強制執行之前觀察, 帶一鍵還原。 Events 與 Runs 動態 看起來正確時,移動到 tight:預設拒絕、拒絕破壞性 shell、 拒絕 SSRF 形狀的 egress,外加 PII Shield 與 Secrets Blocker 防護欄被強制執行。那個單一開關就是本配方所構建的 底線。
偏好不翻動整個工作區就漸進加碼?把下方的規則 撰寫進一個命名的政策,並開啟它的影子模式——它 會評估並記錄,但把每個強制執行的裁決降級為 audit (原因加上前綴 [shadow] would …),直到你確定為止。參見 強制執行模式

3. 把每個 tools/call 路由通過一個 MCP 閘道

每個 MCP 伺服器註冊一次;閘道會把它們的工具彙整在一個 單一連線之下(命名空間化為 <server>.<tool>),並把每個 tools/call 透過防火牆引擎運行。 從主控台(或 REST API,Developer+)註冊一個伺服器:
curl https://api.orcarouter.ai/api/workspace/firewall/mcp_servers \
  -H "Authorization: Bearer <your-session-token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "github",
    "endpoint": "https://api.githubcopilot.com/mcp",
    "auth_mode": "bearer",
    "auth_json": "{\"token\":\"ghp_x\"}",
    "enabled": true
  }'
然後把你的 MCP 客戶端指向閘道——而非上游伺服器—— 使用一把專用的防火牆閘道範圍金鑰:
https://api.orcarouter.ai/api/v1/firewall/mcp
現在 github.create_issueshell.exec 並排顯示在一個 連線之下,而每次派發都會在它運行之前被評估。一個被封鎖的呼叫 會回到模型作為一個工具錯誤firewall deny: …),而非一次 傳輸崩潰,所以代理可以適應。
一把一般中繼金鑰在閘道路由 /api/v1/firewall/mcp 上會得到 403。為 MCP 連線鑄造一把專用的閘道權杖 (is_firewall_gateway);讀取那把閘道 金鑰的明文需要 Admin+
在你能針對一個伺服器的工具撰寫規則之前,**探測(probe)**它以 發現它們的名稱與 schema:
curl -X POST \
  https://api.orcarouter.ai/api/workspace/firewall/mcp_servers/42/probe \
  -H "Authorization: Bearer <your-session-token>"

4. 隔離代理拉入的技能

MCP 閘道治理呼叫;技能治理則治理一個代理載入的 能力。每個可安裝的技能、BYO MCP 伺服器, 或外掛,都會被掃描進一個風險帶與一個騎在每個規則裁決之上的 強制執行模式:
模式執行期效果
allow由規則裁決決定;技能不增添任何東西。
quarantine任何未達 deny 的東西都會被保留待 pending_approval
block技能的工具被強制拒絕。
對一個 MCP 代理的要點:一個沒有人審批的能力不會得到 免費通行。當一個代理自我安裝某個東西,且其工具首次 穿越閘道時,防火牆會自動偵測它並隔離它 直到一個人類審查它——即使它掃描乾淨。預先核准 你信任的伺服器;讓其餘的落入審查佇列。
在你學習你的代理實際安裝什麼時,讓 balanced/observe 保持開啟, 然後把信任的技能晉升到 allow,並讓長尾 保持隔離。參見 技能

5. 拒絕 SSRF 形狀的 egress

一個被入侵或被混淆的 MCP 工具伸手觸及雲端中繼資料或一個 內網主機,是經典的外洩路徑。兩個層次涵蓋它。 首先,閘道在註冊時與每個派發躍點上,對照一個 SSRF 政策 驗證每個遠端 MCP 端點及其解析出的撥號 IP—— 內網範圍與雲端中繼資料地址會被拒絕,並重新檢查以 擊敗 DNS 重綁定。那是內建的;你不需要設定它。 其次,tight 自主等級出貨一個 SSRF egress 預設集,它 拒絕擷取形狀的工具名稱——http_fetchweb_searchfetch_urlrequest,以及它們的 <server>.* 命名空間形式——所以一個 整個工作就是「去擷取這個 URL」的工具會在它撥號之前被擋下。 要按目的地治理工具可以觸及何處,撰寫你自己的 egress 規則,帶一份 host/CIDR 拒絕清單——那就是 固定外送觸及範圍的介面:
// firewall rule, egress stage — deny outbound to an internal range.
// egress_json is a JSON *string*: {"deny":[…],"allow":[…]} of hosts/CIDRs.
{
  "stage": "egress",
  "verdict": "deny",
  "egress_json": "{\"deny\":[\"10.0.0.0/8\",\"169.254.169.254\"]}"
}
沒有預設集出貨 CIDR egress 規則——SSRF 預設集匹配工具名稱, 而非目的地。當你需要目的地層級的控制時,自己撰寫 host/CIDR 拒絕清單。參見 egress 清單停止外洩

6. 讓伺服器憑證保持加密

每個 MCP 伺服器的 auth_json 都靜態加密並在讀取時遮罩; 閘道在派發時注入憑證,所以它們從不抵達 模型或客戶端。支援的 auth_mode 值:
{ "token": "…" } —— 一個靜態 bearer 權杖,作為 Authorization: Bearer 送出。
{ "client_id": "…", "client_secret": "…", "token_url": "…" } —— client-credentials OAuth;閘道擷取並刷新權杖。
{ "username": "…", "password": "…" } —— HTTP Basic 驗證。
"" —— 一個未驗證的伺服器。預設值。
在讀取時密鑰會被遮罩;在更新時把遮罩回顯以保留 儲存的值。伺服器的 statusok / degraded / down),來自 上一次探測,在你 依賴它之前告訴你它是否可觸及。

7. 在請求上加一條內容防護欄

防火牆治理動作;用一條防護欄 搭配它,讓流經你 MCP 代理的文字也被篩查。 Secrets Blocker 預設集會在模型——或任何工具——看見一個請求中的憑證之前 捕捉它,而一個 PII Shield 會在進入路上遮罩識別碼。兩者都隨 tight 自主等級 開啟,或透過 guardrail_id 把一個命名的防護欄附加到代理的中繼金鑰。
防火牆的 sanitize 裁決遮蔽工具呼叫的引數,絕不遮蔽 一個工具回傳的內容。用 Secrets Blocker 防護欄從請求中 剝除密鑰;用一條防火牆規則淨化一個代理發出的引數。 它們涵蓋流程的不同半邊。

8. 驗證與觀察

在你信任政策之前,確認它做你預期的事,然後對動態 保持留意:

測試一個工具呼叫

對照你的政策乾跑一個樣本 tools/call,並查看裁決、 匹配到的規則與原因——沒有東西被派發,沒有東西被記錄。

Discovered tools

工作區看過的每個工具,標記為 covered 或 gap——直接從 真實 MCP 流量撰寫規則。

Events & Runs

每次派發、它的裁決,以及它命中的介面,按每個 代理 run 彙整。

Anomaly feed

對照一個習得基準的速率/成本飆升、重試迴圈與新穎工具路徑。

9. 下一步去哪裡

MCP 工具下毒

隔離與 MCP 閘道背後的威脅模型。

過度代理權

為何預設拒絕與 HITL 對自主工具使用很重要。

自主代理配方

端對端加固一個高自主代理。

停止外洩

深入鎖定外送 egress。