모든 정책 관리는 콘솔(또는 세션 / 액세스 토큰으로 인증하는
/api/workspace/firewall/* 관리 라우트 — 릴레이 sk-orca-… 키가
아님)에서 일어납니다. 에이전트의 /v1/* 호출만 릴레이 키를
사용합니다. 정책을 생성, 편집, 기본값 설정하는 것은 Developer+
액션입니다; 정책 목록과 그 버전을 읽는 것은 모든 Member에게
개방됩니다.1. 자세를 두 번째 정책으로 분기
“fork” 판정이나 복사 버튼은 없습니다 — 정책 이름은 워크스페이스당 고유하므로, 패턴은 두 번째, 독립적으로 버전 관리되는 정책을 세우고 원본을 건드리지 않고 자유롭게 분기하는 것입니다. 그것을 시드하는 두 가지 방법:새 정책을 생성한 다음, 그 규칙 작성
Security → Firewall → Policies → New policy를 엽니다. 새 정책은
규칙 없이 그리고 선택한
default_verdict로 생성됩니다 — 편집기에서
그 규칙을 작성하세요(또는 소스 정책에서 몇 개를 손으로 복사하세요).
워크스페이스 고유 이름을 주세요(예: staging-firewall 옆에
prod-firewall).또는 사용 사례 템플릿 적용
Templates 갤러리(
POST /api/workspace/firewall/templates/apply)는
하나의 새 정책 과 그 모든 규칙을 단일 트랜잭션으로 생성합니다 —
Coding, Support, RAG, Data, DevOps, Browser, 또는 Baseline. 템플릿이
매치할 때 직접 작성보다 빠릅니다.2. 모든 업데이트에서 올라가는 버전
모든 firewall 정책은version 정수를 가집니다. 정책이 생성될 때
1에서 시작하고 모든 업데이트에서 하나씩 증가합니다 — 규칙 편집, 기본
판정 변경, 활성화/비활성화 토글, shadow mode 전환. 그것은 단조적이고 결코
리셋되지 않습니다.
version은 캐시를
구동하지 않습니다; 그것은 다시 읽는 단조적 변경 카운터입니다. 정책을
저장하고 변경이 라이브임을 확인하고 싶을 때, 정책을 다시 읽고 version이
전진했는지 확인하세요.
정책
version은 복원 지점이 아니라 변경 카운터입니다. 그것은 정책이
변경되었음을 알려주고 게이트웨이가 편집을 전파하게 합니다 — 버전별 diff나
롤백이 아닙니다. diff와 원클릭 되돌리기가 있는 버전 관리 이력 전체는
Guardrails에 존재합니다: GET /api/guardrail/:id/history, …/history/diff, 그리고 POST /api/guardrail/:id/revert(되돌리기는 Developer+). firewall 정책의 경우,
감사 추적과 강등된 알려진-양호 정책을 목록에 유지하는 것이 복원 지점을
보존하는 방법입니다 — §5 참조.3. 워크스페이스 기본값 설정 및 이동
워크스페이스는 하나의 정책을 기본값으로 표시할 수 있습니다. 자체firewall_policy_id가 없는 모든 키는 그것으로
해석됩니다(해석 순서).
- 정책을 편집하고 워크스페이스 기본값으로 설정합니다. 새 기본값을 프로모트하면 동일한 트랜잭션에서 이전 것이 강등됩니다 — 두 기본값이 있는 윈도우도, 교체 중간에 없는 윈도우도 결코 없습니다.
- 두 번째 정책을 세우는 것은 기본값을 앞으로 굴리는 깔끔한 방법입니다: 새 정책을 구축하고, 조정하고, shadow mode하에서 검증한 다음, 그것을 프로모트하세요. 이전 기본값은 강등된 채로, 폴백으로 목록에 남습니다.
4. 활성화, 비활성화, 그리고 삭제
정책 비활성화
정책 비활성화
Enabled를 끄면 정책이 해석되는 것을 멈춥니다. 하지만 firewall
폴스루를 기억하세요: 연결된 정책이 비활성화된 키는 워크스페이스
기본값으로 폴백합니다 — 비활성화는 키를 firewall 범위 밖으로 빼내지
않습니다. 키를 강제에서 제거하려면, 그것을
떼어내세요(
firewall_policy_id를 0으로 설정), 그냥 정책을
비활성화하지 마세요. (이는 guardrails와 다릅니다. guardrails에서는
비활성화된 연결이 없음으로 해석됩니다.)정책 삭제
정책 삭제
DELETE /api/workspace/firewall/policies/:id(Developer+)는 정책을
제거합니다 — 하지만 어떤 키가 여전히 그것을 참조하면 409를
반환합니다. 그 키들을 먼저 떼어내거나 다시 가리킨 다음, 삭제하세요. 이
가드가 제자리 재작성이 아니라 두 번째 정책을 세우는 것이 라이브 키가
의존하는 정책을 진화시키는 더 안전한 방법인 이유입니다.이름은 워크스페이스당 고유
이름은 워크스페이스당 고유
정책 이름은 워크스페이스 내에서 고유하므로, 두 번째 정책은 새 이름이
필요합니다.
policy-copy-2보다는 수명 주기를 견디는 관습을
사용하세요 — staging-firewall / prod-firewall, 또는 날짜 접미사.5. 감사 추적
모든 정책 생성, 업데이트(기본값 프로모션이나 shadow mode 전환 포함), 그리고 삭제는 변경이 커밋된 후에 감사 행 — 워크스페이스 행과 중앙 admin 행 둘 다 — 을 씁니다. 실패한 저장(중복 이름, 유효하지 않은 판정)은 아무것도 쓰지 않습니다. 규칙 blob과 시크릿은 결코 감사 로그에 쓰이지 않습니다. 그래서 firewall 정책이 자체 diff-와-되돌리기 이력을 지니지 않더라도, 감사 추적은 누가 어느 정책을, 언제 변경했는지 알려주고, 단조적version은
그것이 몇 번 변경되었는지 알려줍니다. 그것을 강등된 알려진-양호 정책을
목록에 유지하는 것과 짝지으면, 실용적인 복원 경로를 갖게 됩니다.
6. 수명 주기 한눈에 보기
| 액션 | 라우트 | 역할 |
|---|---|---|
| 정책 목록(+ 버전, 카운트) | GET /api/workspace/firewall/policies | Member |
| 정책 하나 읽기 | GET /api/workspace/firewall/policies/:id | Member |
| 정책 생성(규칙 없음) | POST /api/workspace/firewall/policies | Developer+ |
| 템플릿 적용(정책 + 규칙) | POST /api/workspace/firewall/templates/apply | Developer+ |
업데이트(version 올림) | PUT /api/workspace/firewall/policies | Developer+ |
| 삭제(키 연결되어 있으면 409) | DELETE /api/workspace/firewall/policies/:id | Developer+ |
다음으로 갈 곳
Create & attach
최초 설정 경로 — 정책을 생성하고 키를 그것에 가리킵니다.
Shadow mode
라이브 트래픽을 변경하지 않고 새롭거나 다시 기본값이 된 정책을
롤아웃합니다.
Firewall + Guardrails
액션 정책이 텍스트 guardrails와 어떻게 조합되는가 — 그리고 버전 관리
되돌리기가 어디에 존재하는가.
범위: 키, 정책, 워크스페이스
연결과 워크스페이스 기본값이 어떻게 해석되는가.
