1. 에이전트를 과도하게 유능하게 만드는 것
워크스페이스의 모든 에이전트가 하나의 키를 공유하거나, 키가 한 번 발급되고 재검토되지 않을 때, 기능이 상향으로 이동합니다:- 제한 없는 모델 — 에이전트는 워크스페이스의 모든 모델을 호출할 수 있으며, 필요 없는 고비용이나 고성능 모델도 포함됩니다.
- 지출 한도 없음 — 폭주 루프, 트리거된 인젝션, 또는 청구 공격이 알아채기 전에 워크스페이스 잔액을 소진할 수 있습니다.
- 만료 없음 — 스프린트 중에 발급된 키가 에이전트가 폐기된 지 1년이 지난 후에도 여전히 유효합니다.
- IP 제약 없음 — 자격 증명이 어디서든 작동하므로, 유출된 키에는 지리적 제한이 없습니다.
- 툴 허용 목록 없음 — 에이전트가 기능과 무관한 것도 포함하여 모든 툴을 호출할 수 있습니다.
2. 혼란된 대리인 패턴
혼란된 대리인은 과도한 권한의 특수화입니다. 에이전트가 하이재킹되지 않고; 설득됩니다. 가져온 웹 페이지, 문서, 또는 툴 결과의 프롬프트 인젝션 페이로드가 에이전트에게 공격자를 대신해 — 돈 이동, 레코드 삭제, 메시지 전송 — 합법적으로 수행할 권한이 있는 액션을 취하도록 지시합니다. 에이전트가 액션을 수행합니다. 그것은 정확히 그것을 할 권한이 있었습니다. 권한 검사가 통과됩니다. 피해가 발생합니다. 방어에는 두 가지가 함께 작동해야 합니다:- 좁은 스코프 — 에이전트가 작업이 의도하지 않은 것을 하도록 속임을 당할 수 없습니다, 왜냐하면 그것을 할 권한이 전혀 없기 때문입니다.
- 되돌릴 수 없는 액션에 대한 인간 승인 — 승인된 스코프 내에서도, 고위험 호출은 실행 전에 사람의 확인이 필요합니다.
3. 심층 방어: 4개 레이어
OrcaRouter는 단일 API 키에서 구성되는 4개의 독립적인 제어에 걸쳐 최소 권한을 강제합니다. 에이전트에 코드 변경이 필요하지 않습니다.레이어 1 — 범위 지정 키 (신원 + 하드 한도)
모든 에이전트는 자체 API 키를 가져야 합니다. 키는 에이전트가 요청하는 것과 무관하게 게이트웨이가 강제하는 하드 한도를 담습니다:| 필드 | 제한하는 것 |
|---|---|
model_limits | 이 키가 호출할 수 있는 모델의 정확한 세트. 다른 모델에 대한 요청은 게이트웨이를 떠나기 전에 거부됩니다. |
allow_ips | 이 목록에 없는 주소의 요청은 인증 레이어에서 거부됩니다. 비어 있으면 IP 제한 없음. |
credit_limit_usd | USD 단위의 누적 지출 한도. 0은 무제한. 게이트웨이는 키의 누적 지출에 대해 이것을 강제합니다. |
expired_time | 절대 만료 타임스탬프. -1은 키가 만료되지 않음. 에이전트의 배포 라이프사이클로 설정하세요. |
environment | 키 구성과 감사 로그 필터링을 위한 레이블 (prod, staging, dev). |
레이어 2 — Firewall 정책 (툴 허용 목록)
firewall_policy_id를 통해 키에 firewall 정책을
첨부하세요. 정책은 그 키가 발행하는 모든 툴 호출을 제어합니다:
- 에이전트가 합법적으로 사용하는 툴 이름을 허용하는 규칙을 작성하세요
(툴 이름 glob이 지원됩니다 — 예:
db.query*). - 정책의
default_verdict를 **deny**로 설정하여 명시적으로 나열되지 않은 모든 것이 차단되게 하세요. - 허용된 툴도 제한하는 인자 조건부를 추가하세요 — 예:
database인자가 특정 스키마에 매칭될 때만db.query를 허용.
레이어 3 — 고위험 액션에 대한 인간 승인 (pending_approval)
되돌릴 수 없거나 고가치의 툴 호출에 대해 — 결제 디스패치, 레코드 삭제, 이메일
전송 — pending_approval 규칙을 추가하세요. 흐름:
- 에이전트가 툴 호출을 발행합니다. Firewall이 그것을 보류하고 승인 id를 담은 “보류” 응답을 반환합니다. 호출이 툴에 도달하지 않습니다.
- 검토자가 아웃-오브-밴드로 승인하거나 거부합니다 — 콘솔에서 (Developer+) 또는 자체 승인 시스템으로의 HMAC 서명 웹훅.
- 에이전트가 승인 id를 폴링합니다. 승인되면, 일회용
X-OrcaRouter-Firewall-Approval헤더로 원래 호출을 재제출합니다. 게이트웨이가 정확히 한 번 통과시킵니다.
레이어 4 — 런당 비용 한도 (cap_cost)
cap_cost 규칙은 에이전트 런의 누적 지출이 규칙당 한도 (센트)를 초과하면
모든 툴 호출을 거부합니다. 이것은 다음에 대한 회로 차단기입니다:
- 인젝션에 의해 트리거된 폭주 루프.
- 사람이 알아채기 전에 지출을 유도하는 청구 공격.
- 다단계 플랜의 우발적 재귀.
cap_cost는 키 수명 수준이 아닌 런 수준에서 작동합니다 — 따라서 에이전트
호출당 재설정되며, 단일 오작동 런이 키의 credit_limit_usd 한도를 소진할 수
없습니다.
4. 잘 범위 지정된 에이전트 키 — 예시
gpt-4o-mini를 사용하여 고객 티켓을 요약하고 읽기 전용 복제본을 쿼리하는
에이전트는 다음과 같아야 합니다:
model_limits:["openai/gpt-4o-mini"]— 더 유능하거나 비싼 모델로 에스컬레이션할 수 없습니다.allow_ips: 워커 풀의 egress CIDR — 다른 곳에서는 키가 비활성입니다.credit_limit_usd: 작업의 예상 비용에 맞는 주간 한도, 여유를 포함 — 예:5.00.expired_time: 스프린트 또는 배포 기간의 끝 — 수동 정리 없이 키가 자동 만료됩니다.environment:"prod"— 로그 필터와 이상 탐지 뷰에 나타납니다.guardrail_id: 이 에이전트의 데이터 민감도로 범위 지정된 guardrail (PII 마스킹, 출력에 시크릿 없음).firewall_policy_id:db.query*와ticket.read*만 허용 목록으로, 기본 판정deny인 정책.
is_firewall_gateway는 키를 MCP 디스패치 및 evaluate-hook 경로의 게이트웨이
범위 토큰으로 표시합니다. 프로그래매틱으로 firewall을 구동하는 에이전트에만
이것을 생성하세요 — 일반 추론 트래픽에는 절대 사용하지 마세요. 추론 경로의
게이트웨이 키는 범용 키가 절대 도달해서는 안 되는 경로를 노출합니다.
is_firewall_gateway 활성화는 **Admin+**가 필요합니다.5. 필요한 역할
| 액션 | 최소 역할 |
|---|---|
| 모든 키, 정책, 또는 firewall 이벤트 읽기 | Member |
| 키, firewall 정책, 규칙 생성 또는 편집 | Developer |
| 콘솔에서 보류된 툴 호출 승인 | Developer |
키에서 is_firewall_gateway 활성화 | Admin |
6. 다른 위협과의 관계
과도한 권한은 거의 모든 다른 에이전트 위협의 조력자입니다:- 위험한 툴 호출 — 엄격한 툴 허용 목록이 있는 키는 인젝션이 성공하더라도 나열되지 않은 툴을 강제로 호출할 수 없습니다.
- 프롬프트 인젝션 — 스코프가 인젝션이 할 수 있는 피해를 제한합니다; 승인 게이트가 인젝션이 트리거하려는 되돌릴 수 없는 액션을 차단합니다.
- 위협 모델 — 과도한 권한이 다른 벡터와 어디에 위치하는지 보여주는 전체 공격 표면 맵.
범위 지정 키 & 정책
전체 키 필드 레퍼런스, 해석 순서, 워크스페이스 경계 모델.
Firewall
정책 작성, 판정, HITL 승인 흐름, 전체 API 레퍼런스.
