shell.exec을 결코 보지 못하는 텍스트 스크리닝, 또는
프롬프트에서 나가는 신용카드 번호를 결코 알아채지 못하는 툴 firewall.
완전한 에이전트 보안 기준선으로 가는 가장 빠른 방법은 두 평면을 한
번에 설정하는 것입니다. OrcaRouter의 자율성 컨트롤 — Secure Agents
기준선 — 이 정확히 그것을 합니다: firewall 정책 과
guardrail을 함께, 한 트랜잭션에서, 원클릭 실행
취소와 함께 쓰는 단일 워크스페이스 수준 스위치. 보호받기 위해 규칙을
작성하지 않습니다; 수준을 고르고 나중에 튜닝합니다.
두 평면은 중복이 아니라 상호 보완적입니다. Guardrails는
프롬프트/응답 텍스트(PII, 시크릿, 탈옥 및 인젝션 의도)를 스크리닝합니다;
firewall은 에이전트가 취하는 액션(어떤 툴, MCP 호출, 그리고 호스트)을
통제합니다. 어느 하나만으로는 다른 하나가 메우는 갭을 남깁니다 —
Guardrails vs. Firewall 참조.
1. 왜 하나의 기준선이 두 미봉책을 이기는가
실제 에이전트 실행은 단일 요청에서 두 평면을 모두 가로지릅니다. 모델은 프롬프트(텍스트)를 읽고,db.query을 호출하기로 결정하고(액션), 툴의
결과가 다음 턴으로 되돌아옵니다(다시 텍스트). 한 평면만 보안하면 다른
하나는 무방비로 남습니다:
Firewall만
파괴적 셸을 거부하지만, 프롬프트가 여전히 고객의 SSN을 모델로 곧장
나릅니다 — 그리고 툴 인자가 여전히 API 키를 누출합니다.
Guardrails만
프롬프트의 PII를 마스킹하지만, 에이전트가 여전히
rm -rf를 호출하고,
클라우드 메타데이터 엔드포인트에 도달하거나, 폭주 툴에서 루핑합니다.2. 에이전트 보안 기준선: 세 수준
각 수준은 같은 두 평면을 커버합니다. 하나를 고르세요; 그것이 바닥이며, 나중에 규칙으로 정밀도를 더합니다.| 수준 | Firewall | Guardrails | Observe mode |
|---|---|---|---|
tight | 기본 거부; 파괴적 셸 + fetch 형태 툴 거부 | PII Shield + Secrets Blocker 강제 | 끔 |
balanced | 기본 감사; 파괴적 셸 거부 | 감사 전용의 PII Shield(PII 플래그) | 끔 |
permissive | 강제 정책 없음 | 없음 | 켬 — 모든 호출을 갭으로 로깅 |
`tight`이 액션 평면에서 무엇을 거부하는가
`tight`이 액션 평면에서 무엇을 거부하는가
tight은 firewall 정책의 기본 판정을 deny로 찍은 다음, 파괴적
명령을 담는 셸/exec 툴 이름 — shell.*, bash, cmd,
powershell, exec — 과 SSRF를 담는 fetch 형태 툴 이름 —
http_fetch, web_search, fetch_url, request(그리고 그들의
<server>.* MCP 네임스페이스 변형) — 에 대한 deny 규칙을 쌓습니다.
이 툴 이름을 거부합니다; CIDR나 클라우드 메타데이터 egress 규칙은
제공하지 않습니다. 169.254.169.254나 RFC-1918 범위를 목적지로
거부하고 싶으면, 자체 egress 규칙을 작성하세요 —
Egress 제어 참조.`tight`이 콘텐츠 평면에서 무엇을 강제하는가
`tight`이 콘텐츠 평면에서 무엇을 강제하는가
PII Shield와 Secrets Blocker guardrails 둘 다 활성이고
강제합니다. PII Shield는 요청이 모델에 도달하기 전에 PII를
마스킹합니다; Secrets Blocker는 요청의 자격 증명을 잡습니다. 툴 인자의
시크릿은 요청에서 이 guardrail에 의해 잡힙니다 — firewall은 기본적으로
그것을 벗겨내지 않습니다.
왜 `balanced`이 권장 시작점인가
왜 `balanced`이 권장 시작점인가
balanced은 모든 것을 감사하므로(기본 판정 audit) 에이전트의 실제
동작을 보면서, 여전히 가장 파괴적인 단일 부류 — 파괴적 셸 — 을
거부합니다. PII Shield는 감사 전용 모드로 실행됩니다(PII 플래그, 차단
안 함). 예상치 못한 block의 위험이 거의 없는 전체 추적을 얻은 다음,
추측이 아니라 가시성으로부터 조입니다.3. 하나의 구체적인 예: balanced 적용, 두 피드 관찰
수준 적용은 단일 콘솔 액션(Firewall → Posture)이거나 하나의 API 호출입니다.
라우트는 세션하에 실행되며 **Developer+**를 요구합니다.
audit_id**를 담습니다 — 그것을 유지하세요; 그것이 실행 취소에
전달하는 것입니다. 일단 적용되면, 기준선은 다음 툴 호출에 라이브입니다.
재배포 없음, 에이전트 코드 변경 없음. 이제 두 평면을 한 번에
관찰합니다:
- Firewall → Events — 모든 툴 호출 판정(
audit, 거부된 파괴적 셸 호출). 이벤트 로그 참조. - Guardrails → Matches — 모든 콘텐츠 정책 히트(PII Shield 플래그).
balanced이 실제의, 편집 가능한 firewall 정책과 실제 guardrail(각각
수준 이름으로 명명됨)을 쓰므로, 그 후 어느 쪽이든 열어 튜닝할 수 있습니다
— 기준선은 잠긴 프리셋이 아니라 시작점입니다.
4. 실행 취소는 한 호출
모든 자율성 변경은 감사 스냅샷에서 되돌릴 수 있으며, 일반 리셋이 아니라 정확한 이전 상태 — 정책, 규칙, guardrails, 그리고 설정 — 를 복원합니다.5. 권장 경로
넓게 시작하고, 관찰하고, 그 다음 가시성의 위치에서 조이세요:tight Simulate
GET /api/workspace/firewall/simulate?level=tight 그리고 그 deny를
Events 피드가 실제로 보인 것과 비교하세요. fetch 형태나 파괴적 셸
호출이 정상 흐름의 일부라면, 먼저 에이전트를 고치세요.규칙으로 튜닝
기준선은 바닥입니다. 예외를 깎아내거나 그것이 커버하지 않는 컨트롤을
firewall rules와 명명된
guardrails로 추가하세요. 더 미세한 범위를
위해 특정 정책이나 guardrail을 개별 키에 연결하세요.
6. 결합된 기준선의 역할
자율성 컨트롤은 두 평면에 걸치지만, 모든 액션은 역할 게이트됩니다.| 액션 | 최소 역할 |
|---|---|
| 수준 Simulate / guardrail Matches 보기 / Discovered Tools 보기 | Member |
| firewall Events & Runs 보기 | Developer+ |
| 자율성 수준 적용 | Developer+ |
| 자율성 변경 실행 취소 | Developer+ |
/api/workspace/firewall/*와
/api/guardrail/*) 실행됩니다. /v1/* 릴레이 호출만 sk-orca-… 키를
사용합니다; 게이트웨이 키 라우트는 별도의 범위입니다.
범위: 키, 정책, 워크스페이스
참조.
7. 기준선 이후: 각 평면을 어디서 튜닝하는가
기준선은 처음 30분 만에 보호받게 합니다. 거기서부터, 각 평면은 정밀 작업을 위한 자체 레퍼런스를 가집니다:Firewall 개요
판정, 표면, 인자 술어, 승인 — 액션 평면.
Guardrails
키워드, regex, PII, llm_judge, 그리고 grounding 규칙 — 콘텐츠 평면.
Shadow mode
강제하기 전에 조인 firewall 정책을 감사 전용으로 롤아웃합니다.
Secure Agents 기준선
자율성 컨트롤과 그 실행 취소 의미에 대한 개념 페이지.
