Home / Strands 확장과 안전 / Interventions와 Cedar
Note

Interventions와 Cedar

Cedar Authorization, Human-in-the-Loop

⏱ 45분 95 / 189

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. 1
    도구 호출 요청

    에이전트가 민감 도구(예: deploy_production) 호출 시도

  2. 2
    HumanInTheLoop 판정

    allowed_tools에 없는 민감 도구면 승인 요구

  3. 3
    승인 대기

    실행 일시 중지, ask 콜백으로 운영자 질의 — 기본 stdio, 콜백으로 Slack 등 연동

  4. 4
    인간 판단

    운영자가 컨텍스트 확인 후 approve 또는 deny 응답

  5. 5
    실행 또는 중단

    approve 시 도구 실행 속행, deny 시 에이전트에 거부 사유 전달

takeaway

승인 없이는 실행되지 않습니다 — 사람이 마지막 관문입니다.

제어 없는 자율은 위험합니다.

Hooks · Plugins · Interventions · Sandbox — 4계층으로 에이전트를 통제