Interventions와 Cedar
Cedar Authorization, Human-in-the-Loop
에이전트를 안전하게 제어한다
Hooks에서 Sandbox까지 — 4계층 제어 체계
📜
Interventions와 Cedar
정책 기반 접근 제어 · HITL
PART 4 · Interventions와 Cedar
Interventions
정책 계층 — 도구 호출을 허용·거부·승인 대기로 판정
📜
Interventions
Cedar 선언형 정책으로 도구 호출을 일관되게 판정합니다.
- permit / forbid 선언형 규칙
- 보안팀이 정책 독립 관리
- HITL 승인 워크플로우 내장
- principal 해석 실패 시 fail-closed
takeaway
코드가 아니라 정책이 판단합니다 — 일관성은 선언에서 나옵니다.
PART 4 · Interventions와 Cedar
Hooks vs Interventions
관찰형 제어와 정책형 제어의 근본적 차이
Hooks
이벤트 기반 관찰
- 코드로 조건 분기 작성
- 개발자가 로직 직접 구현
- 유연하지만 일관성 보장 어려움
- cancel_tool로 도구 실행 취소 가능하나 선택적
관찰과 가벼운 개입에 적합. 로직이 코드에 흩어지므로 팀 차원의 일관된 통제에는 한계가 있습니다.
Interventions
정책 기반 판정
- Cedar 선언형 정책으로 규칙 정의
- 보안팀이 정책 독립 관리 가능
- 일관된 permit/forbid 판정 보장
- HITL 승인 워크플로우 내장
통제를 코드 밖으로 분리. 정책 파일만 바꾸면 전체 에이전트에 일관 적용됩니다.
takeaway
겹치는 관계가 아니라 역할 분담입니다 — 개발자의 유연한 개입은 Hooks, 조직의 일관된 통제는 Interventions로 나눠 맡깁니다.
PART 4 · Interventions와 Cedar
Cedar 정책
permit/forbid 규칙으로 도구 접근을 선언적 제어
cedar
// policy.cedar — 에이전트 도구 접근 정책 (action이 곧 도구 이름)
// 읽기 도구는 모든 principal에 허용
permit(
principal,
action == Action::"read_file",
resource
);
// 프로덕션 DB 쓰기는 admin 역할만 — context_enricher가 주입한 role 검사
permit(
principal,
action == Action::"write_database",
resource
) when {
context.session.role == "admin"
};
// 파일 삭제는 전면 금지
forbid(
principal,
action == Action::"delete_file",
resource
);
// 호출 측 — agent(prompt, invocation_state={"role": "admin"})
// principal은 principal_resolver가 invocation_state에서 해석 (실패 시 fail-closed)
PART 4 · Interventions와 Cedar
HITL 승인 워크플로우
민감 작업 실행 전 인간 승인을 요구하는 Intervention 흐름
-
1
도구 호출 요청
에이전트가 민감 도구(예: deploy_production) 호출 시도
-
2
HumanInTheLoop 판정
allowed_tools에 없는 민감 도구면 승인 요구
-
3
승인 대기
실행 일시 중지, ask 콜백으로 운영자 질의 — 기본 stdio, 콜백으로 Slack 등 연동
-
4
인간 판단
운영자가 컨텍스트 확인 후 approve 또는 deny 응답
-
5
실행 또는 중단
approve 시 도구 실행 속행, deny 시 에이전트에 거부 사유 전달
takeaway
승인 없이는 실행되지 않습니다 — 사람이 마지막 관문입니다.
제어 없는 자율은 위험합니다.
Hooks · Plugins · Interventions · Sandbox — 4계층으로 에이전트를 통제