Vai al contenuto principale
OrcaRouter applica quattro layer a ogni richiesta in un ordine fisso. Ogni layer è indipendente, con scope a livello di workspace, e si collega a una chiave API senza modifiche al codice. Questa pagina percorre una richiesta attraverso tutti e quattro i layer in sequenza, poi copre l’ordine di risoluzione e il comportamento fail-open/fail-closed. Per un’introduzione più ampia vedi Proteggere gli agent AI con OrcaRouter.

1. Layer 1 — Chiave API con scope

La chiave è il primo gate. Prima che qualsiasi contenuto venga ispezionato o che qualsiasi modello venga chiamato, il gateway risolve la chiave chiamante e decide se la richiesta è anche solo consentita. Cosa porta la chiave:
  • model_limits — il set di modelli che la chiave può chiamare. Una richiesta per un modello fuori dalla lista viene rifiutata immediatamente.
  • allow_ips — allowlist di IP opzionale. Una richiesta da una sorgente non elencata viene rifiutata.
  • credit_limit_usd — un tetto di spesa fisso. Una richiesta che spingerebbe la chiave oltre il tetto viene rifiutata.
  • expiry — una data di scadenza fissa. Le chiavi scadute vengono rifiutate.
  • environment — un tag (production, staging, dev, …) per organizzare e identificare la chiave per ambiente di deployment.
  • guardrail_id — la policy del guardrail che si collega a questa chiave (vedi Layer 2 e Layer 4).
  • firewall_policy_id — la policy del firewall che si collega a questa chiave (vedi Layer 3).
  • is_firewall_gateway — segnala la chiave come token con scope di firewall-gateway; richiesto per le rotte evaluate e gateway MCP.
Una richiesta che fallisce la validazione della chiave non raggiunge mai un modello — e non viene mai misurata. Dove configurare: Console → API Keys, oppure la token API. Richiede Developer+ per creare o modificare; is_firewall_gateway e le letture in chiaro della chiave richiedono Admin. Per il modello completo della chiave vedi Scope, chiavi, policy e workspace.

2. Layer 2 — Guardrails in input

Una volta validata la chiave, il gateway esegue le regole di stage input del guardrail collegato rispetto al testo della richiesta — prima di qualsiasi chiamata al modello upstream. Cosa vede: I messaggi del chiamante come inviati. (Un prompt iniettato da un registry di prompt viene aggiunto successivamente, nella fase di routing; le regole di input non lo vedono.) Tipi di regola disponibili: keyword, regex, pii, max_chars, external, llm_judge, grounding. Azioni che una regola può produrre:
AzioneCosa succede
blockLa richiesta viene rifiutata — HTTP 400 guardrail_blocked. Nessuna quota addebitata. Marcata skip-retry.
maskIl match viene redatto (es. jane@acme.com[EMAIL]). Il testo sanitizzato continua verso il modello.
flagIl match viene registrato; il traffico è invariato.
Un block in questo stage significa che il modello non viene mai chiamato. Costo: zero. Il chiamante vede un errore strutturato che nomina il guardrail e la regola che ha scattato. Dove configurare: Console → Guardrails, oppure la guardrail API. Richiede Developer+ per creare o modificare. Vedi Guardrails per il riferimento completo delle regole.

3. Layer 3 — Il modello gira

Se la chiave è valida e i guardrails in input passano, il gateway inoltra la richiesta al modello upstream. Questo è l’unico layer senza applicazione configurabile — è semplicemente il modello che fa il suo lavoro. Il firewall opera sulle azioni che il modello produce (Layer 3 → Layer 4 sotto), non sul modello stesso. Il routing, i fallback e il load balancing avvengono qui in modo trasparente.

4. Layer 4 — Agent Firewall (chiamate a tool ed egress)

Dopo che il modello risponde — o inline, man mano che le chiamate a tool vengono emesse — l’Agent Firewall giudica ogni azione che il modello richiede. Quattro superfici di applicazione:
SuperficieCosa vede il firewall
inboundLe definizioni dei tool che l’agent pubblicizza al modello. Blocca un tool pericoloso prima che il modello possa sceglierlo.
responseI tool_calls che il modello emette nella sua risposta.
mcpUn tools/call dispatchato attraverso il gateway MCP del Firewall o tramite l’hook di evaluate.
egressUna destinazione di rete in uscita (host / IP / CIDR) segnalata da un tool — la superficie di SSRF e esfiltrazione di dati.
Verdetti che una regola (o il default) può produrre:
VerdettoCosa fa
allowLa chiamata procede. Loggata.
auditLa chiamata procede; registrata per revisione. Il default_verdict predefinito.
denyLa chiamata è bloccata — HTTP 400 firewall_blocked sulla superficie inbound; un errore di tool su mcp.
sanitizeLe sottostringhe corrispondenti vengono redatte dagli argomenti del tool; la chiamata ripulita procede. Su inbound (nessun argomento ancora), escala a deny.
pending_approvalLa chiamata è trattenuta; un revisore fuori banda approva o rifiuta; l’agent ri-invia con un token di approvazione monouso.
cap_costNega una volta che la spesa accumulata dell’esecuzione dell’agent supera un tetto in centesimi per regola.
Un deny sulla superficie inbound non costa token del modello — il block scatta prima della chiamata upstream. Un hold pending_approval restituisce HTTP 400 firewall_approval_pending con un id di approvazione su cui il client fa polling. Dove configurare: Console → Firewall, oppure la firewall API. Richiede Developer+ per creare o modificare policy e regole. Vedi Firewall e Regole del firewall per il linguaggio completo delle regole.

5. Layer 5 — Guardrails in output

Dopo che il modello risponde (e dopo che qualsiasi ciclo di chiamate a tool si completa), il gateway esegue le regole di stage output del guardrail collegato rispetto al testo della risposta prima che raggiunga il chiamante. Gli stessi tipi di regola e azioni si applicano come nel Layer 2. Un block di output restituisce HTTP 400 guardrail_blocked e rimborsa la quota pre-consumata — il chiamante non paga nulla.
Streaming e masking dell’output. Un’azione block viene applicata sia alle risposte in streaming che a quelle non in streaming — su uno stream, lo scanner taglia a metà volo ed emette un messaggio sostitutivo. Un’azione mask sull’output si applica attualmente solo alle risposte non in streaming; su una risposta in streaming il chunk originale passa senza essere mascherato. Verifica la tua combinazione stage/stream nella sandbox del guardrail prima di farci affidamento.

6. Layer 6 — Audit

Ogni match, verdetto e decisione di approvazione viene scritto nella traccia di audit, correlato all’esecuzione dell’agent e alla sessione che lo ha causato. Non è un passaggio di applicazione separato — gira in parallelo con i Layer 2–5 — ma è il layer che rende gli altri responsabili. Cosa viene loggato:
  • Match dei guardrail: tipo di regola, azione, stage, stringa di dettaglio, e (se Log raw content è abilitato) la sottostringa corrispondente.
  • Eventi del firewall: superficie, nome del tool, verdetto, regola corrispondente, codice di motivazione, fattori di rischio, e l’esecuzione/sessione a cui appartiene la chiamata.
  • Decisioni di approvazione: chi ha approvato o rifiutato, quando, e se la regola sottostante è cambiata tra hold e decisione.
  • Modifiche alle policy: ogni create, update, delete e modifica del livello di autonomia scrive una riga di audit versionata.
Dove consultare: Console → Guardrails → Matches; Console → Firewall → Events, Runs & Sessions, Audit. Il feed Matches del guardrail è aperto a qualsiasi Member del workspace; i feed Events e Runs & Sessions del firewall richiedono Developer+.

7. Tabella riassuntiva

LayerCosa controllaCosa vedeRisultato su un hitDove configurare
1. Chiave con scopeIdentità, accesso al modello, spesa, IP, scadenzaIl token di autenticazione della richiestaHTTP 4xx prima che giri qualcosa; nessuna misurazioneConsole → API Keys (Developer+)
2. Guardrails in inputContenuto del testo della richiestaI messaggi del chiamanteBlock (HTTP 400 guardrail_blocked, nessun addebito), mask o flagConsole → Guardrails (Developer+)
3. ModelloConfig routing / canale
4. Agent FirewallChiamate a tool, dispatch MCP, egressNome del tool, argomenti, destinazioneallow / audit / deny / sanitize / pending_approval / cap_costConsole → Firewall (Developer+)
5. Guardrails in outputContenuto del testo della rispostaLa risposta del modelloBlock (HTTP 400, quota rimborsata), mask o flagConsole → Guardrails (Developer+)
6. AuditAttribuzione e tracciaTutto quanto sopraVoce di log immutabileConsole → Matches (Member) / Events & Runs (Developer+)

8. Ordine di risoluzione delle policy

Per qualsiasi richiesta, il guardrail attivo e la policy del firewall vengono risolti indipendentemente:
  1. Collegamento della chiave — se la chiave porta un guardrail_id o firewall_policy_id esplicito, quella policy si collega (quando esiste ed è abilitata).
  2. Default del workspace — se la chiave non ha collegamento, si applica il guardrail o la policy is_default abilitata del workspace.
  3. Nessuno dei due — nessuna applicazione. La richiesta è byte-identica a un workspace che non ha mai abilitato la feature.
I due piani differiscono quando una policy collegata è disabilitata: un collegamento guardrail disabilitato disattiva i guardrail per quella chiave (nessun fallback), mentre un collegamento firewall disabilitato ricade sulla policy del firewall di default del workspace. Al massimo un guardrail e una policy del firewall per workspace possono essere il default. Promuovere un nuovo default declassa il vecchio nella stessa transazione.

9. Fail-open e fail-closed

Due comportamenti — applicati a casi diversi.Fail-open (errori transitori): Se la risoluzione della policy incontra un errore transitorio — un singhiozzo del database, un problema di rete verso un vendor esterno — il gateway degrada a nessuna applicazione anziché interrompere il traffico. La sicurezza degrada; la disponibilità è preservata. Configura fail_open: false sulle regole external o llm_judge quando un controllo mancato è inaccettabile per la tua policy.Fail-closed (casi ambigui): Dove non applicare vanificherebbe la regola, il motore fa fail closed: un report egress con una destinazione non risolvibile viene negato; un approval store irraggiungibile trattiene la chiamata invece di lasciarla passare; una skill la cui ownership non può essere risolta viene bloccata. La disponibilità è preservata sul percorso felice; la sicurezza non viene saltata silenziosamente nei casi limite che contano.
Vedi Modalità di applicazione per l’albero di decisione completo, e Come OrcaRouter ispeziona le richieste per la meccanica del percorso del relay.

10. Approfondimenti

Guardrails

Riferimento completo delle regole — tipi, azioni, entità PII, LLM judge, grounding e la sandbox di test.

Firewall

Modello di policy, verdetti, superfici, shadow mode, approvazione HITL e rilevamento delle anomalie.

Regole del firewall

Il linguaggio di matching delle regole — glob dei tool, clausole sugli argomenti, elenchi egress e sanitizer.

Guardrails vs. Firewall

Quale layer intercetta quale minaccia — e quando hai bisogno di entrambi.

Scope, chiavi e policy

Il modello completo della chiave: cosa porta una chiave e come si risolvono le policy.

Modalità di applicazione

Fail-open vs. fail-closed — l’albero di decisione completo.
Ogni chiamata attraverso OrcaRouter passa tutti e quattro i layer di applicazione nell’ordine — validazione della chiave, filtraggio in input, giudizio del firewall, filtraggio in output — con una traccia di audit completa scritta su tutti.