Przejdź do głównej treści
Agent, który może sięgnąć do sieci, może zostać zamieniony w rurę danych. Wstrzyknięte instrukcje każą mu zebrać sekrety, wiersze lub PII narzędziami, które już posiada, i wysłać je metodą POST do hosta atakującego — albo sondować wewnętrzne usługi (SSRF). Agent nigdy „nie decyduje” o eksfiltracji; wykonuje to, co wygląda dla niego jak uprawniona instrukcja. Ten przepis łączy trzy kontrole, które domykają pętlę od początku do końca — lista dozwolonych egress, która blokuje, dokąd mogą iść wywołania wychodzące, guardrail Secrets Blocker, który zatrzymuje poświadczenia, zanim kiedykolwiek dotrą do modelu, oraz sanityzator argumentów, który usuwa sekrety z wywołań narzędzi, które model jednak emituje. Wszystko to żyje w bramie, więc konfigurujesz to raz w konsoli z zerową zmianą kodu agenta. Dla pełnej anatomii ataku przeczytaj Eksfiltracja danych przez sieć; ta strona to kroki budowy.
Wszystko tutaj wiąże się z twoją przestrzenią roboczą i jest konfigurowane z konsoli. Twój agent dalej woła https://api.orcarouter.ai/v1/... tym samym kluczem sk-orca-... — zmienia się tylko polityka w bramie. Akcje konfiguracji wymagają ról wskazanych przy każdym kroku; wywołania relay używają klucza o ograniczonym zakresie. Firewall widzi egress tylko dla celów kierowanych przez bramę (ścieżka dyspozycji MCP lub hook evaluate) — pokieruj swoje wywołania narzędzi sieciowych przez nią, a będą zarządzane.

1. Trzy warstwy, które zapobiegają eksfiltracji danych AI

Każda warstwa wychwytuje atak w innym punkcie cyklu życia żądania. Złóż wszystkie trzy — są niezależne i komplementarne.

Poświadczenia w promptcie

Sekret wklejony do (lub wciągnięty do) żądania jest wychwytywany na etapie input przez guardrail Secrets Blocker — zanim jakikolwiek model go zobaczy.

Sekrety w argumentach narzędzi

Model, który emituje wywołanie narzędzia niosące poświadczenie, jest czyszczony regułą firewalla sanitize, która redaguje dopasowany argument.

Cel wychodzący

Sam krok sieciowy jest ograniczony listą dozwolonych egress — przechodzą tylko wyliczone hosty; wszystko inne jest odmówione.
Ten przepis używa obu płaszczyzn: Guardrails dla tekstu w żądaniu, Firewall dla akcji i sieci. Zobacz guardrails vs firewall, gdzie leży linia.

2. Zatrzymaj poświadczenia na promptcie — guardrail Secrets Blocker

Pierwszą rzeczą do zablokowania jest samo poświadczenie. Guardrail Secrets & API-Key Blocker działa na etapie input i skanuje żądanie pod kątem wzorców poświadczeń — klucze dostępu w stylu AWS, klucze OpenAI, JWT-y i podobne tokeny — zanim żądanie opuści bramę. Na dopasowaniu żądanie jest blokowane: poświadczenie nigdy nie dociera do modelu i nigdy nie ląduje w wywołaniu narzędzia. W konsoli otwórz Guardrails → New guardrail (rola Developer; odczyty i piaskownica Test są otwarte dla każdego członka), nazwij go exfil-shield i zastosuj preset Secrets & API-Key Blocker z biblioteki szablonów (kategoria secrets). Preset sieje trzy reguły block regex na etapie input, po jednej na każdy kształt poświadczenia — klucze dostępu AWS, klucze w stylu OpenAI i tokeny GitHub:
[
  { "type": "regex", "stage": "input", "action": "block", "pattern": "AKIA[0-9A-Z]{16}" },
  { "type": "regex", "stage": "input", "action": "block", "pattern": "sk-[A-Za-z0-9]{20,}" },
  { "type": "regex", "stage": "input", "action": "block", "pattern": "ghp_[A-Za-z0-9]{36}" }
]
Aby rozszerzyć pokrycie, dodaj regułę pii na wbudowanych encjach — zbiór detektora pokrywa email, phone, credit_card, ssn, ip, iban, mac_address, api_key_openai, aws_access_key, jwt oraz bitcoin_address. Wybierz mask (zredaguj do typowanego tagu jak [EMAIL]) lub block per encja przez entity_actions. Maskowanie na etapie input jest dostępne; przepisuje żądanie, zanim model je zobaczy.
Zablokowane żądanie zwraca HTTP 400 guardrail_blocked, kosztuje zero kwoty (block na etapie input odpala przed metrowaniem) i jest oznaczone jako skip-retry. Udowodnij to w zakładce Test — wklej przykładowy klucz AWS, wybierz etap input i potwierdź werdykt — zanim dołączysz klucz.

3. Sanityzuj sekrety z argumentów wywołań narzędzi

Guardrail prześwietla prompt; nie widzi wywołań narzędzi, które model emituje. Gdy model produkuje tool_call, którego argumenty niosą poświadczenie, reguła firewalla sanitize wychwytuje je. Sanitize redaguje dopasowane podłańcuchy z argumentów wywołania narzędzia i przesyła oczyszczone wywołanie — narzędzie się uruchamia, ale z usuniętym sekretem. W Firewall → Policies → New policy (rola Developer) nazwij ją exfil-firewall i dodaj regułę sanitize na powierzchni responsetool_calls, które model emituje w swojej odpowiedzi:
{
  "priority": 10,
  "label": "Redact secrets from tool args",
  "stage": "response",
  "tool_name_glob": "*",
  "verdict": "sanitize",
  "sanitize": {
    "presets": ["aws_access_key", "openai_key"],
    "custom": ["sk-[A-Za-z0-9]{20,}"]
  }
}
Sanitize redaguje tylko argumenty wywołania narzędzia — nigdy treść, którą narzędzie zwraca. To obrona na kształcie wywołania wychodzącego, nie na przychodzących wynikach narzędzi. Na powierzchni inbound (gdzie nie ma jeszcze argumentów czasu wywołania) werdykt sanitize eskaluje do deny. Zobacz pełny język dopasowania w Regułach firewalla.

4. Zablokuj cele wychodzące — lista dozwolonych egress

Najtrwalsza obrona to sama granica sieci: wylicz hosty, do których twoje agenty mają uprawniony dostęp, i odmów wszystkiego innego. Reguła egress używa stage: egress i pola egress; werdykt ustawia polaryzację — allow przepuszcza wymienione cele, a niżej priorytetowy deny typu catch-all blokuje resztę. Dodaj te reguły do tej samej polityki exfil-firewall:
[
  {
    "priority": 10,
    "label": "Allow known API endpoints",
    "stage": "egress",
    "tool_name_glob": "*",
    "verdict": "allow",
    "egress": {
      "allow": ["api.openai.com", "api.anthropic.com", "api.orcarouter.ai"]
    }
  },
  {
    "priority": 20,
    "label": "Deny all other outbound destinations",
    "stage": "egress",
    "tool_name_glob": "*",
    "verdict": "deny"
  }
]
Wpisy dopasowują się jako CIDR, literał IP lub nazwa hosta niewrażliwa na wielkość liter. Aby zatrzymać SSRF ku wewnętrznym usługom bez wyraźnej listy dozwolonych, napisz własną regułę deny egress wymieniającą endpoint cloud-metadata (169.254.169.254) oraz prywatne zakresy RFC-1918 (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16). Odmówione wywołanie zwraca HTTP 400 firewall_blocked.
Żaden preset nie dostarcza reguł egress CIDR — wpisy allow i deny host/CIDR piszesz sam. Poziom autonomii tight (poziom autonomii) to sąsiednia szybka droga: odmawia nazw narzędzi w kształcie fetch (http_fetch, web_search, fetch_url, request) wprost, usuwając zdolność sieciową, zanim cel zostanie kiedykolwiek oceniony. Użyj go, gdy twój agent w ogóle nie potrzebuje tych narzędzi.

5. Dołącz jeden klucz o ograniczonym zakresie

Polityka egzekwuje tylko na kluczach, które rozwiązują się do niej. Daj agentowi jego własny klucz, ograniczony do minimum, którego potrzebuje — nigdy klucz obejmujący całe konto. W API Keys → New key (rola Developer):
Wybierz exfil-shield z rozwijanej listy Guardrail (ustawia guardrail_id) i exfil-firewall z rozwijanej listy Firewall policy (ustawia firewall_policy_id). Oba powiązania żyją na kluczu w bramie. Wyraźne dołączenie guardrailu nigdy po cichu nie wraca do domyślnej — wyłączenie go jest wyłącznikiem. Wyłączona polityka firewalla, przeciwnie, wraca do domyślnej polityki przestrzeni roboczej.
Ustaw credit_limit_usd na rozsądny pułap (0 = bez limitu), aby skompromitowany klucz nie mógł osuszyć kwoty, oraz allow_ips na IP egress twojego backendu, jeśli agent woła ze stałego serwera. Ustaw expired_time dla tymczasowych kluczy (-1 = nigdy nie wygasa).
Klucz jest maskowany na wyświetleniu po utworzeniu — skopiuj go raz. Twój agent teraz uruchamia każde żądanie przez exfil-shield, a każde wywołanie narzędzia przez exfil-firewall, a żaden kod nie jest świadomy, że dzieje się egzekwowanie.

6. Wdróż z trybem cienia, potem obserwuj

Jeśli jeszcze nie znasz każdego hosta, do którego twój agent uprawnienie sięga, nie egzekwuj na ślepo — obserwuj najpierw. Zobacz tryby egzekwowania dla pełnej ścieżki obserwuj → cień → egzekwuj.
1

Zacieniuj reguły egress

Ustaw shadow_mode: true na exfil-firewall. Każdy egzekwujący werdykt jest degradowany do audit i logowany jako [shadow] would deny z celem. Żaden ruch nie jest blokowany, gdy tryb cienia jest włączony.
2

Obserwuj strumienie

Firewall → Events / Runs (Developer+) pokazuje każde wywołanie narzędzia i cel egress, który trafił twój agent, oraz co by zostało odmówione. Guardrails → Matches (każdy Member) pokazuje każdy sekret, który wychwycił guardrail input. Stroj listę allow egress, aż tylko hosty osiągalne dla atakującego byłyby odmawiane.
3

Egzekwuj

Wyłącz shadow_mode. Już następne żądanie jest zarządzane — poświadczenia blokowane na promptcie, sekrety usuwane z argumentów narzędzi, wywołania wychodzące ograniczone do twojej listy dozwolonych. Bez zmiany aplikacji.
Strumień Matches rejestruje dopasowany podłańcuch tylko wtedy, gdy Log raw content jest włączony dla guardrailu (domyślnie wyłączony — postawa konserwatywna względem prywatności). Oznacz fałszywie dodatni (Admin), aby stroić politykę. Każda zmiana guardrailu zapisuje wiersz historii wersji, który możesz zdiffować i przywrócić; zmiany polityki firewalla są rejestrowane w śladzie audytu.

7. Pokrycie w skrócie

Krok eksfiltracjiWarstwa, która go zatrzymuje
Poświadczenie wchodzi do żądaniaGuardrail Secrets Blocker (input)
Model emituje wywołanie narzędzia niosące sekretReguła firewalla sanitize (powierzchnia response)
Narzędzie wybiera numer hosta atakującegoReguła egress allow / deny
Agent sięga do cloud metadata lub RFC-1918Reguła deny egress wymieniająca te CIDR
Narzędzie w kształcie fetch oferowane modelowiPoziom autonomii tight (odmowa nazwy narzędzia)

8. Gdzie iść dalej

Referencja reguł firewalla

Pełny język dopasowania — listy egress, CIDR, sanityzatory i wszystkie werdykty.

Zagrożenie eksfiltracją danych

Anatomia ataku, przed którym broni ten przepis, od początku do końca.

Utwardź agenta MCP

Zarządzaj każdym tools/call, które agent dyspozytuje przez serwer MCP.

Logowanie bezpieczne dla PII

Trzymaj wrażliwe dane poza logami żądań i strumieniem Matches.