Passer au contenu principal
Chaque règle de firewall commence par répondre à à quels appels d’outils est-ce que je m’applique ? La première moitié de cette réponse est un glob de nom d’outil — le champ tool_name_glob sur une règle. C’est une grammaire délibérément petite et sensible à la casse (pas de regex, pas de backtracking) de sorte qu’une règle se lit de la même façon que vous taperiez un nom d’outil depuis l’onglet Discovered tools, et que la correspondance reste en temps linéaire sur le chemin critique du relais. Cette page est la référence ciblée de la grammaire pour ce seul champ. Pour savoir où un glob se place à l’intérieur d’une règle complète — la surface, les clauses d’arguments, les listes d’egress, le verdict — voir Schéma de règle et la référence approfondie du moteur dans Règles du Firewall.

1. Pourquoi un glob de nom d'outil plutôt qu’une regex

Les outils sont conventionnellement namespacés server.tool ou category.action (shell.exec, db.query, community.http_fetch). Un glob permet à une seule règle d’attraper toute une famille — shell.* pour chaque verbe shell, *.delete pour un verbe à travers les serveurs — sans les pièges d’une regex sur un chemin qui s’exécute à chaque appel d’outil.
La grammaire est intentionnellement minuscule. La correspondance est sensible à la casse — les noms d’outils MCP sont conventionnellement en minuscules-avec-points, donc un repli de casse surprendrait un auteur qui copie-colle un nom directement depuis la vue Discovered tools. Il n’y a pas de backtracking catastrophique parce qu’il n’y a pas de moteur de regex derrière ; chaque motif ci-dessous est une poignée d’opérations sur les chaînes.

2. Les cinq formes de motif

Un glob de nom d'outil est exactement l’une de ces formes. Tout ce qui ne correspond pas aux formes de wildcard est traité comme un littéral, une correspondance exacte.
MotifFormeCorrespond à
"" ou *toutChaque appel d’outil.
foo.*préfixefoo.bar, foo.execpas foo nu.
*.execsuffixeshell.exec, db.exec, et exec nu.
*.shell.*infixelocal.shell.exec, byo.shell.run.
shell.execexactSeulement la chaîne littérale shell.exec.
Lisez les sections suivantes pour le seul piège de chaque forme.

3. Préfixe — foo.*

Correspond à tout outil dont le nom commence par foo. et a au moins un caractère de plus après le point.

Correspond

shell.exec, shell.run, shell.rm pour le motif shell.*

Ne correspond pas

shell nu (le préfixe requiert le point final et quelque chose après lui)
Utilisez un glob de préfixe pour gouverner un serveur ou une catégorie entiers d’un coup — un seul deny shell.* couvre chaque verbe shell qu’un serveur pourrait ajouter plus tard.

4. Suffixe — *.exec

Correspond à tout outil dont le nom se termine par .exec, ancré à un point — et correspond aussi au verbe nu, sans namespace, exec à lui seul.
La correspondance du verbe nu est délibérée. Les appels de fonction natifs des fournisseurs et les serveurs MCP qui ne namespacent pas exposent un outil sous son verbe nu (juste exec, pas shell.exec). Une règle *.exec couvre les deux formes pour qu’un outil sans namespace ne soit pas silencieusement manqué.
Le suffixe reste ancré — il ne correspondra pas à un mot partiel :
Motifshell.execexec nushell.execute
*.execcorrespondcorrespondpas de correspondance
*.execute serait nécessaire pour shell.execute ; le suffixe ne se déclenche qu’à une limite de point ou au début de la chaîne, jamais au milieu d’un mot.

5. Infixe — *.shell.*

Correspond à tout nom d’outil qui contient .shell. comme infixe, avec au moins un caractère de chaque côté. C’est ainsi qu’une seule règle couvre un verbe peu importe où un serveur BYO-MCP le namespace.
{
  "label": "gate every shell tool, any server",
  "tool_name_glob": "*.shell.*",
  "verdict": "deny"
}
Cette règle correspond à local.shell.exec, byo.shell.run, et toute autre forme <server>.shell.<verb>. Elle ne correspond pas à shell nu ni à un .shell. nu sans rien autour — l’exigence d’un caractère de chaque côté maintient l’infixe honnête.
La forme infixe est uniquement la forme symétrique *.X.*. Un motif avec une étoile au milieufoo.*.bar — n’est pas un glob infixe ; il retombe sur une correspondance de chaîne exacte (il ne correspond qu’à un outil littéralement nommé foo.*.bar, qui n’existera pas). Pour faire correspondre « commence par foo., finit par .bar » vous avez besoin de deux règles ou d’une clause d’argument, pas d’un seul glob.

6. Exact — shell.exec

Tout ce qui n’est pas l’une des formes de wildcard ci-dessus est une correspondance de chaîne littérale. shell.exec correspond à shell.exec et rien d’autre. C’est le bon choix lorsque vous voulez nommer un outil spécifique — associez-le à une clause d’argument pour affiner davantage (« bloquer shell.exec uniquement quand la commande est rm -rf »).

7. Un exemple concret

Disons que vous voulez refuser chaque verbe shell destructeur peu importe comment un serveur MCP le namespace, tout en laissant tout le reste en audit. Dans l’éditeur de règles de la console (les écritures requièrent Developer+), la moitié correspondance de la règle est un seul glob infixe :
{
  "label": "deny shell across servers",
  "stage": "response",
  "tool_name_glob": "*.shell.*",
  "verdict": "deny"
}
Attachez une clé à la politique (firewall_policy_id sur la clé), et la règle attrape désormais local.shell.exec, byo.shell.run et acme.shell.rm — trois serveurs, un glob. Vous voulez confirmer qu’elle se déclenche sur ce que vous attendez avant de vous y fier ? Utilisez Tester les règles — il renvoie le verdict, la règle correspondante et la raison sans rien dispatcher.
Un glob restreint quel outil. Pour restreindre avec quels arguments, combinez par AND une clause d’argument sur la même règle ; pour gouverner un outil uniquement quand un skill particulier le possède, ajoutez un glob de nom de skill (même grammaire, mise en correspondance avec le skill propriétaire). Les deux sont couverts dans Règles du Firewall.

8. Référence rapide

Oui. *.exec correspond à shell.exec, db.exec, et au exec nu, sans namespace. Les globs de préfixe (foo.*) ne correspondent pas au namespace nu foo — seulement aux noms avec quelque chose après le point.
Non. La seule forme wildcard-au-milieu que le moteur comprend est l’infixe symétrique *.X.*. foo.*.bar retombe sur une correspondance littérale exacte. Utilisez deux règles ou une clause d’argument à la place.
Oui. Shell.Exec et shell.exec sont des outils différents. Copiez les noms verbatim depuis l’onglet Discovered tools.
Toute forme qui n’est pas l’une des cinq ci-dessus est traitée comme une correspondance exacte — elle ne correspondra simplement à aucun vrai nom d’outil, donc la règle ne se déclenche jamais plutôt que de correspondre à quelque chose d’inattendu. La console valide les règles à l’enregistrement.

Connexe

Liste blanche d'outils

Utilisez les globs pour autoriser un ensemble connu et refuser le reste.

Valider les arguments

Combinez par AND une clause d’argument JSONPath sur un glob.

Schéma de règle

Chaque champ d’une règle, en un seul endroit.
Pour le langage de correspondance complet — verdicts, surfaces, listes d’egress et séquences — voir Règles du Firewall. Nouveau sur le plan ? Commencez à la Vue d’ensemble du Firewall.