메인 콘텐츠로 건너뛰기
코딩 에이전트는 여러분의 워크스페이스에서 가장 레버리지가 높으면서도 가장 위험한 것입니다. shell.exec를 실행하고, 파일을 편집하고, URL을 가져오고, 커뮤니티 skill을 로드합니다 — 그 어느 것이든 볼륨을 rm -rf하거나, .env를 읽거나, 공격자 호스트로 유출할 수 있습니다. 이 레시피는 그 표면을 Firewall로 잠급니다: 파괴적 셸을 거부하고, 여러분이 허용하는 호출의 인자를 검증하고, egress에 울타리를 치고, 진짜로 위험한 작업을 사람을 위해 보류합니다. 그 어느 것도 여러분 에이전트의 코드를 건드리지 않습니다 — 정책은 게이트웨이에 존재하며 다음 호출에서 강제됩니다.
아래의 모든 것은 콘솔(Firewall → Posture / Policies)에서 구성됩니다. 그 관리 라우트는 릴레이 키가 아니라 여러분의 콘솔 세션을 사용합니다. 에이전트가 만드는 /v1/* 호출만 sk-orca-… 키를 운반합니다. 정책 편집은 Developer 역할을 요구합니다.

1. 차단이 아니라 관찰로 시작하기 — 안전한 코딩 에이전트 기준선

규칙을 맹목적으로 작성하지 마세요. 에이전트에게 sk-orca-… 키를 준 다음, Firewall → Posture를 열고 balanced 자율성 수준을 적용하세요. 한 트랜잭션에서 이는 모든 툴 호출을 감사하고, PII를 플래그하고, 파괴적 셸을 거부합니다 — 그래서 실제 트래픽에서 나머지 에이전트 동작을 학습하는 동안 최악의 액션은 이미 울타리로 차단됩니다. 실행하게 둔 다음, Firewall → Discovered tools를 읽으세요: 워크스페이스가 본 모든 툴이, covered(규칙이 적용됨) 또는 gap(아무것도 안 됨)으로 플래그됩니다. 그 목록이 여러분의 허용 목록 초안입니다. 피드가 적절해 보이면, tight(기본 거부)로 이동하거나 아래의 타깃 정책을 작성하세요.
balanced는 권장 시작 자세입니다; permissive는 아무것도 차단하지 않지만 여전히 모든 것을 로깅합니다; tight는 기본 거부에 secrets 및 SSRF 프리셋을 더한 것입니다. 각각이 정확히 무엇을 구체화하는지는 기준선을 참조하세요.

2. 파괴적 셸 거부 — 타협 불가의 바닥

코딩 에이전트를 위한 단 하나의 가장 중요한 규칙은 파괴적 셸 금지입니다. balancedtight 자율성 수준은 이미 이것을 Block destructive shell 프리셋으로 제공하며, 이는 워크스페이스 직접 툴 이름(shell.*, bash, cmd.*, powershell.*, exec.*)과 등록된 서버가 노출하는 MCP 네임스페이스 형태(*.shell.*, *.cmd.*, …) 양쪽을 커버하는 실제의, 편집 가능한 deny 규칙을 구체화합니다. “모든 셸 거부”보다 더 단단히 범위를 지정하고 싶다면, 파괴적 명령만 거부하고 나머지는 감사하는 규칙 하나를 작성하세요. 규칙은 툴 이름 glob에 선택적 인자 술어(호출의 인자에 대한 JSONPath)를 더해 매치합니다:
Firewall → Policies에서, 여러분의 기본값 위에 규칙을 추가하세요:
  • Tool glob: shell.exec
  • Args match(JSONPath 절):
{
  "clauses": [
    { "path": "$.command", "op": "regex", "value": "(?i)\\brm\\s+-[a-z]*[rf]" }
  ]
}
  • Verdict: deny
인자 연산자는 닫힌 세트입니다 — eq, contains, regex, in, cidr_match, gt, lt. $.command가 정규식과 매치하는 호출은 차단됩니다; 나머지 모든 것은 다음 규칙으로 떨어집니다.
inbound 표면의 거부된 호출은 오류 코드 firewall_blocked와 툴과 이유를 명시하는 메시지와 함께 HTTP 400을 반환합니다. MCP 게이트웨이를 통해 디스패치된 호출은 툴 오류(firewall deny: …)로 돌아오므로 모델이 크래시하는 대신 반응할 수 있습니다. inbound block은 업스트림 모델 호출 전에 발동하므로 모델 토큰을 소모하지 않습니다.
전체 매칭 언어(툴 glob, 인자 절, 시퀀스, 비용 상한)는 Firewall 규칙을 참조하세요.

3. 유지하는 툴의 인자 검증하기

툴을 허용하는 것은 그것에 대한 모든 인자를 허용하는 것과 같지 않습니다. deny에 범위를 지정하는 동일한 JSONPath 술어로 허용된 호출의 형태를 제약할 수 있습니다 — 그래서 db.queryDROP을 운반할 수 없고, file.write는 디렉토리를 탈출할 수 없습니다.

SQL DROP 차단

glob db.query, 절 {"path":"$.sql","op":"regex","value":"(?i)\\bdrop\\b"}, 판정 deny.

인자 내 시크릿 가리기

판정 sanitize는 호출이 전달되기 전에 툴 호출 인자에서 매치된 부분 문자열을 가립니다. 툴이 반환하는 것은 결코 건드리지 않습니다; inbound 표면(아직 호출 시점 인자 없음)에서는 block으로 격상됩니다.
Firewall은 툴 호출 인자를 정화하며, 툴 결과가 아닙니다. 시크릿이 애초에 요청에 들어가는 것을 막으려면, Secrets Blocker guardrail을 키에 연결하세요 — 그것은 모델이 보기 전에 프롬프트 텍스트 자체를 스크리닝합니다. 두 평면은 결합됩니다: guardrail은 텍스트를 스크리닝하고, Firewall은 액션을 통제합니다.

4. egress 통제 — 에이전트가 도달할 수 있는 곳에 울타리 치기

URL을 가져올 수 있는 코딩 에이전트는 SSRF(클라우드 메타데이터나 내부 10.x 호스트를 타격)로 유도되거나 유출에 사용될 수 있습니다. tight 자율성 수준은 fetch 형태의 툴 이름(http_fetch, web_search, fetch_url, request, 그리고 그들의 <server>.* 형태)을 완전히 거부하는 SSRF 프리셋을 제공합니다. 목적지 수준 통제를 위해, egress 규칙을 작성하세요. egress 규칙은 egress 표면에서 평가되며 allow / deny 항목으로 host 또는 CIDR별로 범위를 지정합니다:
{ "deny": ["169.254.169.254", "10.0.0.0/8", "*.internal"] }
그것은 사설 범위, 클라우드 메타데이터 IP, 또는 내부 호스트명에 도달하는, 툴이 보고하는 모든 아웃바운드 목적지에 발동합니다 — 공개 목적지는 통과시키면서 위험한 것에는 울타리를 칩니다.
어떤 프리셋도 CIDR 기반 egress 규칙을 제공하지 않습니다 — SSRF 프리셋은 fetch 형태의 툴 이름을 매치합니다. 위의 host/CIDR 거부 목록은 여러분이 직접 작성하는 것입니다. 전체 패턴은 유출 중지를 참조하세요.

5. 위험한 작업을 사람을 위해 보류하기 (HITL)

어떤 작업은 자동 허용도 자동 거부도 되어서는 안 됩니다 — 배포, git push, 파괴적 마이그레이션. 그런 것에는 pending_approval 판정을 사용하세요. 호출이 보류되고, 에이전트는 승인 id가 담긴 “held” 응답을 받고, 검토자가 대역 외에서 그것을 해결합니다:
  1. 규칙을 작성하세요(예: glob deploy.*, 판정 pending_approval).
  2. 보류된 호출은 승인 id와 함께 HTTP 400 firewall_approval_pending을 반환합니다.
  3. 검토자가 콘솔에서(Developer+) 또는 HMAC 서명 웹훅 콜백을 통해 승인합니다.
  4. 에이전트가 승인을 폴링한 다음, 일회용 X-OrcaRouter-Firewall-Approval 헤더와 함께 원래 호출을 재제출하고 — 게이트웨이는 그것을 그 한 번 통과시킵니다.
모든 새 정책을 먼저 shadow mode로 롤아웃하세요. 정책은 프로덕션에서와 정확히 동일하게 평가하고 로깅하지만, 모든 강제 판정이 [shadow] would … 이유와 함께 audit로 강등됩니다 — 그래서 빌드를 망가뜨릴 수 있기 전에 예상한 것에 발동함을 증명할 수 있습니다.

6. 로드하는 skill과 MCP 서버 통제하기

코딩 에이전트는 런타임에 기능을 끌어옵니다 — 커뮤니티 skill, BYO MCP 서버. Firewall은 게이트웨이에서 둘 다 통제합니다:
  • Skills는 강제 모드(allow / quarantine / block)와 함께 위험 밴드로 스캔됩니다. 자동 탐지된 skill은 검토자가 해제할 때까지 격리됩니다 — 승인을 위해 보류됨. Skills를 참조하세요.
  • 여러분이 등록하는 MCP 서버는 모든 tools/call을 게이트웨이를 통해 디스패치하며, 게이트웨이는 디스패치 전에 각각을 mcp 표면에서 평가합니다. 자격 증명은 암호화되어 저장됩니다; 헬스 프로브는 ok / degraded / down을 보고합니다. MCP 서버MCP 에이전트 강화를 참조하세요.

7. 검증하고 관찰하기

정책에 의존하기 전에, dry-run하세요. Test 탭은 현재 정책에 대해 샘플 툴 호출을 평가하고 판정, 매치된 규칙, 그리고 이유를 보여줍니다 — 아무것도 디스패치되지 않고, 아무것도 영속화되지 않습니다. 일단 라이브가 되면, Firewall → Events / Runs는 모든 평가의 기록으로, 판정, 표면, 툴, run으로 필터링 가능하며, 이상 피드는 워크스페이스의 학습된 베이스라인에 대한 속도/비용 급증, retry_loop, 그리고 한 번도 본 적 없는 툴 경로를 플래그합니다.

요약

Firewall 레퍼런스

전체 정책 평면 — 표면, 판정, 해석, 자율성.

Firewall 규칙

매칭 언어: glob, 인자 절, egress, 시퀀스.

위험한 툴 호출

이 레시피가 방어하는 위협.

과도한 에이전시

과도하게 권한이 부여된 에이전트가 핵심 에이전트 위험인 이유.

자율 에이전트 레시피

완전 자율 에이전트 루프를 처음부터 끝까지 잠그세요.

유출 중지

egress와 lethal-trifecta 패턴을 깊이 있게.