1. Lo schema delle regole del firewall in breve
Ogni regola porta gli stessi campi. Soloverdict è sempre obbligatorio — tutto il
resto restringe ciò a cui la regola corrisponde o configura il verdetto scelto, e
un matcher assente è vacuamente vero.
| Campo | Scopo |
|---|---|
priority | Ordine di valutazione — il più basso gira per primo. |
verdict | L’azione quando la regola corrisponde (obbligatorio). |
stage | La superficie a cui dare scope; vuoto = tutte. |
tool_name_glob | Glob sul nome del tool. |
args_match_json | Predicato sugli argomenti JSONPath, come stringa codificata in JSON. |
egress_json | Elenco allow-deny per host / CIDR (regole egress), come stringa codificata in JSON. |
sanitize_json | Config di redazione (quando verdict = sanitize), come stringa codificata in JSON. |
cap_cost_cents | Tetto di costo dell’esecuzione in centesimi USD (quando verdict = cap_cost). |
sequence_json | Predicato di catena multi-step ordinata (regole di sequenza), come stringa codificata in JSON. |
label / notes | Nome umano e motivazione — mostrati negli eventi, ignorati dal motore. |
default_verdict
della policy.
2. priority — ordine di valutazione
Un ordinale intero. Il più basso gira per primo; due regole con la stessa
priorità risolvono la parità per id della regola (ordine di inserimento). Metti i
tuoi carve-out specifici sopra i tuoi catch-all ampi — un allow per un tool fidato
a priorità 10 batte un deny * a priorità 100.
3. verdict — l’azione
L’unico campo obbligatorio. Quando una regola corrisponde, il suo verdetto decide
cosa succede alla chiamata:
| Verdetto | Effetto |
|---|---|
allow | Lascia passare la chiamata, loggata. |
audit | Consenti e registra per revisione — il default_verdict abituale. |
deny | Blocca la chiamata. |
sanitize | Redige le sottostringhe corrispondenti dagli argomenti del tool, poi inoltra. |
pending_approval | Mette in attesa la chiamata per un revisore umano. |
cap_cost | Nega una volta che la spesa accumulata di un’esecuzione dell’agent supera un tetto. |
deny restituisce HTTP 400 firewall_blocked sulla superficie inbound, o
un errore di tool sulla superficie mcp. Una chiamata in attesa restituisce HTTP
400 firewall_approval_pending con un id su cui l’agent fa polling. In
shadow mode ogni verdetto applicativo viene
declassato a audit e la motivazione è prefissata [shadow] would …. Vedi
Verdetti per la tabella completa e le forme di
block.
4. stage — la superficie di applicazione
Fissa la regola a una delle superfici del firewall. Lascialo vuoto e la regola si
applica a tutte le superfici:
inbound — definizioni di tool pubblicizzate
inbound — definizioni di tool pubblicizzate
I tool che un agent pubblicizza al modello sulla richiesta. Blocca un tool
pericoloso prima che il modello possa anche solo sceglierlo.
response — tool_calls emessi dal modello
response — tool_calls emessi dal modello
I
tool_calls che il modello emette nella sua risposta.mcp — dispatch tools/call
mcp — dispatch tools/call
Un
tools/call instradato attraverso il
gateway MCP del Firewall.egress — destinazione in uscita
egress — destinazione in uscita
Un host / IP / CIDR in uscita che un tool raggiunge — la superficie di SSRF ed
esfiltrazione di dati.
Alcuni abbinamenti verdetto + stage vengono rifiutati al salvataggio perché il
verdetto non può scattare lì:
cap_cost è un tetto di costo dell’esecuzione
pre-dispatch, inerte su response ed egress; pending_approval mette in attesa
solo su inbound, quindi un pin esplicito response/egress viene rifiutato.
L’editor nasconde queste combinazioni; l’API le rifiuta. Vedi
Stage.5. tool_name_glob — quale tool
Un piccolo glob case-sensitive sul nome del tool — shell.* per un’intera famiglia,
*.delete per un verbo attraverso i server, http_fetch per un tool esatto. Vuoto o
* corrisponde a ogni tool. Un glob sul nome della skill opzionale (stessa
grammatica) mette in AND una seconda condizione sulla skill proprietaria, così puoi
fidarti di un tool da una skill integrata e governarlo da una della community.
La grammatica completa — prefisso, suffisso, infisso, esatto e i casi limite che
fanno inciampare la gente — è il proprio riferimento:
Sintassi dei pattern glob.
6. args_match_json — con quali argomenti
Il glob risponde a quale tool; args_match_json risponde a con quali
argomenti — la differenza tra “blocca shell.exec” e “blocca
shell.exec solo quando il comando è rm -rf.” Il suo valore è una stringa
codificata in JSON che porta un insieme di clausole JSONPath, tutte in AND.
Decodificato, l’oggetto delle clausole appare così:
"args_match_json": "{\"clauses\":[{\"path\":\"$.command\",\"op\":\"regex\",\"value\":\"rm -rf\"}]}".
Gli operatori sono eq, contains, regex, in, cidr_match, gt e lt.
Un args_match_json assente è vacuamente vero — la regola corrisponde sul glob da
solo. Il linguaggio completo dei predicati, la sintassi del path e il comportamento
fail-closed di una clausola rotta sono in
Valida gli argomenti e nel
ricettario degli argomenti.
7. egress_json — quali destinazioni
Usato sulla superficie egress: una stringa codificata in JSON che contiene un
elenco di allow-e-deny per host / CIDR confrontato con una destinazione in uscita che
un tool raggiunge. Decodificato, l’oggetto appare così:
deny definisce
ciò che viene bloccato e allow ne ricava eccezioni.
Il template del firewall Baseline include una regola di deny egress con una
denylist SSRF / cloud-metadata già pronta (l’IP metadata
169.254.169.254, i range RFC-1918, loopback, link-local e
metadata.google.internal), così non devi scriverli a mano. Aggiungi le tue
destinazioni sopra per tutto il resto che vuoi governare. Vedi
Controllo dell’egress per la ricetta
completa e Esfiltrazione di dati per perché
conta.8. sanitize_json — redige gli argomenti
Usato quando verdict = sanitize: una stringa codificata in JSON che nomina
quali preset / regex custom redigono le sottostringhe corrispondenti dagli
argomenti del tool prima che la chiamata ripulita venga inoltrata — utile per
rimuovere un segreto o un valore PII che un agent ha lasciato in un argomento senza
bloccare l’intera azione. Decodificato, l’oggetto appare così:
9. cap_cost_cents — un tetto di spesa
Usato quando verdict = cap_cost: un tetto di costo dell’esecuzione per regola, un
intero in centesimi USD. Quando la regola corrisponde, la chiamata viene negata
una volta che la spesa accumulata dell’esecuzione dell’agent supera il tetto — un
interruttore di sicurezza per un loop incontrollato, che si risolve in allow o
deny negli eventi. Il tetto deve essere esplicito e non negativo, e la regola non
può essere fissata a response o egress (dove il verdetto è inerte). Comportamento
completo in Tetto di costo.
10. Una regola completa
Mettendo i campi insieme — negashell.exec, ma solo quando il comando appare
distruttivo, con scope sulle chiamate a tool emesse dal modello:
shell.exec, la
singola clausola restringe a un comando distruttivo, e il verdetto nega. Qualsiasi
shell.exec il cui comando non corrisponde alla regex ricade sulla regola
successiva o sul default della policy. Collega una chiave alla policy
(firewall_policy_id sulla chiave) ed è live sulla chiamata successiva — nessun
redeploy.
11. Come si combinano i campi
Qual è il minimo che una regola valida richiede?
Qual è il minimo che una regola valida richiede?
Un
verdict. Tutto il resto è opzionale: uno stage vuoto corrisponde a tutte
le superfici, un tool_name_glob vuoto (o *) corrisponde a ogni tool, e un
args_match_json assente corrisponde a qualsiasi argomento. Un nudo
{ "verdict": "audit" } è un catch-all valido.I matcher sono in AND o in OR?
I matcher sono in AND o in OR?
Sono in AND. Una regola scatta solo quando il suo stage, glob del tool, glob
della skill, clausole sugli argomenti e scope di egress tutti valgono. Per
esprimere un OR, scrivi regole separate.
Quali campi si abbinano a quale verdetto?
Quali campi si abbinano a quale verdetto?
sanitize_json è letto solo per il verdetto sanitize; cap_cost_cents
solo per cap_cost; egress_json solo sulla superficie egress. La console
valida questi abbinamenti al salvataggio, così una regola che mostra un
comportamento ma non può mai applicarlo non può essere persistita.E se due regole corrispondono entrambe?
E se due regole corrispondono entrambe?
Vince la
priority più bassa (parità risolta per id della regola) — vince il
primo match, e la valutazione si ferma lì. Vedi
Priorità delle regole.Correlati
Crea una policy
Crea la tua prima policy e collega una chiave.
Sintassi glob
La grammatica completa dei glob sul nome del tool.
Verdetti
Ogni verdetto e com’è fatto un block.
Valida gli argomenti
Le clausole sugli argomenti JSONPath in profondità.
Gestisci le policy
Modifica, versiona e fai revert delle policy.
Regole del Firewall
Il riferimento completo del motore di matching.
