fetch、一個 web_search、一個 webhook poster。工具名稱可能在你的
允許清單上、引數可能看起來乾淨,而該呼叫仍然最終
把你的資料 POST 到一個攻擊者控制的主機,或從
169.254.169.254 中繼資料端點拉取憑證。目的地是該呼叫中
你的工具名稱規則永遠看不見的部分。
mcp egress 控制封堵那個缺口。一條 egress 規則把一個防火牆
裁決限定到一個工具觸及何處——一個主機、一個 IP,或一個 CIDR 範圍——所以
被允許觸及 api.openai.com 的同一個 http_fetch 被拒絕觸及
其他一切。它在防火牆的 egress 表面上執行,凌駕於
每一次 tools/call 都已經經過的每次呼叫評估之上。
這是一個主控台任務。防火牆規則位於
/api/workspace/firewall/* 路由上,這些路由以你的工作階段/
存取權杖驗證——而非一個轉送 sk-orca-… 金鑰。撰寫一條規則需要
Developer+ 角色。1. 一條 egress 規則控制什麼
一條一般規則在工具名稱及其引數上匹配。一條 egress 規則加上第三個維度:該呼叫解析到的目的地。 你把規則的stage 設為 egress 並附加一個 egress_json
allow / deny 條目清單。引擎會從該呼叫中萃取目的地主機
並只在那個主機在範圍內時觸發該規則。
條目以三種方式匹配:
主機名稱
不分大小寫的精確匹配,例如
api.openai.com。兩側的尾隨點
都會被修剪。IP 字面值
對照解析出的撥接 IP 的精確匹配,例如
169.254.169.254。CIDR 範圍
目的地 IP——字面值或 DNS 解析——必須落在該
區塊內,例如
10.0.0.0/8。2. 一個具體範例
拒絕每一個 fetch 形狀的工具觸及雲端中繼資料端點與 RFC-1918 範圍。這是經典的 SSRF 外洩腿切斷:在egress stage 上的一個 deny 裁決,由一個 egress_json 拒絕清單限定範圍。
tools/call 會
作為一個工具錯誤回到模型;一個對拒絕清單未涵蓋的公開主機的
呼叫則通過。
3. 只允許清單一個目的地
上面範例的反面:把一個 fetch 工具釘在一個單一獲准的 主機上,並讓政策的default_verdict(或一個之後的全包規則)處理
其餘的。因為這是一個 allow 裁決,allow 清單是
範圍內集合。
4. 它如何與防火牆其餘部分組合
一條 egress 規則是一個 工作區防火牆政策中眾多規則之一。引擎依 優先順序(最低優先)走訪規則,而第一個匹配獲勝,所以把一條緊的 egress deny 放在任何廣泛的 allow 之上。| egress 規則上的裁決 | 效果 |
|---|---|
deny | 封鎖對範圍內目的地的呼叫——記錄在 egress 表面上並作為一個錯誤回傳到該工具。 |
audit | 把匹配的呼叫記錄為一個防火牆事件;仍然派發。 |
allow | 允許範圍內目的地;與一個預設拒絕底線搭配。 |
pending_approval 與 cap_cost 不會在 egress 表面上
強制執行——egress 是一個目的地檢查,不是一個保留或一個支出上限。改在
mcp 或 inbound 表面上使用那些裁決。請見
裁決參考。內建 SSRF 防護(無需規則)
內建 SSRF 防護(無需規則)
獨立於你撰寫的任何規則,
MCP 閘道會對照一個 SSRF 政策驗證每個伺服器端點
及其解析出的撥接 IP——內網範圍與
雲端中繼資料位址會被拒絕,且該 IP 會在
每一個躍點被重新檢查以挫敗 DNS 重新綁定。你的 egress 規則在那個
基準之上疊加一個工作區特定的目的地政策。
針對外洩鏈的序列規則
針對外洩鏈的序列規則
一條單一的 egress deny 會停止一個工具觸及一個主機。一條
序列規則會停止
整條鏈——例如「讀取一個檔案,然後在窗口內 egress」——透過
只在 egress 腿緊跟在一次敏感讀取之後時標示它。那是
致命三重奏破壞器;egress 範圍限定是每次呼叫的控制。
5. 先 shadow,再強制執行
在一個繁忙的工作區上把一條 egress deny 直接推到強制執行,冒著 弄壞一個你忘記的合法整合的風險。兩個安全網:- Shadow 模式。 一個處於 shadow 模式的政策會把每一個強制執行
裁決降級為 audit——你的 egress deny 會記錄
[shadow] would deny …而非 封鎖,所以你在它咬人之前看見爆炸半徑。 - Observe 模式。 工作區
firewall_observe_mode設定會把 未涵蓋的呼叫記錄為探索到的工具,浮現你的代理 已經觸及的真實目的地,所以你可以從資料而非猜測 撰寫一個準確的允許清單。
6. 角色與路由
所有主控台路由都是工作區限定的,並以你的工作階段 /存取權杖驗證。讀取對任何 Member 開放;撰寫或編輯一條 規則需要 Developer+。| 方法與路徑 | 角色 | 用途 |
|---|---|---|
GET /api/workspace/firewall/policies/:id | Member | 讀取一個政策及其規則。 |
POST /api/workspace/firewall/rules | Developer+ | 新增一條規則(設定 stage: egress)。 |
PUT /api/workspace/firewall/rules | Developer+ | 更新一條規則(id 在主體中)。 |
DELETE /api/workspace/firewall/rules/:id | Developer+ | 移除一條規則。 |
POST /api/workspace/firewall/test | Developer+ | 對照一個草稿政策重播一個範例呼叫。 |
相關
防火牆規則參考
完整的規則 DSL——工具 globs、引數匹配、egress 清單、序列。
連接一個 MCP 伺服器
註冊一個伺服器,使它的工具呼叫在防火牆後方執行。
允許清單 MCP 工具
預設拒絕你未明確核准的工具。
資料外洩
egress 控制被建來阻止的威脅。
