Vai al contenuto principale
Ogni regola del firewall inizia rispondendo a a quali chiamate a tool mi applico? La prima metà di quella risposta è un glob sul nome del tool — il campo tool_name_glob di una regola. È una grammatica deliberatamente piccola e case-sensitive (niente regex, niente backtracking) così una regola si legge nello stesso modo in cui digiteresti un nome di tool dalla scheda Discovered tools, e il matching resta a tempo lineare sul percorso caldo del relay. Questa pagina è il riferimento di grammatica focalizzato su quell’unico campo. Per dove un glob si colloca dentro una regola completa — la superficie, le clausole sugli argomenti, gli elenchi egress, il verdetto — vedi Schema delle regole e il riferimento approfondito del motore in Regole del Firewall.

1. Perché un glob sul nome del tool invece di regex

I tool sono convenzionalmente con namespace server.tool o category.action (shell.exec, db.query, community.http_fetch). Un glob permette a una regola di catturare un’intera famiglia — shell.* per ogni verbo shell, *.delete per un verbo attraverso i server — senza i foot-gun di una regex su un percorso che gira su ogni chiamata a tool.
La grammatica è intenzionalmente minuscola. Il matching è case-sensitive — i nomi di tool MCP sono convenzionalmente in minuscolo-con-punti, quindi un case-fold sorprenderebbe un autore che copia-incolla un nome direttamente dalla vista Discovered tools. Non c’è backtracking catastrofico perché non c’è alcun motore regex dietro; ogni pattern qui sotto è una manciata di operazioni su stringhe.

2. Le cinque forme di pattern

Un glob sul nome del tool è esattamente una di queste forme. Qualsiasi cosa non rientri nelle forme wildcard è trattata come un match letterale ed esatto.
PatternFormaCorrisponde a
"" o *qualsiasiOgni chiamata a tool.
foo.*prefissofoo.bar, foo.execnon il nudo foo.
*.execsuffissoshell.exec, db.exec, e il nudo exec.
*.shell.*infissolocal.shell.exec, byo.shell.run.
shell.execesattoSolo la stringa letterale shell.exec.
Leggi le sezioni seguenti per l’unico caso limite di ciascuna forma che fa inciampare la gente.

3. Prefisso — foo.*

Corrisponde a qualsiasi tool il cui nome inizia con foo. e ha almeno un altro carattere dopo il punto.

Corrisponde

shell.exec, shell.run, shell.rm per il pattern shell.*

Non corrisponde

il nudo shell (il prefisso richiede il punto finale e qualcosa dopo di esso)
Usa un glob di prefisso per governare un intero server o categoria in una volta — un deny shell.* copre ogni verbo shell che un server potrebbe aggiungere più avanti.

4. Suffisso — *.exec

Corrisponde a qualsiasi tool il cui nome finisce con .exec, ancorato a un punto — e corrisponde anche al verbo nudo, senza namespace exec da solo.
Il match del verbo nudo è deliberato. Le function call native del provider e gli MCP server che non usano namespace espongono un tool sotto il suo verbo nudo (solo exec, non shell.exec). Una regola *.exec copre entrambe le forme così un tool senza namespace non viene silenziosamente mancato.
Il suffisso rimane ancorato — non corrisponde a una parola parziale:
Patternshell.execnudo execshell.execute
*.execcorrispondecorrispondenessun match
*.execute servirebbe per shell.execute; il suffisso scatta solo a un confine di punto o all’inizio della stringa, mai a metà parola.

5. Infisso — *.shell.*

Corrisponde a qualsiasi nome di tool che contiene .shell. come infisso, con almeno un carattere su ciascun lato. È così che una regola copre un verbo ovunque un server BYO-MCP capiti di metterlo nel namespace.
{
  "label": "gate every shell tool, any server",
  "tool_name_glob": "*.shell.*",
  "verdict": "deny"
}
Quella regola corrisponde a local.shell.exec, byo.shell.run e qualsiasi altra forma <server>.shell.<verb>. Non corrisponde al nudo shell o a un nudo .shell. con nulla attorno — il requisito del carattere-su-ciascun-lato mantiene l’infisso onesto.
La forma infissa è solo la forma simmetrica *.X.*. Un pattern con una stella nel mezzofoo.*.barnon è un glob infisso; ricade su un match di stringa esatto (corrisponde solo a un tool letteralmente chiamato foo.*.bar, che non esisterà). Per fare match su “inizia con foo., finisce con .bar” ti servono due regole o una clausola sugli argomenti, non un glob.

6. Esatto — shell.exec

Qualsiasi cosa non sia una delle forme wildcard sopra è un match di stringa letterale. shell.exec corrisponde a shell.exec e a nient’altro. È la scelta giusta quando vuoi nominare un tool specifico — abbinalo a una clausola sugli argomenti per restringere ulteriormente (“blocca shell.exec solo quando il comando è rm -rf”).

7. Un esempio concreto

Diciamo che vuoi negare ogni verbo shell distruttivo indipendentemente da come un MCP server lo mette nel namespace, lasciando che tutto il resto venga auditato. Nell’editor delle regole della console (le scritture richiedono Developer+), la metà di matching della regola è un singolo glob infisso:
{
  "label": "deny shell across servers",
  "stage": "response",
  "tool_name_glob": "*.shell.*",
  "verdict": "deny"
}
Collega una chiave alla policy (firewall_policy_id sulla chiave), e la regola ora cattura local.shell.exec, byo.shell.run e acme.shell.rm — tre server, un glob. Vuoi confermare che scatti su ciò che ti aspetti prima di farci affidamento? Usa Testa le regole — restituisce il verdetto, la regola corrispondente e la motivazione senza dispatchare nulla.
Un glob restringe quale tool. Per restringere con quali argomenti, metti in AND una clausola sugli argomenti sulla stessa regola; per governare un tool solo quando una particolare skill ne è proprietaria, aggiungi un glob sul nome della skill (stessa grammatica, confrontata con la skill proprietaria). Entrambi sono trattati in Regole del Firewall.

8. Riferimento rapido

Sì. *.exec corrisponde a shell.exec, db.exec, e al nudo, senza namespace exec. I glob di prefisso (foo.*) non corrispondono al nudo namespace foo — solo a nomi con qualcosa dopo il punto.
No. L’unica forma con wildcard-nel-mezzo che il motore comprende è l’infisso simmetrico *.X.*. foo.*.bar ricade su un match letterale esatto. Usa due regole o una clausola sugli argomenti invece.
Sì. Shell.Exec e shell.exec sono tool diversi. Copia i nomi verbatim dalla scheda Discovered tools.
Qualsiasi forma che non sia una delle cinque sopra è trattata come un match esatto — semplicemente non corrisponderà a un nome di tool reale, quindi la regola non scatta mai anziché corrispondere a qualcosa di inatteso. La console valida le regole al salvataggio.

Correlati

Allow-listing dei tool

Usa i glob per consentire un insieme noto e negare il resto.

Valida gli argomenti

Metti in AND una clausola sugli argomenti JSONPath su un glob.

Schema delle regole

Ogni campo di una regola, in un unico posto.
Per il linguaggio di matching completo — verdetti, superfici, elenchi egress e sequenze — vedi Regole del Firewall. Nuovo al piano? Parti dalla Panoramica del Firewall.