tool_name_glob
필드입니다. 그것은 의도적으로 작고, 대소문자 구분 문법(regex 없음,
백트래킹 없음)이므로 규칙이 Discovered tools 탭에서 툴 이름을 타이핑할
방식과 똑같이 읽히며, 매칭은 릴레이 핫 패스에서 선형 시간으로 유지됩니다.
이 페이지는 그 한 필드에 대한 집중 문법 레퍼런스입니다. glob가 전체 규칙
안에 어디에 위치하는지 — 표면, 인자 절, egress 목록, 판정 — 는
규칙 스키마와
Firewall Rules의 심층 엔진 레퍼런스를
참조하세요.
1. 왜 regex가 아니라 툴 이름 glob인가
툴은 관습적으로 server.tool 또는 category.action으로 네임스페이스가
지정됩니다(shell.exec, db.query, community.http_fetch). glob는 한
규칙이 전체 패밀리를 잡게 합니다 — 모든 셸 동사를 위한 shell.*, 서버
전반의 동사를 위한 *.delete — 모든 툴 호출에서 실행되는 경로의 regex가
가진 풋건 없이.
문법은 의도적으로 아주 작습니다. 매칭은 대소문자 구분입니다 — MCP
툴 이름은 관습적으로 점이 있는 소문자이므로, 대소문자 폴딩은 Discovered
tools 뷰에서 이름을 바로 복사 붙여넣는 작성자를 놀라게 할 것입니다. 그
뒤에 regex 엔진이 없으므로 파국적 백트래킹이 없습니다; 아래의 모든 패턴은
소수의 문자열 연산입니다.
2. 다섯 가지 패턴 형태
툴 이름 glob은 정확히 이 형태들 중 하나입니다. 와일드카드 형태에 맞지
않는 것은 무엇이든 리터럴, 정확한 매치로 취급됩니다.
| 패턴 | 형태 | 매치하는 것 |
|---|---|---|
"" 또는 * | 임의 | 모든 툴 호출. |
foo.* | 접두사 | foo.bar, foo.exec — 맨 foo은 아님. |
*.exec | 접미사 | shell.exec, db.exec, 그리고 맨 exec. |
*.shell.* | 중위 | local.shell.exec, byo.shell.run. |
shell.exec | 정확 | 리터럴 문자열 shell.exec만. |
3. 접두사 — foo.*
이름이 foo.로 시작하고 점 뒤에 최소 한 글자가 더 있는 모든 툴에
매치합니다.
매치
패턴
shell.*에 대해 shell.exec, shell.run, shell.rm매치 안 함
맨
shell(접두사는 뒤따르는 점 과 그 뒤의 무언가를 요구함)shell.* deny가 서버가 나중에 추가할 수 있는 모든 셸 동사를 커버합니다.
4. 접미사 — *.exec
이름이 .exec로 끝나고 점에 고정된 모든 툴에 매치합니다 — 그리고 맨,
네임스페이스 없는 동사 exec 자체에도 매치합니다.
접미사는 고정된 채로 유지됩니다 — 부분 단어에는 매치하지 않습니다:
| 패턴 | shell.exec | 맨 exec | shell.execute |
|---|---|---|---|
*.exec | 매치 | 매치 | 매치 안 함 |
shell.execute에는 *.execute가 필요합니다; 접미사는 점 경계나 문자열의
시작에서만 발동하지, 결코 단어 중간에서는 아닙니다.
5. 중위 — *.shell.*
.shell.을 중위로 포함하고 각 측에 최소 한 글자가 있는 모든 툴
이름에 매치합니다. 이것이 BYO-MCP 서버가 동사를 어디에 네임스페이스하든
한 규칙이 그것을 커버하는 방법입니다.
local.shell.exec, byo.shell.run, 그리고 다른 모든
<server>.shell.<verb> 형태에 매치합니다. 맨 shell이나 주변에 아무것도
없는 맨 .shell.에는 매치하지 않습니다 — 각 측에 글자 요구사항이
중위를 정직하게 유지합니다.
6. 정확 — shell.exec
위의 와일드카드 형태 중 하나가 아닌 것은 무엇이든 리터럴 문자열
매치입니다. shell.exec는 shell.exec에 매치하고 다른 것에는 매치하지
않습니다. 하나의 특정 툴을 명명하고 싶을 때 올바른 선택입니다 — 더 좁히려면
인자 절과 짝지으세요(“명령이
rm -rf일 때만 shell.exec 차단”).
7. 하나의 구체적인 예
MCP 서버가 어떻게 네임스페이스하든 모든 파괴적 셸 동사를 거부하면서 그 외 모든 것은 감사하게 하고 싶다고 합시다. 콘솔 규칙 편집기에서(쓰기는 Developer+ 필요), 규칙의 매치 절반은 단일 중위 glob입니다:firewall_policy_id), 규칙은 이제
local.shell.exec, byo.shell.run, 그리고 acme.shell.rm을 잡습니다 —
세 서버, 하나의 glob. 의존하기 전에 예상한 것에 발동하는지 확인하고
싶나요? 규칙 테스트를 사용하세요 —
아무것도 디스패치하지 않고 판정, 매치된 규칙, 이유를 반환합니다.
glob는 어떤 툴인지를 좁힙니다. 어떤 인자로를 좁히려면, 같은 규칙에
인자 절을 AND하세요; 특정
skill이 소유할 때만 툴을 통제하려면, skill 이름 glob를 추가하세요(같은
문법, 소유 skill에 대해 매치). 둘 다
Firewall Rules에서
다룹니다.
8. 빠른 레퍼런스
맨 동사가 접미사 glob로 커버되나요?
맨 동사가 접미사 glob로 커버되나요?
네.
*.exec은 shell.exec, db.exec, 그리고 맨, 네임스페이스
없는 exec에 매치합니다. 접두사 glob(foo.*)는 맨 네임스페이스
foo에 매치하지 않습니다 — 점 뒤에 무언가가 있는 이름에만 매치.foo.*.bar의 중간 별이 작동하나요?
foo.*.bar의 중간 별이 작동하나요?
아니요. 엔진이 이해하는 유일한 중간 와일드카드 형태는 대칭 중위
*.X.*입니다. foo.*.bar는 정확한 리터럴 매치로 떨어집니다. 대신 두
규칙이나 인자 절을 사용하세요.매칭이 대소문자 구분인가요?
매칭이 대소문자 구분인가요?
네.
Shell.Exec과 shell.exec은 다른 툴입니다. Discovered tools
탭에서 이름을 그대로 복사하세요.glob가 잘못 형성되면 어떻게 되나요?
glob가 잘못 형성되면 어떻게 되나요?
위의 다섯 중 하나가 아닌 형태는 정확한 매치로 취급됩니다 — 그것은
실제 툴 이름에 매치하지 않으므로, 규칙은 예상치 못한 것에 매치하기보다
결코 발동하지 않습니다. 콘솔은 저장 시 규칙을 검증합니다.
관련
툴 허용 목록
glob를 사용해 알려진 집합을 허용하고 나머지를 거부합니다.
인자 검증
JSONPath 인자 절을 glob에 AND합니다.
규칙 스키마
규칙의 모든 필드를, 한 곳에서.
