http_fetch、web_search,或任何開啟一個外送連線的
工具時,目的地是你最需要治理的部分。一個能觸及 169.254.169.254
的混亂或被劫持的代理會讀取你的雲端憑證;一個能 POST 到攻擊者主機
的代理會外洩你的資料。代理 egress 控制治理那個目的地——你在
防火牆的 egress 介面上撰寫一條 host/CIDR 允許/拒絕規則,將它
綁定到一個金鑰,而閘道會在呼叫送出之前檢查一個代理的工具回報的
每一個外送目的地。
這是一個聚焦的使用情境頁。關於完整的規則文法與裁決語意,參見
規則綱要與
裁決;關於 egress 如何坐落在
其他強制執行點之間,參見介面。
1. Egress 介面上的代理 egress 控制
在防火牆的四個介面中,egress 是
那個看見一個工具回報的外送網路目的地——一個 host、一個 IP
字面值,或一個 CIDR——的介面。一條固定到 stage: egress 的規則匹配
那個目的地,而不是工具名稱或它的引數,這使它成為 SSRF 與資料外洩
控制:它回答這個代理能觸及哪裡,獨立於哪個工具做了觸及。
Egress 是目的地限定,而非工具封鎖。要完全阻止一個工具存在,
在 inbound 介面上依名稱拒絕它(封鎖工具)。
Egress 控制假設該工具可能正當地擷取——它只是約束去哪裡。
2. 一個範例:拒絕 SSRF 目的地
典型的 egress 規則拒絕 cloud metadata 端點與私有 RFC-1918 範圍——一個 擷取形狀的工具絕不應觸及的目的地。在你的工作區主控台中,開啟一個 政策並加入一條帶有stage
egress、裁決 deny 與一個 egress 清單的規則:
egress_json 是一個攜帶 host/CIDR 清單的 JSON 編碼字串——解碼後,
它是 {"deny": [...], "allow": [...]}。每個條目以一個 CIDR、一個
IP 字面值,或一個不區分大小寫的主機名稱匹配。對一個 deny
裁決而言,deny 清單是範圍內的集合(規則封鎖的目的地),而 allow
清單從中切出例外——所以上面的規則封鎖那四個範圍,但讓
api.openai.com 通過,即使它曾經解析進其中一個範圍。當一個目的地是
一個主機名稱而非一個字面 IP、而你的清單攜帶 IP/CIDR 條目時,該名稱
會被盡力解析、其位址會被重新檢查,所以 metadata.internal 仍會匹配
一個 169.254.0.0/16 拒絕,即使它沒有按名稱列出。
3. 你撰寫 CIDR 規則——沒有預設集附帶它們
tight 自主等級及其
block_ssrf_egress 預設集確實附帶的,是一組對擷取形狀的工具
名稱——http_fetch、web_search、fetch_url、request,加上它們的
<server>.<tool> MCP 變體——的拒絕。那是一個直接的姿態:它直接拒絕
那些 egress 形狀的工具,而不是限定它們可以觸及哪裡。當一個代理根本
不該做任何網路呼叫時去拿它;當它確實擷取但只從一個核准的主機集合
時,去拿一條目的地規則(§2)。
| 做法 | 它約束什麼 | 由誰撰寫 |
|---|---|---|
tight SSRF 預設集 | 擷取形狀的工具名稱(拒絕它們) | 內建 |
| Egress CIDR/host 規則 | 一次擷取可觸及的目的地 | 你 |
4. 一個被封鎖的 egress 的樣子
當一個目的地匹配一條強制執行的 egress 規則時,該呼叫會在它離開 閘道之前被拒絕,而該評估會被記錄為一個介面為egress、裁決為
deny 的防火牆事件。在影子模式
下,該 deny 會被降級為 audit,原因加上前綴 [shadow] would …,所以
你能在強制執行它之前,精確衡量一條規則對照真實流量會封鎖哪些
目的地。
一個格式錯誤或無條目的 egress 清單會被保守地處理:一條強制執行的
deny 規則仍會把關(一個錯字不能靜默地讓它停止封鎖),但一條帶有
壞清單的 allow 規則不會觸發——否則一個打錯字的允許清單會變成
allow-all 並遮蔽一個 default deny。新規則在儲存時被驗證(清單必須
宣告至少一個 allow 或 deny 條目),所以這只會保護舊有的列。5. 從真實流量撰寫,然後推出
看見你實際觸及的目的地
看見你實際觸及的目的地
在你依賴一個裁決之前乾跑它
在你依賴一個裁決之前乾跑它
主控台 Test 分頁會對照一個樣本
tool_name + 介面(+ 可選的
args)乾跑一個政策,並傳回裁決、匹配到的規則與原因——不派發任何
東西。它確認一次呼叫解析到哪條規則;要對照真實目的地確認你的
CIDR/host 運算,使用下方的影子模式(Test 載荷不攜帶一個目的地,
所以 egress 清單匹配是在即時 egress 流量上演練)。參見
測試規則。6. 綁定政策以及誰能編輯它
一個政策在某個金鑰解析到它之前什麼都不做。在主控台中透過在 金鑰上設定firewall_policy_id 來綁定,或將該政策設為工作區預設值。解析是:
金鑰綁定的政策(當它存在且已啟用時),否則是工作區預設值。
所有 egress 規則設定都在主控台中於你的工作階段下執行
(/api/workspace/firewall/*):
| 動作 | 角色 |
|---|---|
| 讀取政策、預設集、discovered tools、自主 Simulate | Member |
| 建立/編輯/刪除 egress 規則與政策 | Developer+ |
乾跑 Test 端點(POST /test) | Developer+ |
| 讀取事件記錄與執行彙整 | Developer+ |
相關
資料外洩
egress 控制處理的威脅。
介面
四個介面,以及 egress 坐落的位置。
裁決
deny、audit 與 allow 在線路上做什麼。
封鎖工具
依名稱而非依目的地拒絕一個擷取工具。
危險的工具呼叫
更廣的風險類別。
防火牆參考
完整的規則 + 匹配參考,包括 egress 清單。
