1. 키별 보안 정책: 키의 두 필드
guardrail은 모델을 통과하는 텍스트(PII, 시크릿, 탈옥)를 검사합니다. firewall 정책은 에이전트가 발행하는 툴 호출(어떤 툴, 어떤 MCP 서버, 어떤 호스트)을 통제합니다. 둘 다 워크스페이스 범위의, 이름이 지정된 정책이며 — 한 번 작성되어 워크스페이스 전체에 공유됩니다 — 키는 두 필드를 통해 특정한 하나를 선택합니다:| 필드 | 바인딩 대상 | 콘솔에서 설정 |
|---|---|---|
guardrail_id | 이 키의 프롬프트와 응답을 검사하는 guardrail. | Developer+ |
firewall_policy_id | 이 키의 툴 호출을 평가하는 firewall 정책. | Developer+ |
/console/token의 키 편집기에서 설정됩니다. 어느 쪽이든 설정하는 것은
Developer+ 작업입니다 — 정책 자체도 Developer+로 작성됩니다
(see 범위 & 키).
이 두 필드는 독립적입니다. 키는 guardrail을 연결하고 firewall 정책은 연결하지
않을 수 있으며, 그 반대도, 둘 다도, 둘 다 아님도 가능합니다 — 각 평면이 독자적으로
해석됩니다. 필드를 미설정(
0)으로 두는 것은 강제를 끄는 것과 같지 않습니다;
§3을 참조하세요.2. 하나의 구체적 예시
당신의 워크스페이스 기본 guardrail이 PII를 플래그하지만 통과시키고, 기본 firewall 정책이 모든 툴 호출을 감사한다고 합시다. 그것은 대부분의 에이전트에 적합합니다 — 하지만 당신의 finance 에이전트는 고객 SSN을 다루며 결코 셸 툴을 호출해서는 안 됩니다. 더 엄격한finance-guardrail(PII를 즉시 차단)과
finance-firewall(필요한 세 개의 툴만 허용 목록 설정)을 작성한 다음, 둘 다 그
에이전트의 키에 바인딩하세요:
12에 의해 검사되고 그 툴 호출은 정책
8에 의해 평가됩니다 — 그동안 워크스페이스의 다른 모든 키는 워크스페이스 기본값을
계속 실행합니다. 에이전트 자체 코드는 결코 바뀌지 않습니다; 그것은 이전과 정확히
동일하게 sk-orca-… 키로 https://api.orcarouter.ai/v1/...을 계속 호출합니다.
3. 해석: 사람들을 혼란스럽게 하는 규칙
모든 요청에 대해, 게이트웨이는 활성 guardrail과 활성 firewall 정책을 독립적으로 해석합니다. 순서는 둘 다 동일해 보입니다 — 연결 먼저, 워크스페이스 기본값 다음 — 하지만 한 가지 경우에서 갈라집니다.Guardrail 해석
연결되고 활성화됨 → 그것을 사용
연결되고 활성화됨 → 그것을 사용
키의
guardrail_id가 존재하고 활성화된 guardrail을 가리킵니다. 그 guardrail이
요청을 검사합니다.연결되었지만 비활성화 또는 삭제됨 → guardrail 없음
연결되었지만 비활성화 또는 삭제됨 → guardrail 없음
연결된 guardrail을 비활성화하는 것은 끔 스위치입니다. 키는 콘텐츠 검사를
전혀 받지 않습니다 — 워크스페이스 기본값으로 폴백하지 않습니다. 이는
의도적입니다: guardrail을 연결하고 비활성화하는 것이 그 키에 대해 검사를 끄는
방법입니다.
미설정 (0) → 워크스페이스 기본값
미설정 (0) → 워크스페이스 기본값
키에
guardrail_id가 없음. 워크스페이스의 활성화된 기본 guardrail이 설정되어
있으면 적용됩니다.둘 다 아님 → 강제 없음
둘 다 아님 → 강제 없음
연결도 없고 워크스페이스 기본값도 없음 → 요청은 콘텐츠 검사 없이 통과합니다.
Firewall 해석
연결되고 활성화됨 → 그것을 사용
연결되고 활성화됨 → 그것을 사용
키의
firewall_policy_id가 존재하고 활성화된 정책을 가리킵니다. 그 정책이 키의
툴 호출을 평가합니다.연결되었지만 비활성화됨 → 워크스페이스 기본값
연결되었지만 비활성화됨 → 워크스페이스 기본값
여기에 차이가 있습니다. 비활성화된 firewall 연결은 워크스페이스 기본 firewall
정책으로 폴백합니다 — 강제를 끄지 않습니다. firewall 연결을 비활성화하면 키가
워크스페이스 기본값으로 되돌아갑니다; 키를 보호되지 않은 채로 두지 않습니다.
미설정 (0) → 워크스페이스 기본값
미설정 (0) → 워크스페이스 기본값
키에
firewall_policy_id가 없음 → 워크스페이스의 활성화된 기본 firewall 정책이
적용됩니다.4. block은 어떻게 보이는가
바인딩된 정책이 요청을 거부하면, 호출자는 구조화된 오류를 봅니다 — 에이전트는 크래시하는 대신 반응할 수 있습니다:| 평면 | 오류 코드 | HTTP | 비용 |
|---|---|---|---|
| Guardrail | guardrail_blocked | 400 | 없음 — 입력 block은 미터링 전에 발동하고; 출력 block은 환불됩니다. skip-retry로 표시. |
| Firewall (inbound) | firewall_blocked | 400 | inbound block은 모델 호출 전에 발동하므로 모델 토큰이 없습니다. skip-retry. |
| Firewall (held) | firewall_approval_pending | 400 | 사람 승인을 위해 보류됨; 에이전트가 폴링하고 승인되면 재제출합니다. |
5. 다음으로 갈 곳
범위 & 키
전체 3단계 모델 — 워크스페이스, 정책, 키 — 과 키가 담는 모든 필드.
토큰 객체
키의 모든 필드:
model_limits, allow_ips, credit_limit_usd,
expired_time, 그리고 두 정책 연결.Guardrails
guardrail_id를 통해 바인딩하는 콘텐츠 정책을 작성하세요 — 규칙, PII 엔티티,
액션, 그리고 프리셋.Firewall
firewall_policy_id를 통해 바인딩하는 툴 호출 정책을 작성하세요 — 판정, 표면,
그리고 자율성 수준.키를 하나씩 바인딩하는 대신 워크스페이스 전체 자세를 한 번에 설정하고 싶나요?
자율성 수준이 두 평면 — guardrails와 firewall — 을 한 번에 씁니다. 그런 다음
워크스페이스 기본값보다 더 나아가야 하는 소수의 키에만 더 엄격한 정책을 연결하세요.
Guardrails vs Firewall를
참조하세요.
