1. 是什麼使代理過度具備能力
當工作區中的每個代理共享一個金鑰,或當金鑰被發行一次後從未重新審視時,能力就向上漂移:- 不受限制的模型——代理可以呼叫工作區中的任何模型,包括它從不需要的昂貴或高度具備能力的模型。
- 沒有支出上限——失控的迴圈、觸發的注入或帳單攻擊可以在你注意到之前耗盡工作區餘額。
- 沒有到期——在 sprint 期間發行的金鑰在一年後仍然有效,遠在它被鑄造的代理退役之後。
- 沒有 IP 限制——憑證可以在任何地方使用,所以洩漏的金鑰沒有地理限制。
- 沒有工具允許清單——代理可以呼叫任何工具,甚至與其功能無關的工具。
2. 混淆代理人模式
混淆代理人是過度代理權限的專門化。代理不是被劫持;它被說服。擷取的網頁、 文件或工具結果中的提示注入負載告訴代理採取它被合法授權執行的動作——轉移金錢、刪除記錄、 發送訊息——代表攻擊者。 代理行動。它被授權做恰好那件事。授權檢查通過。損害已造成。 防禦需要兩件事協同工作:- 窄範圍——代理不能被欺騙做其任務從未打算的事情,因為它根本沒有被授權做那件事。
- 不可逆動作的人工審批——即使在授權範圍內,高風險呼叫在執行之前也需要人工確認。
3. 深度防禦:四個層次
OrcaRouter 在組合在單一 API 金鑰上的四個獨立控制中強制執行最小代理權限。 你的代理不需要任何程式碼更改。第一層——範圍化金鑰(身份 + 硬性限制)
每個代理都應該有自己的 API 金鑰。金鑰攜帶閘道無論代理請求什麼都強制執行的硬性限制:| 欄位 | 它限制什麼 |
|---|---|
model_limits | 此金鑰可以呼叫的確切模型集合。對任何其他模型的請求在離開閘道之前被拒絕。 |
allow_ips | 來自此清單上任何地址的請求在驗證層被拒絕。空意味著沒有 IP 限制。 |
credit_limit_usd | 以美元計的終生支出上限。0 意味著無限制。閘道對金鑰的累計支出強制執行這一點。 |
expired_time | 絕對到期時間戳。-1 意味著金鑰永不過期。將此設定為代理的部署生命週期。 |
environment | 一個標籤(prod、staging、dev),用於組織金鑰和過濾稽核日誌。 |
第二層——防火牆政策(工具允許清單)
透過firewall_policy_id 將防火牆政策附加到金鑰。
政策治理該金鑰發出的每次工具呼叫:
- 撰寫允許代理合法使用的工具名稱的規則(支援工具名稱 glob——例如
db.query*)。 - 將政策的
default_verdict設定為**deny**,以便任何未明確列出的東西都被封鎖。 - 添加引數謂詞以進一步限制即使是允許的工具——例如只有當
database引數匹配 特定模式時才允許db.query。
第三層——高風險動作的人工審批(pending_approval)
對於不可逆或高價值的工具呼叫——支付派發、記錄刪除、電子郵件發送——
添加 pending_approval 規則。流程:
- 代理發出工具呼叫。防火牆保留它並返回攜帶審批 id 的「保留中」回應。呼叫不會到達工具。
- 審查者在頻道外批准或拒絕——從主控台(Developer+)或透過 HMAC 簽署的 webhook 到你自己的審批系統。
- 你的代理輪詢審批 id。一旦批准,它帶著一次性的
X-OrcaRouter-Firewall-Approval標頭 重新提交原始呼叫。閘道只讓它通過一次。
第四層——每次執行的成本上限(cap_cost)
cap_cost 規則一旦代理執行的累計支出超過每規則上限(以分計)就拒絕任何工具呼叫。
這是以下情況的斷路器:
- 由注入觸發的失控迴圈。
- 在任何人注意到之前驅動支出的帳單攻擊。
- 多步驟計畫中的意外遞歸。
cap_cost 在執行層面操作,而不是金鑰終生層面——所以它每次代理調用重置,
單次行為不端的執行無法耗盡金鑰的 credit_limit_usd 上限。
4. 精心範圍化的代理金鑰——範例
使用gpt-4o-mini 摘要客戶工單並查詢只讀副本的代理應該看起來像這樣:
model_limits:["openai/gpt-4o-mini"]——無法升級到更有能力或更昂貴的模型。allow_ips: 工作者池的外向 CIDR——金鑰在其他地方是無效的。credit_limit_usd: 與任務預期成本匹配的每週上限,留有一些餘地——例如5.00。expired_time: sprint 或部署期間的結束——金鑰自動過期,無需手動清理。environment:"prod"——出現在日誌過濾器和異常視圖中。guardrail_id: 限定到此代理資料敏感度的防護欄(PII 遮罩,輸出中沒有密鑰)。firewall_policy_id: 只允許db.query*和ticket.read*的政策,預設裁決deny。
is_firewall_gateway 將金鑰標記為 MCP 派發和評估鉤子路由的閘道範圍的權杖。
只為以程式方式驅動防火牆的代理建立這些——永遠不要為一般推理流量建立。
推理路徑上的閘道金鑰暴露了廣用途金鑰永遠不應該觸及的路由。
啟用 is_firewall_gateway 需要 Admin+。5. 所需角色
| 動作 | 最低角色 |
|---|---|
| 讀取任何金鑰、政策或防火牆事件 | Member |
| 建立或編輯金鑰、防火牆政策、規則 | Developer |
| 從主控台批准保留的工具呼叫 | Developer |
在金鑰上啟用 is_firewall_gateway | Admin |
6. 與其他威脅的關係
過度代理權限是幾乎每個其他代理威脅的推動因素:- 危險工具呼叫——帶有緊密工具允許清單的金鑰 不能被強迫呼叫它沒有列出的工具,即使注入成功。
- 提示注入——範圍限制了注入能造成的損害;審批門封鎖了注入試圖觸發的不可逆動作。
- 威脅模型——完整的攻擊面地圖, 顯示過度代理權限相對於其他向量的位置。
範圍化金鑰與政策
完整的金鑰欄位參考、解析順序和工作區邊界模型。
防火牆
政策撰寫、裁決、HITL 審批流程和完整 API 參考。
