mcp 表面上
評估的 tool_name_glob 規則來建構它。
每一次跨越 MCP 閘道的 tools/call
在它抵達真正的伺服器之前都會透過你的防火牆政策
執行。所以允許清單不是建議性的——一次對
你未允許的工具的呼叫永不派發。
政策編輯是一個主控台動作。
/api/workspace/firewall/*
路由以你的工作階段/存取權杖驗證,而非一個轉送
sk-orca-… 金鑰。撰寫規則需要 Developer+ 角色;任何
工作區成員(下至 Viewer)皆可讀取政策與
探索到的工具動態。1. 為何要為安全 mcp 工具設一個預設拒絕的允許清單
一個拒絕清單——「封鎖危險的工具」——在一個伺服器加上 一個新工具、重新命名一個,或你連接第二個伺服器的那一刻就失效。危險 工具的集合是無止境的;你打算使用的那一組是小而 已知的。一個允許清單反轉了預設,所以未知被拒絕,而非 准入:- 新工具預設被拒絕。 一個在你連接它之後長出一個
delete_repo工具的伺服器,在你把它加入允許清單之前無法被 呼叫。 - 範圍是每伺服器的。
<server>.<tool>命名空間讓你能允許github.create_issue,同時拒絕github.*下的其他一切。 - 一個咽喉要道。 同一個政策治理隨附伺服器與 閘道後方的每個 BYO 伺服器,所以有一個地方能讀取 允許清單。
2. 兩個部分
一個允許清單是一個default_verdict 加上一組有序的規則。
default_verdict: deny
政策對任何沒有規則匹配的
tools/call 的後備。把它設為
deny,則任何你未明確允許的東西都會被封鎖。(它也
接受 allow 與 audit——audit 是預設。)allow 規則
每個工具(或每個 glob)一條規則。每一條攜帶一個
tool_name_glob 與一個
allow 裁決。一個匹配該 glob 的 tools/call 解析為
allow 並派發;其他一切落到 deny 預設。github.create_issue、
shell.exec。* 匹配任何工具(謹慎使用;一條帶有
* 的 allow 規則會抵消整個允許清單)。一個前導的 <server>. 把該 glob 限定
到一個伺服器。
3. 一個具體範例
你連接了一個github 伺服器,而你只想讓代理讀取與
開啟 issue——永不刪除或管理任何東西。在主控台中,開啟
Firewall → Policies、把政策的預設裁決設為 deny,並
加上兩條 allow 規則:
| 順序 | tool_name_glob | 裁決 |
|---|---|---|
| 1 | github.create_issue | allow |
| 2 | github.list_issues | allow |
deny 的情況下:
github.create_issue→ 匹配規則 1 → allow,派發。github.delete_repo→ 沒有匹配 → 預設 deny。
firewall deny: …)回到模型——與任何失敗工具回傳的形狀相同——所以
代理能適應而非崩潰。(在 inbound 表面上,一個 deny 反而是
一個 HTTP 400,帶有錯誤碼 firewall_blocked。)
4. 用引數收緊
一個在允許清單上的工具名稱仍可能被以壞引數呼叫。 透過為該規則加上一個args_match 子句(JSONPath + 一個
像 eq、contains、regex、in 或 cidr_match 的運算子)來進一步收窄,或
透過在 allow 之上為一個特定引數形狀疊加一條 deny 規則——
例如,允許 github.create_issue 但在目標 repo
不在一個核准清單上時 deny 它。關於完整的運算子
集合,請見防火牆規則參考。
sanitize 會在轉送前隱去一個工具呼叫的引數——它永不
觸及一個工具回傳的內容。關於修剪回傳的內容,那是一個
不同的控制;請見淨化工具輸出。5. 安全地推出
在正式環境中翻轉一個全伺服器的預設拒絕,你冒著弄壞一個 悄悄依賴一個你忘記的工具的代理的風險。兩個設定能降低風險:shadow_mode — 看見拒絕而不強制執行
shadow_mode — 看見拒絕而不強制執行
一個每政策的旗標,會把強制執行裁決降級為
audit。你的
deny 預設與 deny 規則會記錄 [shadow] would deny … 而非
封鎖,所以你可以在允許清單咬人之前對照真實流量
驗證它。在
強制執行模式中閱讀更多。observe mode — 浮現你漏掉的工具
observe mode — 浮現你漏掉的工具
一個工作區設定,會把每一次未涵蓋的呼叫記錄為
探索到的工具動態中的一個缺口。在你
撰寫允許清單之前執行它,以準確了解你的代理呼叫哪些工具,然後
把每一個提升為一條明確的 allow 規則。
shadow_mode,允許清單就強制執行。
6. 驗證它運作
在強制執行後,確認被拒絕的工具確實被拒絕:- Dry-run 一次對照政策的
tools/call(Developer+)以看見 裁決以及哪一條規則——或預設——產生它,而不送出 真實流量。傳入一個工具名稱、表面與範例引數;引擎會 評估它們並回傳裁決軌跡而不記錄一個事件。 - 觀看事件。 每一次被封鎖的呼叫會記錄一個 Developer+ 能在 主控台中讀取的防火牆事件; 稽核事件頁面涵蓋該動態及其 欄位。
相關
連接一個 MCP 伺服器
在你能允許清單它的工具之前先註冊一個伺服器。
防火牆:MCP 伺服器
閘道的執行期行為與每次呼叫的裁決。
防火牆規則參考
完整的規則 DSL——globs、args_match、egress、sanitize。
危險的工具呼叫
一個允許清單被建來遏制的威脅。
Egress 限制
治理一個被允許的工具可以觸及何處。
防護欄 vs. 防火牆
何時該用內容政策 vs. 工具政策。
