tools/call 上開始注入新密鑰。
每個伺服器的驗證在靜態時加密並讀取時遮罩,所以
明文權杖永不會往返回到你的主控台、你的代理或
模型。輪替是一個透過工作區主控台的單欄位更新。
1. 為何 MCP 密鑰輪替是它自己的動作
一個已註冊的 MCP 伺服器持有三件你不想在一個 憑證變更時失去的事:一個唯一的工作區name(你的規則 glob 比對的
<server>.<tool> 命名空間)、一個 endpoint,以及它探索到的工具
集。刪除並重新建立伺服器以變更一個權杖會孤立
每一條限定範圍至 <server>.* 的規則,並強制一次全新的探測。
輪替繞開了這一切。你用新的 auth_json PUT 同一筆伺服器
記錄;其他一切——name、規則、探索到的工具——都保持不動。
閘道在派發時注入憑證,只在要進行
上游呼叫時才解密它們。一個輪替後的密鑰會在下一次
連線時生效——OrcaRouter 會在每一次伺服器變更時使每工作區工具快取
失效,所以沒有 TTL 需要等待。
2. 一次具體的輪替
假設你註冊了一個名為github 的 MCP 伺服器並帶有一個 bearer token,而
那個權杖需要更換。先讀取目前的記錄——回應
會遮罩密鑰,所以你永不會處理舊的明文:
PUT 同一筆記錄。在主體中送出
id 與全新的 auth_json;閘道會在它接觸資料庫之前
重新加密它:
name、endpoint、auth_mode 與
enabled 全部保留它們已儲存的值。新權杖在下一次
tools/call 上線。
3. 變更驗證模式,不只是密鑰
輪替也涵蓋在驗證方案之間移動一個伺服器。auth_mode 值的
封閉集合是:
none
none
無憑證。
auth_json 為空。用於公開或
網路信任的 MCP 伺服器。bearer
bearer
{ "token": "…" } —— 作為一個 Authorization: Bearer 標頭傳送。oauth
oauth
{ "client_id": "…", "client_secret": "…", "token_url": "…" }。如果你
在 JSON 中儲存一個靜態 access_token,閘道會把它作為一個
bearer token 傳送;client-credentials 交換本身尚未執行,所以
一個需要即時交換的伺服器會失敗,直到你提供一個權杖。basic
basic
{ "username": "…", "password": "…" } —— HTTP basic auth。4. 輪替之後:重新探測
如果舊權杖已被撤銷,一個輪替後的憑證會變更你能觸及哪些 工具。探測該伺服器以確認新 驗證可運作並刷新它的可觸及性status:
ok、degraded 或 down。一次驗證失敗會在這裡浮現,
而非作為一個在執行中途令人困惑的工具錯誤。
5. 角色與保持遮罩的內容
本頁上的每一個動作都是一個工作區限定的主控台呼叫 (/api/workspace/firewall/mcp_servers,UserAuth)並受角色控管:
| 動作 | 最低角色 |
|---|---|
| 讀取一個伺服器(密鑰遮罩) | Member |
| 輪替/更新/註冊 | Developer+ |
| 刪除 | Developer+ |
明文永不會被回傳到你的主控台。 讀取會遮罩密鑰並
隱去端點;閘道是唯一會解密一個
憑證的東西,且只在它撥接上游伺服器的那一刻。模型
與你的代理既看不到舊權杖也看不到新權杖。
6. 這如何融入
輪替是更廣泛 MCP 信任表面中的一個操作。一旦你的 伺服器已連接並驗證,同一個閘道會在每一次tools/call 執行之前對照你的防火牆政策評估它、
在其上套用技能隔離,並
治理外向觸及範圍。
連接一個伺服器
註冊一個 MCP 伺服器並探測它的工具。
驗證
為每個伺服器挑選正確的驗證模式。
允許清單 MCP 工具
限定每個伺服器可以公開哪些工具。
Egress 限制
治理工具呼叫可以觸及何處。
