1. firewall 규칙 스키마 한눈에 보기
모든 규칙은 같은 필드를 담습니다.verdict만 항상 필수입니다 — 그 외
모든 것은 규칙이 무엇에 매치하는지를 좁히거나 선택한 판정을
구성하며, 없는 매처는 공허하게 참입니다.
| 필드 | 목적 |
|---|---|
priority | 평가 순서 — 낮은 것이 먼저 실행됨. |
verdict | 규칙이 매치할 때의 액션(필수). |
stage | 범위 지정할 표면; 비움 = 전부. |
tool_name_glob | 툴 이름에 대한 Glob. |
args_match_json | JSONPath 인자 술어, JSON으로 인코딩된 문자열로. |
egress_json | 호스트 / CIDR 허용-거부 목록(egress 규칙), JSON으로 인코딩된 문자열로. |
sanitize_json | 리댁션 구성(verdict = sanitize일 때), JSON으로 인코딩된 문자열로. |
cap_cost_cents | USD 센트의 실행 비용 상한(verdict = cap_cost일 때). |
sequence_json | 순서 있는 다단계 체인 술어(시퀀스 규칙), JSON으로 인코딩된 문자열로. |
label / notes | 사람 이름과 근거 — 이벤트에 표시되고, 엔진은 무시함. |
default_verdict이 적용됩니다.
2. priority — 평가 순서
정수 서수. 낮은 것이 먼저 실행됩니다; 같은 우선순위의 두 규칙은 규칙
id(삽입 순서)로 동점을 깹니다. 구체적인 깎아내기를 광범위한 잡-전부 위에
두세요 — 우선순위 10의 신뢰하는 툴 하나에 대한 allow이 우선순위
100의 deny *를 이깁니다.
3. verdict — 액션
유일한 필수 필드. 규칙이 매치하면, 그 판정이 호출에 무슨 일이 일어나는지를
결정합니다:
| Verdict | 효과 |
|---|---|
allow | 호출을 통과시킴, 로깅됨. |
audit | 허용하고 검토를 위해 기록 — 일반적인 default_verdict. |
deny | 호출을 차단. |
sanitize | 툴 인자에서 매치된 부분 문자열을 가린 다음, 전달. |
pending_approval | 사람 검토자를 위해 호출 보류. |
cap_cost | 에이전트 실행의 누적 지출이 상한을 넘으면 거부. |
deny는 inbound 표면에서 HTTP 400 firewall_blocked을, 또는 mcp
표면에서 툴 오류를 반환합니다. 보류된 호출은 에이전트가 폴링하는 id와 함께
HTTP 400 firewall_approval_pending을 반환합니다.
shadow mode에서 모든 강제 판정이
audit로 강등되고 이유에 [shadow] would …가 접두됩니다. 전체 표와 block
형태는 Verdicts를 참조하세요.
4. stage — 강제 표면
규칙을 firewall의 표면 중 하나에 고정합니다. 비워두면 규칙이 모든
표면에 적용됩니다:
inbound — 광고된 툴 정의
inbound — 광고된 툴 정의
에이전트가 요청에서 모델에게 광고하는 툴. 위험한 툴을 모델이 선택조차
하기 전에 차단합니다.
response — 모델이 발행한 tool_calls
response — 모델이 발행한 tool_calls
모델이 응답에서 발행하는
tool_calls.mcp — tools/call 디스패치
mcp — tools/call 디스패치
Firewall MCP 게이트웨이를 통해 라우팅된
tools/call.egress — 아웃바운드 목적지
egress — 아웃바운드 목적지
툴이 도달하는 아웃바운드 호스트 / IP / CIDR — SSRF 및 데이터 유출
표면.
일부 판정 + 스테이지 짝짓기는 판정이 거기서 발동할 수 없기 때문에 저장 시
거부됩니다:
cap_cost는 디스패치 전 실행 비용 상한이라 response와
egress에서 비활성입니다; pending_approval은 inbound에서만 보류하므로,
명시적 response/egress 고정은 거부됩니다. 편집기는 이 조합을 숨깁니다;
API는 그것들을 거부합니다. Stages 참조.5. tool_name_glob — 어떤 툴
툴 이름에 대한 작고, 대소문자 구분 glob — 전체 패밀리를 위한 shell.*,
서버 전반의 동사를 위한 *.delete, 하나의 정확한 툴을 위한 http_fetch.
비었거나 *은 모든 툴에 매치합니다. 선택적 skill 이름 glob(같은
문법)은 소유 skill에 대한 두 번째 조건을 AND하므로, 내장 skill의 툴을
신뢰하고 커뮤니티 것에서는 게이트할 수 있습니다.
전체 문법 — 접두사, 접미사, 중위, 정확, 그리고 사람들이 걸려 넘어지는
엣지 — 는 자체 레퍼런스입니다:
Glob 패턴 구문.
6. args_match_json — 어떤 인자로
glob는 어떤 툴에 답합니다; args_match_json은 어떤 인자로에
답합니다 — “shell.exec 차단”과 “명령이 rm -rf일 때만 shell.exec
차단”의 차이. 그 값은 모두 AND된 JSONPath 절 집합을 담은 JSON으로
인코딩된 문자열입니다. 디코딩하면, 절 객체는 다음과 같이 보입니다:
"args_match_json": "{\"clauses\":[{\"path\":\"$.command\",\"op\":\"regex\",\"value\":\"rm -rf\"}]}".
연산자는 eq, contains, regex, in, cidr_match, gt, 그리고
lt입니다. 없는 args_match_json은 공허하게 참입니다 — 규칙은 glob만으로
매치합니다. 전체 술어 언어, path 구문, 그리고 깨진 절의 페일 클로즈 동작은
인자 검증과
인자 쿡북에 있습니다.
7. egress_json — 어떤 목적지
egress 표면에서 사용: 툴이 도달하는 아웃바운드 목적지에 대해 매치되는
호스트 / CIDR 허용-및-거부 목록을 담은 JSON으로 인코딩된 문자열.
디코딩하면, 객체는 다음과 같이 보입니다:
deny 목록이 차단되는 것을
정의하고 allow이 거기서 예외를 깎아냅니다.
8. sanitize_json — 인자 가리기
verdict = sanitize일 때 사용: 정화된 호출이 전달되기 전에 어떤
프리셋 / 커스텀 regex가 툴 인자에서 매치된 부분 문자열을 가리는지
명명하는 JSON으로 인코딩된 문자열 — 전체 액션을 차단하지 않고
에이전트가 인자에 떨어뜨린 시크릿이나 PII 값을 벗겨내는 데 유용. 디코딩하면,
객체는 다음과 같이 보입니다:
9. cap_cost_cents — 지출 상한
verdict = cap_cost일 때 사용: 규칙별 실행 비용 상한, USD 센트의
정수. 규칙이 매치하면, 에이전트 실행의 누적 지출이 상한을 넘으면 호출이
거부됩니다 — 폭주 루프를 위한 회로 차단기로, 이벤트에서 allow이나
deny로 해석됩니다. 상한은 명시적이고 음수가 아니어야 하며, 규칙은
response나 egress에 고정될 수 없습니다(거기서 판정이 비활성). 전체
동작은 Cap cost에 있습니다.
10. 하나의 완전한 규칙
필드를 종합하기 —shell.exec을 거부하되, 명령이 파괴적으로 보일 때만,
모델이 발행한 툴 호출로 범위 지정:
shell.exec을 고르고, 단일
절은 파괴적 명령으로 좁히고, 판정은 거부합니다. 명령이 regex에 매치하지
않는 모든 shell.exec은 다음 규칙이나 정책 기본값으로 떨어집니다. 키를
정책에 연결하면(키의 firewall_policy_id) 다음 호출에 라이브입니다 —
재배포 없음.
11. 필드가 어떻게 결합되는가
유효한 규칙이 필요한 최소는 무엇인가?
유효한 규칙이 필요한 최소는 무엇인가?
verdict. 그 외 모든 것은 선택적입니다: 빈 stage는 모든 표면에
매치하고, 빈 tool_name_glob(또는 *)은 모든 툴에 매치하고, 없는
args_match_json은 모든 인자에 매치합니다. 맨 { "verdict": "audit" }은 유효한 잡-전부입니다.매처는 AND인가 OR인가?
매처는 AND인가 OR인가?
그것들은 AND입니다. 규칙은 그 스테이지, 툴 glob, skill glob, 인자
절, 그리고 egress 범위가 모두 성립할 때만 발동합니다. OR을 표현하려면,
별도의 규칙을 작성하세요.
어떤 필드가 어떤 판정과 짝지어지나?
어떤 필드가 어떤 판정과 짝지어지나?
sanitize_json은 sanitize 판정에만 읽힙니다; cap_cost_cents는
cap_cost에만; egress_json은 egress 표면에만. 콘솔은 저장 시 이
짝짓기를 검증하므로, 한 동작을 표시하지만 결코 강제할 수 없는 규칙은
영속화될 수 없습니다.두 규칙이 모두 매치하면?
두 규칙이 모두 매치하면?
더 낮은
priority가 이깁니다(동점은 규칙 id로 깨짐) — 첫 매치가
이기고, 평가가 거기서 멈춥니다.
규칙 우선순위 참조.관련
정책 생성
첫 정책을 작성하고 키를 연결합니다.
Glob 구문
전체 툴 이름 glob 문법.
Verdicts
모든 판정과 block이 어떻게 보이는가.
인자 검증
JSONPath 인자 절 심층.
정책 관리
정책 편집, 버전, 그리고 되돌리기.
Firewall Rules
완전한 매칭 엔진 레퍼런스.
