shell.exec、
查詢資料庫、擷取一個 URL、透過 MCP 伺服器派發一次工具呼叫。
其中每一項都是提示詞層級的防護欄
看不見的真實世界動作。代理防火牆是治理它們的動作層平面:
一個工作區範圍的命名政策,閘道會在每次工具呼叫時、在它抵達工具
之前對它進行評估。
本頁是防火牆章節的中樞——政策模型、裁決、各介面,以及一個政策
如何綁定到金鑰。每個分支頁都深入一層,而完整的引擎參考存在於
防火牆與防火牆規則。
1. 代理防火牆做什麼
你在工作區主控台撰寫一次政策,將一個 API 金鑰綁定到它 (或將其中一個設為工作區預設值),從此該金鑰發出的每一次工具 呼叫都會在閘道處對照該政策檢查。無需重新部署、無需修改代理 程式碼——你的代理像以前一樣繼續發出工具呼叫,而編輯政策會在 下次呼叫時對綁定到它的每個金鑰生效。 一個政策是一份有序的規則清單。每條規則決定它套用於哪些工具 呼叫以及要對它們做什麼。引擎會按優先順序走訪規則,第一個 匹配者勝出,若無任何匹配則回退到政策的預設裁決。偵測發生在閘道處,於首次使用時——而不是在安裝時。代理自行安裝的
工具、MCP 伺服器或技能,會在其呼叫首次穿越閘道時被捕捉。那是
那個唯一能看見每一個供應商、每一個代理與每一次工具呼叫的咽喉
要道,無論該能力是如何進來的。
2. 一個具體範例
假設你想封鎖破壞性的 shell 指令,但讓其餘一切在稽核下通過。在 主控台中你建立一個default_verdict = audit 的政策,並加上一條規則:
args_match_json 是一個 JSON 編碼的字串(閘道在儲存時會對照
子句綱要驗證它):path 是進入該呼叫引數的一個 JSONPath,op 是
eq、contains、regex、in、cidr_match、gt、lt 之一。
將一個金鑰綁定到該政策(在金鑰上設定 firewall_policy_id)。現在當
一個代理以 command: "rm -rf /" 發出 shell.exec 時,閘道會傳回
HTTP 400,帶有錯誤代碼 firewall_blocked 與一個指名工具的
原因——而該呼叫永遠不會抵達 shell。其餘每一次工具呼叫都會被允許
並記錄下來以供審查。
3. 政策、規則與解析
一個政策是工作區範圍的且命名的,具有enabled、is_default、一個
default_verdict(allow / audit / deny,預設 audit)以及一個
shadow_mode 旗標。一條規則是它內部的一項檢查——參見
建立政策與
規則綱要。
對任何工具呼叫,閘道會按此順序解析作用中的政策:
- 金鑰綁定——呼叫金鑰的
firewall_policy_id,當該政策存在且已 啟用時。 - 工作區預設值——否則套用已啟用的
is_default政策。
firewall_observe_mode 設定:在觀察模式開啟時,呼叫會被允許但
記錄為一個涵蓋缺口(它會出現在 Discovered Tools 中);在它關閉時,
呼叫會被靜默允許。
4. 裁決
一條規則——或預設裁決——會產生以下其中之一:| 裁決 | 作用 |
|---|---|
allow | 讓呼叫通過,會被記錄。 |
audit | 允許 + 記錄以供審查。常見的預設值。 |
deny | 封鎖。inbound 上回傳 HTTP 400 firewall_blocked;MCP 上回傳工具錯誤。 |
sanitize | 從工具引數中遮罩匹配到的子字串並轉送。 |
pending_approval | 為人類保留;HTTP 400 firewall_approval_pending。 |
cap_cost | 一旦執行的花費跨越每規則上限就拒絕。 |
sanitize 裁決只遮罩呼叫引數——絕不遮罩工具回傳的內容。
在 inbound 介面上,那裡尚無呼叫時引數,sanitize 會升級為封鎖。參見
裁決與
淨化回應。
5. 四個強制執行介面
每一次工具呼叫都會對照恰好一個介面進行評估——用stage 欄位
將一條規則固定到其中一個,或將它留空以套用於全部。
inbound
代理在請求上向模型公告的工具。在模型甚至無法選擇某個危險工具
之前就將其封鎖。
response
模型在其回覆中發出的
tool_calls。mcp
透過 MCP 閘道派發的一次
tools/call。參見
MCP 伺服器。egress
某工具觸及的一個外送 host / IP / CIDR——SSRF 與資料外洩介面。
6. 匹配
規則以一套小而確定的詞彙表達它們捕捉哪些工具呼叫,這套詞彙在 熱路徑上是安全的:工具與技能名稱 glob
工具與技能名稱 glob
引數子句
引數子句
對呼叫引數的 JSONPath 判定式,運算子有
eq、contains、regex、
in、cidr_match、gt、lt——這是「封鎖 shell.exec」與「只在
指令為 rm -rf 時才封鎖它」之間的差別。子句失敗關閉(影響的是
規則,而非請求)。參見
驗證引數。Egress 清單
Egress 清單
egress 介面上的 host / IP / CIDR 允許與拒絕清單。你可以為
cloud-metadata 或 RFC-1918 範圍撰寫自己的拒絕規則。參見
Egress 控制。7. 人工審批、自主與異常
- 人工介入(HITL)。 一個
pending_approval裁決會保留該呼叫並 傳回它的審批 id。審查者在主控台(Developer+)或透過一個 HMAC 簽署的 webhook 回呼解決它;代理進行輪詢,並帶著一個一次性的X-OrcaRouter-Firewall-Approval標頭重新提交。參見 審批與 審批 webhook。 - 自主等級。 單一開關設定你的整體姿態:
tight(default-deny + 拒絕破壞性 shell + 拒絕擷取形狀的工具 (http_fetch/web_search/fetch_url/request,即 SSRF 向量)+ 強制執行 PII Shield + Secrets Blocker)、balanced(預設 audit、拒絕 破壞性 shell、PII Shield 僅稽核),或permissive(僅觀察)。每一個 都會寫入真實、可編輯的政策與防護欄列,並支援從稽核快照一鍵還原。 - 異常偵測。 在靜態規則之外,防火牆會將工具使用對照一個習得的
週小時基線(14 天)評分,並在一個 Member 可讀、你可暫停(snooze)
最多 7 天的動態上標記速率/成本飆升、
retry_loop與novel_path。
8. 防火牆的定位
防火牆是兩個相鄰平面的動作層對等物: 內容平面與動作平面都可套用於單一請求,而一個自主等級會將它們 一起設定好。參見 防護欄 vs. 防火牆與 控制堆疊。9. 綁定與連接
一個政策透過firewall_policy_id 綁定到金鑰(在主控台中設定;綁定
存在於閘道中的金鑰上)。一次工具呼叫抵達引擎有兩種方式,兩者都
需要一個防火牆閘道範圍的金鑰(is_firewall_gateway = true)——一般
中繼金鑰在這些路由上會得到 403:
- MCP 閘道——將你的 MCP 客戶端指向統一的
ANY /api/v1/firewall/mcp端點;每一次tools/call都會被就地評估。 參見 MCP 伺服器。 - Evaluate hook——在派發之前,從你自己的代理迴圈呼叫
POST /api/v1/firewall/evaluate(或對多步驟計畫呼叫/evaluate_plan),並依裁決行動。
/api/workspace/firewall/* 在你的工作階段下
執行。對政策、設定、discovered tools、唯讀自主模擬器與異常動態的
讀取對每個工作區成員開放;乾跑的 Test 沙盒、Events / Runs 記錄,
以及所有寫入都需要 Developer+。參見
閘道金鑰與
測試規則。
10. 此平面處理的威脅
危險的工具呼叫
依 glob + args 拒絕破壞性 shell、DB drop 與高風險動詞。
資料外洩
Egress 清單與「讀取後匯出」序列規則。
MCP 工具投毒
在派發前於
mcp 介面上進行每次呼叫的評估。過度代理權
審批、成本上限與 default-deny 姿態。
下一步
建立政策
撰寫你的第一個政策與規則。
裁決
每個裁決在線路上做什麼。
事件記錄
讀取防火牆判定了什麼以及為何。
