shell.exec va bene finché il comando non è rm -rf, db.query va bene finché
non colpisce prod. Quella distinzione è ciò che una clausola sugli argomenti
esprime: un predicato jsonpath sugli argomenti del tool
che fa matching sui valori che un agent passa, così il verdetto scatta solo sulla
chiamata pericolosa e lascia il resto in pace.
Questa pagina è un ricettario — una manciata di ricette args_match_json
copia-incolla per i casi che ricorrono più spesso. Per la grammatica completa
delle clausole, la tabella degli operatori e la semantica fail-closed, vedi
Valida gli argomenti e il riferimento
Schema delle regole.
1. Come funziona una clausola jsonpath sugli argomenti del tool
L’args_match_json di una regola è una stringa codificata in JSON che porta
un insieme di clausole, tutte in AND. Il valore decodificato è un oggetto,
{"clauses": [ … ]}, dove ogni clausola è una tripla { path, op, value }:
path— un piccolo sottoinsieme di JSONPath sull’oggetto degli argomenti del tool:$.command,$.foo.bar,$.items[0], o$per l’intero oggetto. Niente wildcard, filtri, slice o discesa ricorsiva.op— uno di un insieme chiuso:eq,contains,regex,in,cidr_match,gt,lt.value— il letterale con cui confrontare (una stringa, un numero, un bool, o — perin— un array JSON).
tool_name_glob della regola: la regola scatta solo
quando il nome del tool corrisponde e ogni clausola vale. Ometti del tutto
args_match_json (o lascialo un "{}" vuoto) e la regola fa matching sul glob da
solo.
Le clausole fanno fail closed — la regola, non la richiesta. Se un path non si
risolve, gli argomenti sono malformati, o un valore è del tipo sbagliato, la
clausola valuta a false e la regola semplicemente non scatta — la chiamata
ricade sulla regola successiva o sul verdetto di default. Una clausola rotta non
auto-nega mai. Scrivi il tuo backstop netto come un semplice
deny su glob, non
come una clausola su cui fai affidamento perché fallisca in un certo modo.2. Ricetta: blocca un comando distruttivo
Il caso canonico. Consentishell.exec in generale, negalo solo quando il comando
appare distruttivo. Una clausola regex su $.command lo fa:
$.command
non-stringa (o mancante) non corrisponde mai, così una chiamata malformata ricade
anziché venire bloccata erroneamente.
3. Ricetta: nega un tool contro un ambiente nominato
Lascia giraredb.query, ma solo contro connessioni sicure — negalo quando il
target è prod o una replica. L’operatore in fa matching del valore risolto
contro qualsiasi elemento di un array JSON:
in deve essere un array JSON — un non-array viene rifiutato
quando salvi la regola. Gli elementi si confrontano con uguaglianza scalare,
quindi numeri e stringhe corrispondono ciascuno al proprio tipo.
4. Ricetta: nega una destinazione su IP privato o metadata
Quando un tool prende un IP target come argomento,cidr_match verifica se cade
dentro un CIDR — la forma SSRF di “un agent che recupera 10.x o l’indirizzo
cloud metadata”:
5. Ricetta: limita un argomento numerico
gt e lt confrontano numeri. Usali per rifiutare una dimensione di batch
assurda, un limite sovradimensionato o qualsiasi conteggio incontrollato — qui,
nega un delete bulk che mira a più di 100 righe:
"500" è un mismatch di tipo e non corrisponde, quindi la regola non scatta su
un argomento tipizzato come stringa. Mantieni l’argomento numerico, o normalizzalo
prima che il tool lo veda.
6. Ricetta: combina le clausole (AND)
Tutte le clausole in una regola sono in AND, quindi puoi restringere un verdetto a una chiamata molto specifica — per esempio, negashell.exec solo quando è un
comando distruttivo e è puntato verso un host prod:
args_match_json —
scrivi due regole (o due glob) a priorità diverse. Il motore percorre le regole in
ordine di priorità e vince il primo match, quindi metti le regole strette per
prime. Vedi Priorità delle regole.
7. Scegli il verdetto per la forma corrisposta
Una clausola decide quali chiamate corrispondono; ilverdict della regola
decide cosa succede. deny è il default del ricettario, ma la stessa clausola può
portare un verdetto più morbido:
sanitize — redige un segreto in un argomento
sanitize — redige un segreto in un argomento
Quando l’argomento corrisposto porta un segreto o una PII anziché
un’istruzione pericolosa,
sanitize redige le sottostringhe corrispondenti
dagli argomenti del tool e inoltra la chiamata ripulita. Redige solo gli
argomenti — mai il contenuto che un tool restituisce. Vedi
Sanitizza le risposte.pending_approval — metti in attesa la chiamata corrisposta per un umano
pending_approval — metti in attesa la chiamata corrisposta per un umano
Metti in attesa esattamente la forma rischiosa per revisione invece di
bloccarla del tutto: un revisore approva o rifiuta fuori banda, e l’agent
ri-invia la chiamata approvata una volta. Vedi
Approvazioni.
audit — limitati a vederla, per ora
audit — limitati a vederla, per ora
Imposta il verdetto su
audit per registrare la chiamata corrisposta senza
bloccare mentre metti a punto la clausola. Abbina con la
shadow mode per misurare un deny
contro il traffico live prima che cambi qualcosa.8. Testa la clausola prima di farci affidamento
La scheda Test della console esegue un dry-run di una policy contro una chiamata a tool di esempio e restituisce il verdetto, la regola corrispondente e la motivazione — nulla viene dispatchato, nulla viene persistito. Incolla un oggetto di argomenti realistico e conferma che la clausola scatti sulle chiamate che intendi e solo su quelle, dato che una clausola che non può risolvere un valore semplicemente non scatta. Vedi Testa le regole.Le clausole sono validate rigorosamente al salvataggio — operatori
sconosciuti, path errati, un valore
in non-array, una regex non compilabile e
CIDR invalidi vengono tutti rifiutati, così una clausola malformata non può essere
persistita in primo luogo.9. Chi può scrivere le clausole sugli argomenti
Tutto questo gira nella console sotto la tua sessione (/api/workspace/firewall/*):
| Azione | Ruolo |
|---|---|
| Leggere policy, preset, discovered tools | Member |
| Creare / modificare / eliminare regole | Developer+ |
| Sandbox Test (dry-run di una policy) | Developer+ |
| Leggere eventi e aggregazioni delle esecuzioni | Developer+ |
Correlati
Valida gli argomenti
Il caso d’uso del match sugli argomenti per intero.
Blocca i tool
Nega un intero tool per nome — nessuna clausola necessaria.
Controllo dell'egress
Governa le destinazioni host / IP / CIDR in uscita.
Schema delle regole
Ogni campo che una regola può portare.
Priorità delle regole
Vince il primo match — ordina lo stretto prima dell’ampio.
Chiamate a tool pericolose
La minaccia che queste ricette affrontano.
