sanitize 裁決實際隱去什麼、它不隱去什麼,
以及哪個控制治理一個工具回傳的內容。
1. 「sanitize」在 mcp 表面上意味著什麼
當一個代理透過 MCP 閘道呼叫一個工具時, 每一次tools/call 在派發前都會在 mcp 表面上被評估。一條
匹配的規則可以攜帶可撰寫的防火牆裁決
之一——allow、audit、deny、sanitize、pending_approval
或 cap_cost。sanitize 裁決是那個會隱去的:
- 它在該呼叫的引數(模型傳入工具的 JSON)上執行一組 密鑰形狀偵測器。
- 每一個匹配都被替換為一個像
[redacted:openai_key]的正規 權杖,而改寫後的引數就是被轉送到伺服器的內容。 - 該工具仍然執行——
sanitize是一個非封鎖、放行的裁決。 代理不崩潰;它只是永不把原始密鑰交給該工具。
sk- 形式的 API key、Bearer token、US SSN、Luhn 有效的卡號、
email),而一條規則可以加上自訂的 regex,其匹配會呈現為
[redacted:custom]。
在 inbound 表面上——一個請求宣告的所公告
tools[],
在任何工具被呼叫之前——沒有呼叫時的引數可隱去,所以
那裡的一個 sanitize 裁決會 fail closed 並升級為 deny。Sanitize
只在有一個即時引數酬載可改寫的地方才有意義:
mcp 與 response 表面。2. 一條具體規則
假設你想讓任何引數含有一個 OpenAI 形式金鑰的工具呼叫被 轉送時把該金鑰清除掉,而非被封鎖。在 mcp 表面上撰寫一條 帶有sanitize 裁決、設定為偵測那個密鑰形狀的規則。從
主控台做這件事(Firewall → policy → rules);寫入需要
Developer+。
該規則,概念上:
| 欄位 | 值 |
|---|---|
| 表面 | mcp |
tool_name_glob | *(或限定到一個伺服器,例如 github.*) |
| 裁決 | sanitize |
| Sanitize presets | 要啟用的密鑰偵測器 |
sanitize 裁決、表面與匹配的規則。
3. 工具結果不可信——在模型回覆上治理它們
這是大多數「淨化輸出」設定弄錯的部分。sanitize
裁決只觸及引數。一個工具的結果——一個 MCP 伺服器
交回的文字或 JSON——永不會被一個防火牆裁決改寫。
OrcaRouter 把工具結果內容視為對模型的不可信輸入。
一個被入侵或下毒的 MCP 伺服器可以回傳一個密鑰、一筆 PII 記錄,或一個
偽裝成資料的提示注入酬載。針對那個內容的控制是
一個在 output 階段——模型的回覆,在模型納入工具結果之後
評估——上的防護欄。
抓住在回覆中浮現的密鑰
抓住在回覆中浮現的密鑰
附加一個帶有 Secrets & API-Key Blocker 預設(類別
secrets)的防護欄。它會封鎖 AWS / OpenAI / GitHub 形式的憑證;
把它與 Private Keys & Cloud Tokens 搭配以涵蓋 PEM 金鑰、Slack/Stripe
token、Google 金鑰與 JWT。一個 output 階段的封鎖會回傳
guardrail_blocked(HTTP 400)並退還該請求的配額。隱去回覆中的 PII
隱去回覆中的 PII
PII Shield 預設會遮罩已分類的實體——
[EMAIL]、[SSN]、
[CREDIT_CARD]、…——把匹配的值呈現為標籤。Input 階段的
遮罩在每一個請求上都即時運作(無論串流與否):它會在模型看見之前
遮罩請求。Output 階段的遮罩只在非串流回應上改寫
模型回覆;串流回覆的帶內改寫在規劃中,所以一條
遮罩規則尚未隱去一個串流回覆。Output 強制執行與串流。 Output 階段的封鎖在
串流與非串流回覆上都強制執行——在一個串流上,一個封鎖在它
匹配時切斷串流並發出一個通用的封鎖通知。Output 階段的
遮罩只套用於非串流回覆;串流回覆的帶內改寫
在規劃中,所以一條遮罩規則尚未隱去一個串流回覆。
4. 每個控制位於何處
兩個表面的精簡地圖,讓你把正確的旋鈕接到正確的 風險:5. 附加與觀察
兩個控制都是工作區限定、具名且有序的,且兩者都以 同樣的兩種方式附加:- 每金鑰——在代理使用的金鑰上設定
firewall_policy_id(給 sanitize 規則)與guardrail_id(給 output 政策)。 - 工作區預設——把一個政策/防護欄標記為工作區預設, 讓每個金鑰繼承它。
6. 下一步去哪裡
允許清單 MCP 工具
預設拒絕一個伺服器,只允許你審查過的工具。
防火牆規則
完整的規則 DSL——裁決、globs、args-match、sanitize 設定。
防護欄
內容政策、預設、PII 實體與 output 階段強制執行。
MCP 工具下毒
一開始就使工具結果不可信的威脅。
