1. 순서: 우선순위 오름차순, 첫 매치 승리
정책 내에서, 규칙은priority ASC, id ASC 순으로 평가됩니다:
- 낮은
priority가 먼저 실행됩니다.priority: 0인 규칙이priority: 10인 것보다 먼저 검사됩니다. 강도 점수가 아니라 큐 위치로 생각하세요 — 더 작은 숫자가 먼저 말합니다. - 동점은 규칙 id로 깨집니다. 같은
priority의 두 규칙은 생성 순서(오름차순 규칙 id)로 실행되므로, 더 오래된 규칙이 동점을 이깁니다. 순서가 실제로 중요할 때는 id 동점 깨기에 기대기보다 구별되는 우선순위를 사용하세요. - 첫 매치가 이깁니다. 엔진은 조건이 모두 성립하는 첫 규칙에서 멈추고 그 판정을 적용합니다. 목록 아래의 규칙은 그 호출에 대해 결코 참조되지 않습니다.
- 매치 없음 → 기본 판정. 아무것도 매치하지 않으면, 정책의
default_verdict이 적용됩니다 — 변경하지 않았다면audit.
2. 하나의 구체적인 예: 구체적인 것을 광범위한 것 앞에
정전(canonical) 순서 지정 작업은 좁은 allow가 광범위한 deny에서 살아남게 하는 것입니다. 구체적인 규칙을 더 낮은 우선순위에 두어 먼저 도달되게 하세요:shell.echo에 대한 호출은 Rule A(우선순위 10)에 먼저 부딪혀, 매치하고,
허용됩니다 — 엔진은 Rule B에 결코 도달하지 않습니다. shell.exec에 대한
호출은 A를 빠져나가(glob가 매치 안 함), Rule B에 부딪혀, 거부됩니다.
우선순위를 뒤집으면 우선순위 10의 광범위한 shell.* deny가 shell.echo을
먼저 잡고, 우선순위 20의 allow은 죽은 코드가 됩니다. 경험칙: 가장 구체적인
것 먼저, 가장 광범위한 것 마지막.
3. 의존하기 전에 순서 확인
종이 위에서 우선순위를 추론하는 것은 정책에 규칙이 몇 개를 넘으면 오류가 나기 쉽습니다. Test 샌드박스는 샘플 툴 호출에 대해 실제 엔진을 실행하고 판정뿐 아니라 어느 규칙이 이겼는지도 알려줍니다 — 그래서 예상한 규칙이 실제로 발동했는지 확인할 수 있습니다:
전체 샌드박스는 규칙 테스트를, 규칙 순서를
제자리에서 편집하는 것은
정책 관리를 참조하세요.
4. Skill 강제가 위에 올라탑니다
규칙 우선순위는 이긴 규칙의 판정을 결정합니다 — 하지만 그것이 항상 최종 답은 아닙니다. 툴 호출이 통제되는 skill에 의해 소유되면, skill의 강제 모드가 첫 매치 해석 후 이긴 판정 위에 적용됩니다:| Skill 모드 | 이긴 판정에 대한 효과 |
|---|---|
allow | 변경 없음 — 규칙 판정 유지. |
quarantine | deny에 미치지 않는 모든 것을 pending_approval로 격상; 기존 deny는 그대로 둠. |
block | 규칙 판정과 무관하게 deny를 강제. |
quarantine skill은 규칙의 allow을 보류된 호출로 바꿀 수 있고,
block skill은 어떤 규칙도 그 툴을 지명하지 않을 때조차 호출을
거부합니다. Quarantine은 격상만 합니다 — deny를 더 부드러운 것으로 결코
강등하지 않습니다. 이것이 위험으로 자동 탐지된 skill이 규칙이 아무리
허용적이어도 검토할 때까지 격리된 채로 유지되는 이유입니다.
5. 첫 매치를 타지 않는 것들
몇 가지 메커니즘은 규칙별 우선순위 순회 밖에 위치합니다 — 그것들을 정렬하려 하지 않도록 어디에 떨어지는지 아세요:cap_cost — 순위가 아니라 해석됨
cap_cost — 순위가 아니라 해석됨
상한 미만의
cap_cost 규칙은
비매칭으로 취급되므로, 그것이 허가로서 첫 매치로 이기게 하기보다
평가가 다음 규칙으로 계속됩니다. 상한 초과면 deny로 해석됩니다.
그것은 도달되었다는 것만으로 더 낮은 우선순위 규칙을 결코 단락하지
않습니다.시퀀스 — 인라인이 아니라 반응적
시퀀스 — 인라인이 아니라 반응적
시퀀스 규칙은 시간 윈도우에
걸친 호출의 체인에 매치하므로, 체인을 완성하는 단일 호출이 아니라
비동기 매처에 의해 반응적으로 강제됩니다. 그것은 이벤트 피드를 켜지만
개별 호출에 대해 첫 매치 순회를 이기지 않습니다.
Shadow mode — 판정 후에 적용됨
Shadow mode — 판정 후에 적용됨
Shadow mode는 어느 규칙이
이기는지를 변경하지 않습니다 — 첫 매치 해석 후 이긴 강제 판정을
audit로 강등합니다(이유에 [shadow] would … 접두), 그래서 정책이
트래픽을 변경하기 전에 그 영향을 측정할 수 있습니다.6. 종합하기
임의의 툴 호출에 대해 전체 해석은:- 정책 해석 — 호출하는 키에 연결된 것, 또는 워크스페이스 기본값. 범위 참조.
priority ASC, id ASC로 규칙 순회 — 첫 매치가 이김; 매치 없음 →default_verdict.- Skill 강제 적용 — 통제되는 skill의 모드가 이긴 판정 위에
올라탐(
block은 deny 강제,quarantine은 격상). - Shadow mode 적용 — 켜져 있으면, 강제 판정을
audit로 강등. - 이벤트 기록 — 판정, 표면, 툴, 그리고 매치된 규칙이 이벤트 피드에 떨어짐.
규칙의 우선순위를 편집하면 정책에 연결된 모든 키에 대해 다음 호출에
효력을 발휘합니다 — 재배포 없음, 에이전트 코드 변경 없음. 재정렬 후
라이브 트래픽이 그것에 의존하기 전에
Test 샌드박스를 다시 실행하여 새 승자를
확인하세요.
다음으로 갈 곳
Verdicts
각 이긴 판정이 실제로 하는 일.
Glob 구문
툴 이름 매칭이 규칙이 후보인지조차 어떻게 결정하는가.
규칙 테스트
정책을 dry-run하고 어느 규칙이 이기는지 보세요.
툴 허용 목록
순서에 가장 강하게 기대는 기본 거부 패턴.
