fetch, web_search, 웹훅 포스터. 툴 이름이 당신의 허용 목록에 있고,
인자가 깨끗해 보여도, 호출은 여전히 당신의 데이터를 공격자가 통제하는
호스트로 POST하거나 169.254.169.254 메타데이터 엔드포인트에서 자격
증명을 끌어내며 끝날 수 있습니다. 목적지는 당신의 툴 이름 규칙이 결코
보지 못하는 호출의 부분입니다.
mcp egress 통제는 그 갭을 닫습니다. egress 규칙은 firewall 판정을
툴이 도달하는 곳 — 호스트, IP, 또는 CIDR 범위 — 으로 범위 지정하므로,
api.openai.com에 허용된 동일한 http_fetch가 나머지 모든 것에는
거부됩니다. 그것은 모든 tools/call이 이미 거치는
호출별 평가 위에서, firewall의 egress
표면에서 실행됩니다.
이것은 콘솔 작업입니다. Firewall 규칙은 릴레이
sk-orca-… 키가 아니라
세션/액세스 토큰으로 인증하는 /api/workspace/firewall/* 라우트에
존재합니다. 규칙 작성은 Developer+ 역할이 필요합니다.1. egress 규칙이 통제하는 것
일반 규칙은 툴 이름과 그 인자에 매칭합니다. egress 규칙은 세 번째 차원을 추가합니다: 호출이 해석되는 목적지. 규칙의stage를 egress로
설정하고 allow / deny 항목의 egress_json 목록을 첨부합니다. 엔진은 호출에서
목적지 호스트를 추출하고 그 호스트가 범위에 있을 때만 규칙을 발동합니다.
항목은 세 가지 방식으로 매칭됩니다:
호스트명
대소문자 구분 없는 정확한 매칭, 예:
api.openai.com. 후행 점은 양쪽에서
트리밍됩니다.IP 리터럴
해석된 다이얼 IP에 대한 정확한 매칭, 예:
169.254.169.254.CIDR 범위
목적지 IP — 리터럴 또는 DNS 해석 — 가 블록 내부에 들어가야 함, 예:
10.0.0.0/8.2. 하나의 구체적인 예
모든 fetch 형태 툴이 클라우드 메타데이터 엔드포인트와 RFC-1918 범위에 도달하는 것을 거부합니다. 이것은 전형적인 SSRF 유출 다리 절단입니다:egress 단계에서의 deny 판정, egress_json 거부 목록으로 범위 지정됨.
tools/call은 모델에 툴 오류로
돌아옵니다; 거부 목록이 커버하지 않는 공개 호스트로의 호출은 통과합니다.
3. 단 하나의 목적지만 허용 목록화하기
위 예의 반대: fetch 툴을 단일 승인된 호스트로 고정하고 정책의default_verdict(또는 이후 catch-all)가 나머지를 처리하게 합니다. 이것은
allow 판정이므로, allow 목록이 범위 내 집합입니다.
4. firewall의 나머지와 어떻게 구성되는가
egress 규칙은 워크스페이스 firewall 정책의 많은 규칙 중 하나입니다. 엔진은 우선순위 순서(낮은 것 먼저)로 규칙을 걸으며 첫 매칭이 이기므로, 광범위한 allow 위에 타이트한 egress deny를 두세요.| egress 규칙의 판정 | 효과 |
|---|---|
deny | 범위 내 목적지로의 호출을 차단 — egress 표면에 기록되고 툴에 오류로 반환됨. |
audit | 매칭된 호출을 firewall 이벤트로 로깅; 여전히 디스패치됨. |
allow | 범위 내 목적지를 허용; 기본 거부 바닥과 짝지어짐. |
pending_approval과 cap_cost는 egress 표면에서 강제되지 않습니다
— egress는 목적지 검사이지 보류나 지출 상한이 아닙니다. 대신 그 판정은
mcp나 inbound 표면에서 사용하세요.
판정 레퍼런스를 참조하세요.내장 SSRF 가드 (규칙 불필요)
내장 SSRF 가드 (규칙 불필요)
당신이 작성하는 어떤 규칙과도 독립적으로,
MCP 게이트웨이는 모든 서버 엔드포인트와 그
해석된 다이얼 IP를 SSRF 정책에 대해 검증합니다 — 인트라넷 범위와 클라우드
메타데이터 주소가 거부되며, IP가 DNS 리바인딩을 무력화하기 위해 모든
홉에서 다시 검사됩니다. 당신의 egress 규칙은 그 기준선 위에 워크스페이스별
목적지 정책을 계층화합니다.
유출 체인을 위한 시퀀스 규칙
유출 체인을 위한 시퀀스 규칙
단일 egress deny는 툴이 호스트에 도달하는 것을 멈춥니다.
시퀀스 규칙은 체인을 멈춥니다
— 예: “파일을 읽은 다음, 윈도우 내에서 egress” — 민감한 읽기 뒤에
따라올 때만 egress 다리를 플래그하여. 그것이 lethal-trifecta 차단기입니다;
egress 범위 지정은 호출별 통제입니다.
5. 먼저 shadow한 다음 강제하기
바쁜 워크스페이스에서 egress deny를 곧장 강제로 롤링하면 잊은 정당한 통합을 깨뜨릴 위험이 있습니다. 두 안전망:- Shadow 모드. shadow 모드의 정책은 모든 강제 판정을 audit로
다운그레이드합니다 — 당신의 egress deny가 차단하는 대신
[shadow] would deny …를 로깅하므로, 그것이 물기 전에 폭발 반경을 봅니다. - Observe 모드. 워크스페이스
firewall_observe_mode설정은 커버되지 않은 호출을 Discovered Tools로 로깅하여, 에이전트가 이미 도달하는 실제 목적지를 표면화하므로 추측이 아니라 데이터로부터 정확한 허용 목록을 작성할 수 있습니다.
6. 역할과 라우트
모든 콘솔 라우트는 워크스페이스 범위이며 세션/액세스 토큰으로 인증합니다. 읽기는 모든 Member에게 열려 있습니다; 규칙 작성이나 편집은 **Developer+**가 필요합니다.| 메서드 및 경로 | 역할 | 목적 |
|---|---|---|
GET /api/workspace/firewall/policies/:id | Member | 정책과 그 규칙 읽기. |
POST /api/workspace/firewall/rules | Developer+ | 규칙 추가(stage: egress 설정). |
PUT /api/workspace/firewall/rules | Developer+ | 규칙 업데이트(본문에 id). |
DELETE /api/workspace/firewall/rules/:id | Developer+ | 규칙 제거. |
POST /api/workspace/firewall/test | Developer+ | 초안 정책에 대해 샘플 호출 재생. |
관련
Firewall 규칙 레퍼런스
전체 규칙 DSL — 툴 글로브, 인자 매칭, egress 목록, 시퀀스.
MCP 서버 연결하기
툴 호출이 firewall 뒤에서 실행되도록 서버를 등록합니다.
MCP 툴 허용 목록
명시적으로 승인하지 않은 툴을 기본 거부합니다.
데이터 유출
egress 통제가 멈추도록 만들어진 위협.
