tool_name_glob na regule. To celowo mała, z
rozróżnianiem wielkości liter gramatyka (bez regexa, bez backtrackingu),
więc reguła czyta się tak samo, jakbyś wpisał nazwę narzędzia z zakładki
Discovered tools, a dopasowanie pozostaje czasu liniowego na gorącej
ścieżce relay.
Ta strona to skupiona referencja gramatyki dla tego jednego pola. Gdzie glob
siedzi wewnątrz pełnej reguły — powierzchnia, klauzule argumentów, listy
egress, werdykt — zobacz Schemat reguły i
głęboką referencję silnika w Reguły Firewall.
1. Dlaczego glob nazwy narzędzia zamiast regexa
Narzędzia są konwencjonalnie przestrzenione server.tool lub
category.action (shell.exec, db.query, community.http_fetch). Glob
pozwala jednej regule wychwycić całą rodzinę — shell.* dla każdego
czasownika shella, *.delete dla czasownika w różnych serwerach — bez
samostrzałów regexa na ścieżce, która działa przy każdym wywołaniu narzędzia.
Gramatyka jest celowo malutka. Dopasowanie jest z rozróżnianiem wielkości
liter — nazwy narzędzi MCP są konwencjonalnie małymi-literami-z-kropkami,
więc zwijanie wielkości liter zaskoczyłoby autora, który kopiuje nazwę prosto
z widoku Discovered tools. Nie ma katastroficznego backtrackingu, bo nie ma
za tym silnika regexa; każdy wzorzec poniżej to garstka operacji na
stringach.
2. Pięć kształtów wzorca
glob nazwy narzędzia to dokładnie jeden z tych kształtów. Wszystko, co nie
pasuje do form z symbolem wieloznacznym, jest traktowane jako literał,
dokładne dopasowanie.
| Wzorzec | Kształt | Dopasowuje |
|---|---|---|
"" lub * | dowolny | Każde wywołanie narzędzia. |
foo.* | przedrostek | foo.bar, foo.exec — nie samo foo. |
*.exec | sufiks | shell.exec, db.exec, oraz samo exec. |
*.shell.* | wrostek | local.shell.exec, byo.shell.run. |
shell.exec | dokładny | Tylko literał shell.exec. |
3. Przedrostek — foo.*
Dopasowuje dowolne narzędzie, którego nazwa zaczyna się od foo. i ma co
najmniej jeden kolejny znak po kropce.
Dopasowuje
shell.exec, shell.run, shell.rm dla wzorca shell.*Nie dopasowuje
samego
shell (przedrostek wymaga końcowej kropki oraz czegoś po
niej)shell.* pokrywa każdy czasownik shella, który serwer może dodać
później.
4. Sufiks — *.exec
Dopasowuje dowolne narzędzie, którego nazwa kończy się na .exec,
zakotwiczone na kropce — oraz dopasowuje też goły, nieprzestrzeniony
czasownik exec samodzielnie.
Sufiks pozostaje zakotwiczony — nie dopasuje częściowego słowa:
| Wzorzec | shell.exec | gołe exec | shell.execute |
|---|---|---|---|
*.exec | dopasowuje | dopasowuje | brak dopasowania |
*.execute byłoby potrzebne dla shell.execute; sufiks odpala tylko na
granicy kropki lub na początku stringa, nigdy w środku słowa.
5. Wrostek — *.shell.*
Dopasowuje dowolną nazwę narzędzia, która zawiera .shell. jako wrostek, z
co najmniej jednym znakiem po każdej stronie. Tak jedna reguła pokrywa
czasownik wszędzie tam, gdzie serwer BYO-MCP akurat go przestrzeni.
local.shell.exec, byo.shell.run i dowolny inny
kształt <server>.shell.<verb>. Nie dopasowuje gołego shell ani gołego
.shell. bez niczego wokół — wymóg znaku-po-każdej-stronie utrzymuje wrostek
w ryzach.
6. Dokładny — shell.exec
Wszystko, co nie jest jednym z powyższych kształtów z symbolem
wieloznacznym, to dopasowanie literału stringa. shell.exec dopasowuje
shell.exec i nic innego. To właściwy wybór, gdy chcesz nazwać jedno
konkretne narzędzie — połącz to z
klauzulą argumentu, aby zacieśnić
dalej („zablokuj shell.exec tylko wtedy, gdy polecenie to rm -rf”).
7. Jeden konkretny przykład
Powiedzmy, że chcesz odmówić każdego destrukcyjnego czasownika shella niezależnie od tego, jak serwer MCP go przestrzeni, pozwalając wszystkiemu innemu na audit. W edytorze reguł konsoli (zapisy wymagają Developer+) połowa dopasowująca reguły to pojedynczy glob wrostka:firewall_policy_id na kluczu), a reguła teraz
wychwytuje local.shell.exec, byo.shell.run i acme.shell.rm — trzy
serwery, jeden glob. Chcesz potwierdzić, że odpala na tym, czego oczekujesz,
zanim na nim polegniesz? Użyj Testowania reguł
— zwraca werdykt, dopasowaną regułę i powód bez dyspozytowania czegokolwiek.
Glob zacieśnia które narzędzie. Aby zacieśnić z jakimi argumentami,
połącz AND klauzulę argumentu z
tą samą regułą; aby zarządzać narzędziem tylko, gdy konkretny skill jest jego
właścicielem, dodaj glob nazwy skilla (ta sama gramatyka, dopasowana
wobec skilla właściciela). Oba są omówione w
Reguły Firewall.
8. Szybka referencja
Czy goły czasownik jest pokryty przez glob sufiksu?
Czy goły czasownik jest pokryty przez glob sufiksu?
Tak.
*.exec dopasowuje shell.exec, db.exec, oraz goły,
nieprzestrzeniony exec. Globy przedrostka (foo.*) nie dopasowują
gołej przestrzeni foo — tylko nazwy z czymś po kropce.Czy środkowa gwiazdka w foo.*.bar działa?
Czy środkowa gwiazdka w foo.*.bar działa?
Nie. Jedyny kształt z symbolem-wieloznacznym-w-środku, który silnik
rozumie, to symetryczny wrostek
*.X.*. foo.*.bar spada do dokładnego
dopasowania literału. Użyj dwóch reguł lub klauzuli argumentu zamiast
tego.Czy dopasowanie rozróżnia wielkość liter?
Czy dopasowanie rozróżnia wielkość liter?
Tak.
Shell.Exec i shell.exec to różne narzędzia. Kopiuj nazwy
dosłownie z zakładki Discovered tools.Co, jeśli glob jest zniekształcony?
Co, jeśli glob jest zniekształcony?
Każdy kształt, który nie jest jednym z pięciu powyższych, jest traktowany
jako dokładne dopasowanie — po prostu nie dopasuje prawdziwej nazwy
narzędzia, więc reguła nigdy nie odpala, zamiast dopasować coś
nieoczekiwanego. Konsola waliduje reguły przy zapisie.
Powiązane
Lista dozwolonych narzędzi
Użyj globów, aby zezwolić na znany zestaw i odmówić reszty.
Walidacja argumentów
Połącz AND klauzulę argumentu JSONPath z globem.
Schemat reguły
Każde pole reguły, w jednym miejscu.
