여기 모든 것은 콘솔(Security → Firewall)에서 구성되며, 그 관리
라우트는 세션 / 액세스 토큰을 사용합니다 — 릴레이
sk-orca-… 키가
아님. 에이전트의 /v1/* 호출은 변하지 않습니다.1. 호출별 규칙이 체인을 놓치는 이유
firewall의 툴 glob과 인자 절은 설계상 무상태이고 결정론적입니다 — 핫 패스에서, 빠르게, 한 호출을 결정합니다. 그것이 “shell.exec rm -rf 차단”에 정확히 원하는 것입니다. 그것은 모든 개별
호출이 합법인 서서히 진행되는 유출에는 정확히 틀렸습니다.
두 상호 보완적 도구가 그 갭을 메웁니다:
시퀀스 규칙
시간 윈도우 안에서 호출의 순서 있는 체인에 매치하는, 직접 작성하는
규칙 — “벌크 읽기 → export → egress.” 패턴을 직접 명명합니다.
이상 탐지
firewall이 각 워크스페이스의 정상 툴 사용 형태를 학습하고 편차를
플래그 — 재시도 루프, 전에 본 적 없는 툴 경로, 그리고 볼륨/비용 급증.
작성할 규칙 없음.
2. 시퀀스 규칙: 공격 체인을 명명
sequence 규칙은 다른 규칙처럼
firewall 정책 안에 존재하지만, 단일
tool_name_glob 대신 순서 있는 스텝 목록을 담습니다. 각 스텝은
선택적 min_count와 선택적 egress: true를 가진 툴 glob입니다; 스텝은
순서대로 발생해야 하고(무관한 호출과의 교차는 괜찮음) 전체 체인은
window_seconds 안에 완료되어야 합니다.
crm.* 레코드를 읽고, 그 다음 어떤
*.export 툴을 호출하고, 그 다음 어떤 egress 호출을 할 때 — 모두 10분
안에 — 발동합니다. 각 호출은 그 자체로는 통과합니다; 패턴이 신호입니다.
전체 sequence 필드 구문 — 시간 제한 없음을 위한 window_seconds: 0,
min_count 기본값, 스텝 순서 의미 — 은
규칙 스키마에 있습니다. 시퀀스 규칙은
콘솔 규칙 편집기에서 작성하세요; 저장은 Developer+ 액션입니다.
3. 이상 탐지: 학습된 정상에서의 편차
시퀀스 규칙이 “이 특정 패턴이 일어났는가”를 묻는 곳에서, 이상 탐지는 “이 실행에 대한 무언가가 이 워크스페이스에 비정상인가”를 묻습니다. 그것은 규칙이 필요 없습니다 — firewall이 자체 트래픽에서 베이스라인을 구축하고 라이브 활동을 그것에 대해 채점합니다. 네 종류가 표출됩니다:rate_spike — 볼륨 홍수
rate_spike — 볼륨 홍수
(tool, key)별 호출 볼륨이 이 주중 시간대의 학습된 베이스라인에
대해 채점됩니다. 카운트가 절대 바닥을 넘고 그리고 베이스라인 대비
높게 실행되거나, 그 z-점수가 통계적 임계값을 넘으면 행이 표출됩니다.
그래서 “일요일 새벽 3시의
db.query 호출 100건”은 화요일 오후 2시의
같은 크기의 폭발이 그러지 않을 때도 두드러집니다.burn_spike — 비용 급증
burn_spike — 비용 급증
지출에 적용된 같은 아이디어: 이 주중 시간대의 학습된 베이스라인 비용의
배수를 태우는 툴. denial-of-wallet 조기 경고 — 하드 상한을 강제하기
위해
cap_cost 규칙과 짝지으세요.retry_loop — 실패하는 툴 두드리기
retry_loop — 실패하는 툴 두드리기
좁은 윈도우에서 여러 번 반복되는
(conversation, tool, arguments)
그룹 — 느린 정당한 폴링이 아니라 같은 인자로 같은 실패하는 툴을 계속
호출하며 멈춘 에이전트.novel_path — 본 적 없는 툴 간 전이
novel_path — 본 적 없는 툴 간 전이
이 워크스페이스가 전에 한 적 없는
tool_a → tool_b 전이.
에이전트가 처음으로 read_file에서 곧장 http_fetch로 가면, 두 툴이
개별적으로 허용되더라도 그 엣지가 켜집니다.주중 시간대 베이스라인
베이스라인은 주중 시간대(weekday × 24 + hour)로 버킷화된 14일 롤링
평균이므로, 화요일 14:00은 평평한 전체 평균이 아니라 특정하게 과거
화요일 14:00 이력에 대해 비교됩니다 — 평평한 평균은 실제 일별 및 주별
리듬을 씻어낼 것입니다. 아직 학습된 정상이 없는 완전히 새 워크스페이스도
절대 바닥을 통해 명백한 홍수를 여전히 잡으므로, 첫날부터 보호됩니다.
4. 하나의 구체적인 워크스루
손상된 프롬프트가 에이전트 중 하나를 좁은 실패 루프로 몰아넣은 다음, 건드린 적 없는 export 경로를 탐색한다고 합시다. 미리 작성한 규칙 없이 보게 되는 것은:에이전트가 오작동
주입된 지시사항이 에이전트를 동일한 인자로 실패하는
db.query를
재시도하도록 밀어붙인 다음, report.export를 호출하고 이어서 아웃바운드
fetch — 이 워크스페이스가 실행한 적 없는 경로.이상 피드 열기
Security → Firewall → Anomalies에서, 실행이
db.query의
retry_loop과 report.export → http_fetch 엣지의 novel_path를
표출합니다. 피드를 읽는 것은 Member 액션입니다 — 팀의 누구나
분류할 수 있습니다.발견을 규칙으로 전환
이제 체인을 보았으므로, 그것을 인코딩하세요: 위험한 export에 대한
deny, fetch에 대한
egress 허용 목록, 또는 다음번에
전체 패턴을 감사하는 시퀀스 규칙. 이상 탐지는 미지를 찾습니다; 규칙은
기지를 고정합니다.5. 시퀀스 규칙 대 이상 탐지
그것들은 인접한 문제를 해결합니다 — 아는 것에 맞는 것을 고르세요:| 시퀀스 규칙 | 이상 탐지 | |
|---|---|---|
| 직접 작성 | 정확한 체인 | 아무것도 — 학습함 |
| 잡는 것 | 알려진 다단계 패턴 | 미지 / 비정상 |
| 행동 | 규칙의 판정을 완성하는 호출에 적용(audit / pending_approval / deny) | 피드에 표출 |
pending_approval이나
deny 판정으로) 완성하는 호출을 게이트할 수 있습니다. 어떤 체인과도
무관하게 단일 호출에 하드 스톱을 하려면, 호출별
판정을 사용하세요.
6. RBAC & 피드 뒤의 라우트
이상 피드와 시퀀스 규칙은 워크스페이스 firewall 관리 라우트 아래에 위치합니다 — 세션 / 액세스 토큰, 결코 릴레이 키 아님:| 메서드 및 경로 | 역할 | 목적 |
|---|---|---|
GET /api/workspace/firewall/anomalies | Member | 이상 피드 읽기(?window=). |
POST /api/workspace/firewall/anomalies/snooze | Developer+ | 피드 스누즈({until}, 7일로 클램프). |
POST /api/workspace/firewall/rules | Developer+ | 정책 아래 시퀀스(또는 모든) 규칙 생성. |
POST /api/workspace/firewall/test | Developer+ | 의존하기 전에 샘플 호출에 대해 정책 dry-run. |
다음으로 갈 곳
규칙 스키마
전체
sequence 필드 — 스텝, min_count, window_seconds, 그리고 다른
모든 규칙 필드.이벤트 로그
매치된 시퀀스와 이상이 떨어지는 곳 — 실행, 표면, 판정으로 필터링.
Cap cost
burn_spike 신호를 하드 실행별 지출 상한으로 전환합니다.Egress 제어
네트워크 경계에서 체인의 마지막 유출 스텝을 멈춥니다.
