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
Unglob 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.
| Motif | Forme | Correspond à |
|---|---|---|
"" ou * | tout | Chaque appel d’outil. |
foo.* | préfixe | foo.bar, foo.exec — pas foo nu. |
*.exec | suffixe | shell.exec, db.exec, et exec nu. |
*.shell.* | infixe | local.shell.exec, byo.shell.run. |
shell.exec | exact | Seulement la chaîne littérale shell.exec. |
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)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.
Le suffixe reste ancré — il ne correspondra pas à un mot partiel :
| Motif | shell.exec | exec nu | shell.execute |
|---|---|---|---|
*.exec | correspond | correspond | pas 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.
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.
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 :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
Le verbe nu est-il couvert par un glob de suffixe ?
Le verbe nu est-il couvert par un glob de suffixe ?
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.L'étoile du milieu dans foo.*.bar fonctionne-t-elle ?
L'étoile du milieu dans foo.*.bar fonctionne-t-elle ?
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.La correspondance est-elle sensible à la casse ?
La correspondance est-elle sensible à la casse ?
Oui.
Shell.Exec et shell.exec sont des outils différents. Copiez les
noms verbatim depuis l’onglet Discovered tools.Que se passe-t-il si le glob est malformé ?
Que se passe-t-il si le glob est malformé ?
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.
