Przejdź do głównej treści
Podłączyłeś serwer MCP i teraz chcesz, by brama wycięła wyciekły sekret z wywołania narzędzia, zanim dotrze do prawdziwego serwera — i by powstrzymała to, co to narzędzie zwraca, przed przemyceniem poświadczenia (lub ładunku injection) z powrotem do modelu. To dwa różne zadania, obsługiwane przez dwie różne kontrole, a uczciwa wersja ma znaczenie: jeśli założysz, że jedna gałka pokrywa obie, wdrożysz lukę. Ta strona to skupiony przewodnik po oczyszczaniu wyjścia mcp na OrcaRouter — co werdykt firewalla sanitize faktycznie redaguje, czego nie, i która kontrola zarządza treścią, którą narzędzie zwraca.
Werdykt sanitize redaguje argumenty wywołania narzędzia, nigdy wynik, który narzędzie zwraca. Przepisuje to, co twój agent wysyła do narzędzia. By zarządzać tym, co narzędzie odsyła, używasz guardrail etapu output na odpowiedzi modelu — zobacz §3.

1. Co „sanitize” oznacza na powierzchni mcp

Gdy agent wywołuje narzędzie przez bramę MCP, każde tools/call jest ewaluowane na powierzchni mcp przed dyspozycją. Dopasowująca reguła może nieść jeden z autorowalnych werdyktów firewalla — allow, audit, deny, sanitize, pending_approval lub cap_cost. Werdykt sanitize to ten redagujący:
  • Uruchamia zestaw detektorów kształtu sekretu nad argumentami wywołania (JSON, który model przekazał do narzędzia).
  • Każde dopasowanie jest zastępowane kanonicznym tokenem jak [redacted:openai_key], a przepisane argumenty to to, co zostaje przesłane do serwera.
  • Narzędzie wciąż się uruchamia — sanitize to nieblokujący, przepuszczający werdykt. Agent się nie wysypuje; po prostu nigdy nie wręcza surowego sekretu narzędziu.
Wbudowane detektory pokrywają dobrze znane kształty sekretów (klucze dostępu AWS, klucze API w stylu sk-, tokeny Bearer, US SSN, numery kart poprawne wg Luhna, email), a reguła może dodać niestandardowe regexy, których dopasowania renderują się jako [redacted:custom].
Na powierzchni inbound — ogłoszone tools[], które żądanie deklaruje, zanim jakiekolwiek narzędzie zostanie wywołane — nie ma argumentów z czasu wywołania do zredagowania, więc werdykt sanitize tam zawodzi zamknięty i eskaluje do deny. Sanitize ma sens tylko tam, gdzie jest żywy ładunek argumentów do przepisania: powierzchnie mcp i response.

2. Jedna konkretna reguła

Powiedzmy, że chcesz, by każde wywołanie narzędzia, którego argumenty zawierają klucz w stylu OpenAI, było przesyłane z wyczyszczonym kluczem, zamiast blokowane. Autoruj regułę na powierzchni mcp z werdyktem sanitize, skonfigurowaną do wykrywania tego kształtu sekretu. Zrób to z konsoli (Firewall → polityka → reguły); zapis wymaga Developer+. Reguła, koncepcyjnie:
PoleWartość
Powierzchniamcp
tool_name_glob* (lub zawęź do jednego serwera, np. github.*)
Werdyktsanitize
Presety sanitizedetektory sekretów do włączenia
W czasie wywołania ładunek argumentów jak:
{ "note": "use key sk-AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHH for the upstream" }
jest przesyłany do serwera jako:
{ "note": "use key [redacted:openai_key] for the upstream" }
Wywołanie się udaje; sekret nigdy nie dociera do serwera. Zdarzenie firewalla rejestruje werdykt sanitize, powierzchnię i dopasowaną regułę.
Sięgnij po sanitize, gdy narzędzie legalnie potrzebuje większości argumentu, ale sekret okazjonalnie jedzie na gapę w tekście swobodnym. Gdy całe wywołanie jest niebezpieczne, użyj deny (lub pending_approval) zamiast tego — zobacz Lista dozwolonych narzędzi MCP.

3. Wyniki narzędzi są niezaufane — zarządzaj nimi na odpowiedzi modelu

Oto część, którą większość konfiguracji „oczyść wyjście” robi źle. Werdykt sanitize dotyka tylko argumentów. Wynik narzędzia — tekst lub JSON, który serwer MCP odsyła — nigdy nie jest przepisywany przez werdykt firewalla. OrcaRouter traktuje treść wyniku narzędzia jako niezaufane wejście do modelu. Skompromitowany lub zatruty serwer MCP może zwrócić sekret, rekord PII lub ładunek prompt-injection przebrany za dane. Kontrolą dla tej treści jest guardrail na etapie output — odpowiedzi modelu, ewaluowanej po tym, jak model wcielił wynik narzędzia.
Dołącz guardrail z presetem Secrets & API-Key Blocker (kategoria secrets). Blokuje poświadczenia w stylu AWS / OpenAI / GitHub; sparuj go z Private Keys & Cloud Tokens dla kluczy PEM, tokenów Slack/Stripe, kluczy Google i JWT. Blok na etapie output zwraca guardrail_blocked (HTTP 400) i zwraca limit żądania.
Preset PII Shield maskuje typowane encje — [EMAIL], [SSN], [CREDIT_CARD], … — renderując dopasowane wartości jako tagi. Maskowanie na etapie input jest żywe przy każdym żądaniu (strumieniowym lub nie): maskuje żądanie, zanim model je zobaczy. Maskowanie na etapie output przepisuje odpowiedź modelu tylko na niestrumieniowych odpowiedziach; przepisywanie w paśmie odpowiedzi strumieniowej jest na roadmapie, więc reguła mask nie redaguje jeszcze strumieniowanej odpowiedzi.
Zatruty wynik może nieść tekst w stylu „zignoruj poprzednie instrukcje”. Preset bezpieczeństwa Prompt-Injection Basics (słowo kluczowe/regex) plus reguła llm_judge, która punktuje intencję injection, to tutaj kontrole. Zobacz Zatruwanie narzędzi MCP i Prompt injection.
Egzekwowanie output i strumieniowanie. Blok na etapie output jest egzekwowany zarówno na strumieniowych, jak i niestrumieniowych odpowiedziach — na strumieniu blok tnie strumień, gdy dopasowuje, i emituje generyczne powiadomienie o bloku. Mask na etapie output stosuje się tylko do niestrumieniowych odpowiedzi; przepisywanie w paśmie odpowiedzi strumieniowej jest na roadmapie, więc reguła mask nie redaguje jeszcze strumieniowanej odpowiedzi.

4. Gdzie mieszka każda kontrola

Zwięzła mapa dwóch powierzchni, tak byś okablował właściwą gałkę do właściwego ryzyka:
Chcesz zarządzać…KontrolaGdzie
Sekrety w argumentach wywołania narzędziaWerdykt firewalla sanitize (powierzchnia mcp)Reguły firewalla
Sekrety / PII / injection w wyniku narzędziaGuardrail na etapie outputGuardrails
Nie próbuj sprawić, by sanitize pokrywał wyniki narzędzi — nie może ich zobaczyć. I nie zakładaj, że guardrail etapu input złapie to, co narzędzie zwraca w środku rozmowy; treść wyniku narzędzia jest zarządzana na odpowiedzi modelu, która jest etapem output.

5. Dołączanie i obserwowanie

Obie kontrole mają zakres przestrzeni roboczej, są nazwane i uporządkowane, i obie dołączają się na te same dwa sposoby:
  • Per klucz — ustaw firewall_policy_id (dla reguły sanitize) i guardrail_id (dla polityki output) na kluczu, którego używa agent.
  • Domyślne przestrzeni roboczej — oznacz politykę / guardrail jako domyślne przestrzeni roboczej, tak by każdy klucz je dziedziczył.
Skonfiguruj to wszystko z konsoli swoim tokenem sesji/dostępu (trasy zarządzania używają UserAuth, nie klucza relay). Zapisy firewalla wymagają Developer+; zapisy guardrail wymagają Developer+. Gdy żywe, dopasowania sanitize pojawiają się jako zdarzenia firewalla (werdykt, powierzchnia, dopasowana reguła), a dopasowania guardrail pojawiają się w strumieniu dopasowań guardrail. Te dwa mają różne bramki odczytu: strumień zdarzeń firewalla wymaga Developer+, podczas gdy strumień dopasowań guardrail jest odczytywalny przez każdego członka przestrzeni roboczej. Domyślnie dopasowanie rejestruje swój typ, akcję i etap, ale nie surową dopasowaną treść; włącz Loguj surową treść tylko wtedy, gdy potrzebujesz podciągu do triage.

6. Dokąd dalej

Lista dozwolonych narzędzi MCP

Domyślnie odmawiaj serwerowi i zezwól tylko na narzędzia, które zrecenzowałeś.

Reguły firewalla

Pełny DSL reguł — werdykty, globy, args-match, konfiguracja sanitize.

Guardrails

Polityki treści, presety, encje PII i egzekwowanie etapu output.

Zatruwanie narzędzi MCP

Zagrożenie, które w pierwszej kolejności czyni wyniki narzędzi niezaufanymi.
Nowy w podziale między tymi dwiema warstwami? Przeczytaj Guardrails vs. firewall, potem Eksfiltrację danych dla ścieżki wycieku, którą sanitize i guardrails output zamykają razem.