Tutto qui si collega al tuo workspace ed è configurato dalla console. Il tuo
agent continua a chiamare
https://api.orcarouter.ai/v1/... con la stessa
chiave sk-orca-... — cambia solo la policy nel gateway. Le azioni di
configurazione richiedono i ruoli indicati per ciascun passaggio; le chiamate di
relay usano la chiave con scope. Il firewall vede l’egress solo per destinazioni
instradate attraverso il gateway (il percorso di dispatch MCP o l’hook di
evaluate) — instrada le tue chiamate a tool rivolte alla rete attraverso di esso
e sono governate.1. I tre layer che prevengono l’esfiltrazione di dati AI
Ogni layer coglie l’attacco in un punto diverso del ciclo di vita della richiesta. Impila tutti e tre — sono indipendenti e complementari.Credenziali nel prompt
Un segreto incollato (o tirato) nella richiesta viene colto allo stage di
input dal guardrail Secrets Blocker — prima che qualsiasi modello lo
veda.
Segreti negli args dei tool
Un modello che emette una chiamata a tool che porta una credenziale viene
ripulito da una regola sanitize del firewall, che redige l’argomento
corrispondente.
Destinazione in uscita
Il passo di rete effettivo è limitato da una allow-list di egress — solo
gli host enumerati passano; tutto il resto è negato.
2. Ferma le credenziali al prompt — il guardrail Secrets Blocker
La prima cosa da blindare è la credenziale stessa. Il guardrail Secrets & API-Key Blocker gira allo stage di input e scansiona la richiesta in cerca di pattern di credenziali — chiavi di accesso in stile AWS, chiavi OpenAI, JWT e token simili — prima che la richiesta lasci il gateway. Su un match la richiesta viene bloccata: la credenziale non raggiunge mai un modello e non finisce mai in una chiamata a tool. Nella console, apri Guardrails → New guardrail (il ruolo Developer; le letture e la sandbox di Test sono aperte a qualsiasi membro), chiamaloexfil-shield e applica il preset Secrets & API-Key Blocker dalla libreria
dei template (categoria secrets). Il preset semina tre regole di block regex
allo stage input, una per forma di credenziale — chiavi di accesso AWS, chiavi
in stile OpenAI e token GitHub:
guardrail_blocked, non costa
alcuna quota (un block allo stage di input scatta prima del metering) ed è
marcata skip-retry. Dimostralo nel tab Test — incolla una chiave AWS di
esempio, scegli lo stage input e conferma il verdetto — prima di collegare una
chiave.
3. Sanitizza i segreti fuori dagli argomenti delle chiamate a tool
Un guardrail filtra il prompt; non vede le chiamate a tool che un modello emette. Quando il modello produce untool_call i cui argomenti portano una
credenziale, una regola sanitize del firewall la coglie. Sanitize redige
le sottostringhe corrispondenti dagli argomenti della chiamata a tool e
inoltra la chiamata ripulita — il tool gira, ma con il segreto rimosso.
In Firewall → Policies → New policy (ruolo Developer), chiamala
exfil-firewall e aggiungi una regola sanitize sulla superficie response — i
tool_calls che il modello emette nella sua risposta:
4. Blinda le destinazioni in uscita — la allow-list di egress
La difesa più durevole è il confine di rete stesso: enumera gli host che i tuoi agent sono legittimamente autorizzati a raggiungere e nega tutto il resto. Una regola egress usastage: egress e il campo egress; il verdetto imposta
la polarità — allow lascia passare le destinazioni elencate e un catch-all
deny a priorità più bassa blocca il resto.
Aggiungi queste regole alla stessa policy exfil-firewall:
169.254.169.254) e i range privati RFC-1918 (10.0.0.0/8,
172.16.0.0/12, 192.168.0.0/16). Una chiamata negata restituisce HTTP 400
firewall_blocked.
Nessun preset fornisce regole egress CIDR — scrivi tu stesso le voci di allow e
deny host/CIDR. Il livello di autonomia
tight è il percorso rapido adiacente: nega del tutto i nomi di tool a
forma di fetch (http_fetch, web_search, fetch_url, request), rimuovendo
la capability di rete prima che una destinazione sia mai valutata. Usalo quando
il tuo agent non ha affatto bisogno di quei tool.5. Collega un’unica chiave con scope
Una policy applica solo sulle chiavi che si risolvono su di essa. Dai all’agent la sua chiave, con scope al minimo necessario — mai la tua chiave a livello di account. In API Keys → New key (ruolo Developer):Collega entrambe le policy
Collega entrambe le policy
Scegli
exfil-shield dal dropdown Guardrail (imposta guardrail_id) e
exfil-firewall dal dropdown Firewall policy (imposta
firewall_policy_id). Entrambi i binding vivono sulla chiave nel gateway. Un
collegamento esplicito di guardrail non ricade mai silenziosamente —
disabilitarlo è l’interruttore di disattivazione. Una policy firewall
disabilitata, al contrario, ricade sulla policy di default del workspace.Limita il blast radius
Limita il blast radius
Imposta
credit_limit_usd a un tetto sensato (0 = illimitato) così una
chiave compromessa non può drenare quota, e allow_ips sugli IP di egress
del tuo backend se l’agent chiama da un server fisso. Imposta un
expired_time per le chiavi temporanee (-1 = non scade mai).exfil-shield e ogni
chiamata a tool attraverso exfil-firewall senza che alcun codice sappia che
l’applicazione sta avvenendo.
6. Fai il rollout con shadow mode, poi osserva
Se non conosci ancora ogni host che il tuo agent raggiunge legittimamente, non applicare alla cieca — osserva prima. Vedi modalità di applicazione per il percorso completo observe → shadow → enforce.Shadow delle regole egress
Imposta
shadow_mode: true su exfil-firewall. Ogni verdetto applicativo
viene declassato a audit e loggato come [shadow] would deny con la
destinazione. Nessun traffico viene bloccato mentre la shadow mode è attiva.Osserva i feed
Firewall → Events / Runs (Developer+) mostra ogni chiamata a tool e
destinazione di egress che il tuo agent ha colpito e cosa verrebbe negato.
Guardrails → Matches (qualsiasi Member) mostra ogni segreto che il
guardrail di input ha colto. Metti a punto la lista
allow di egress finché
solo gli host raggiungibili dall’attaccante verrebbero negati.Il feed Matches registra la sottostringa corrispondente solo quando Log
raw content è attivo per il guardrail (disattivato per default — la postura
conservativa sulla privacy). Marca un falso positivo (Admin) per mettere a
punto la policy. Ogni modifica al guardrail scrive una riga di version-history
che puoi fare diff e revert; le modifiche alla policy del firewall sono
registrate nella traccia di audit.
7. Copertura a colpo d’occhio
| Passo di esfiltrazione | Layer che lo ferma |
|---|---|
| La credenziale entra nella richiesta | Guardrail Secrets Blocker (input) |
| Il modello emette una chiamata a tool che porta un segreto | Regola sanitize del firewall (superficie response) |
| Il tool compone un host dell’attaccante | Regola egress allow / deny |
| L’agent raggiunge cloud metadata o RFC-1918 | Regola egress di deny che elenca quei CIDR |
| Tool a forma di fetch offerto al modello | Livello di autonomia tight (deny sul nome del tool) |
8. Dove andare dopo
Riferimento regole del firewall
Il linguaggio di matching completo — liste egress, CIDR, sanitizer e tutti i
verdetti.
Threat di esfiltrazione di dati
L’anatomia dell’attacco contro cui questa ricetta si difende, end to end.
Hardening di un agent MCP
Governa ogni
tools/call che un agent dispatcha attraverso un MCP server.Logging PII-safe
Tieni i dati sensibili fuori dai tuoi request-log e dal feed Matches.
