메인 콘텐츠로 건너뛰기
모든 firewall 규칙은 *어떤 툴 호출에 적용되는가?*에 답하는 것으로 시작합니다. 그 답의 전반부는 툴 이름 glob — 규칙의 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(접두사는 뒤따르는 점 그 뒤의 무언가를 요구함)
접두사 glob를 사용해 전체 서버나 카테고리를 한 번에 통제하세요 — 하나의 shell.* deny가 서버가 나중에 추가할 수 있는 모든 셸 동사를 커버합니다.

4. 접미사 — *.exec

이름이 .exec로 끝나고 점에 고정된 모든 툴에 매치합니다 — 그리고 맨, 네임스페이스 없는 동사 exec 자체에도 매치합니다.
맨 동사 매치는 의도적입니다. 프로바이더 네이티브 함수 호출과 네임스페이스를 쓰지 않는 MCP 서버는 툴을 맨 동사로 노출합니다(shell.exec가 아니라 그냥 exec). *.exec 규칙은 형태를 모두 커버하므로 네임스페이스를 쓰지 않는 툴이 조용히 놓치지 않습니다.
접미사는 고정된 채로 유지됩니다 — 부분 단어에는 매치하지 않습니다:
패턴shell.execexecshell.execute
*.exec매치매치매치 안 함
shell.execute에는 *.execute가 필요합니다; 접미사는 점 경계나 문자열의 시작에서만 발동하지, 결코 단어 중간에서는 아닙니다.

5. 중위 — *.shell.*

.shell.을 중위로 포함하고 각 측에 최소 한 글자가 있는 모든 툴 이름에 매치합니다. 이것이 BYO-MCP 서버가 동사를 어디에 네임스페이스하든 한 규칙이 그것을 커버하는 방법입니다.
{
  "label": "gate every shell tool, any server",
  "tool_name_glob": "*.shell.*",
  "verdict": "deny"
}
그 규칙은 local.shell.exec, byo.shell.run, 그리고 다른 모든 <server>.shell.<verb> 형태에 매치합니다. 맨 shell이나 주변에 아무것도 없는 맨 .shell.에는 매치하지 않습니다 — 각 측에 글자 요구사항이 중위를 정직하게 유지합니다.
중위 형태는 오직 대칭 *.X.* 형태입니다. 중간에 별이 있는 패턴 — foo.*.bar — 은 중위 glob가 아닙니다; 그것은 정확한 문자열 매치로 떨어집니다(문자 그대로 foo.*.bar라는 이름의 툴에만 매치하며, 그런 것은 존재하지 않습니다). “foo.로 시작, .bar로 끝”에 매치하려면 하나의 glob가 아니라 두 규칙이나 인자 절이 필요합니다.

6. 정확 — shell.exec

위의 와일드카드 형태 중 하나가 아닌 것은 무엇이든 리터럴 문자열 매치입니다. shell.execshell.exec에 매치하고 다른 것에는 매치하지 않습니다. 하나의 특정 툴을 명명하고 싶을 때 올바른 선택입니다 — 더 좁히려면 인자 절과 짝지으세요(“명령이 rm -rf일 때만 shell.exec 차단”).

7. 하나의 구체적인 예

MCP 서버가 어떻게 네임스페이스하든 모든 파괴적 셸 동사를 거부하면서 그 외 모든 것은 감사하게 하고 싶다고 합시다. 콘솔 규칙 편집기에서(쓰기는 Developer+ 필요), 규칙의 매치 절반은 단일 중위 glob입니다:
{
  "label": "deny shell across servers",
  "stage": "response",
  "tool_name_glob": "*.shell.*",
  "verdict": "deny"
}
키를 정책에 연결하면(키의 firewall_policy_id), 규칙은 이제 local.shell.exec, byo.shell.run, 그리고 acme.shell.rm을 잡습니다 — 세 서버, 하나의 glob. 의존하기 전에 예상한 것에 발동하는지 확인하고 싶나요? 규칙 테스트를 사용하세요 — 아무것도 디스패치하지 않고 판정, 매치된 규칙, 이유를 반환합니다.
glob는 어떤 툴인지를 좁힙니다. 어떤 인자로를 좁히려면, 같은 규칙에 인자 절을 AND하세요; 특정 skill이 소유할 때만 툴을 통제하려면, skill 이름 glob를 추가하세요(같은 문법, 소유 skill에 대해 매치). 둘 다 Firewall Rules에서 다룹니다.

8. 빠른 레퍼런스

네. *.execshell.exec, db.exec, 그리고 맨, 네임스페이스 없는 exec에 매치합니다. 접두사 glob(foo.*)는 맨 네임스페이스 foo에 매치하지 않습니다 — 점 뒤에 무언가가 있는 이름에만 매치.
아니요. 엔진이 이해하는 유일한 중간 와일드카드 형태는 대칭 중위 *.X.*입니다. foo.*.bar는 정확한 리터럴 매치로 떨어집니다. 대신 두 규칙이나 인자 절을 사용하세요.
네. Shell.Execshell.exec은 다른 툴입니다. Discovered tools 탭에서 이름을 그대로 복사하세요.
위의 다섯 중 하나가 아닌 형태는 정확한 매치로 취급됩니다 — 그것은 실제 툴 이름에 매치하지 않으므로, 규칙은 예상치 못한 것에 매치하기보다 결코 발동하지 않습니다. 콘솔은 저장 시 규칙을 검증합니다.

관련

툴 허용 목록

glob를 사용해 알려진 집합을 허용하고 나머지를 거부합니다.

인자 검증

JSONPath 인자 절을 glob에 AND합니다.

규칙 스키마

규칙의 모든 필드를, 한 곳에서.
전체 매칭 언어 — 판정, 표면, egress 목록, 그리고 시퀀스 — 는 Firewall Rules를 참조하세요. 이 평면이 처음인가요? Firewall 개요에서 시작하세요.