Skip to main content

Agent Core Policy

Module 8: AgentCore Policy 요약

1. 왜 Policy가 필요한가?

AI Agent는 도구 호출을 스스로 결정한다.

문제는 다음과 같다.

  • 어떤 Tool을 호출할지 Agent가 결정
  • 어떤 인자를 넣을지도 Agent가 결정
  • Prompt Injection으로 LLM이 속을 수 있음
  • 시스템 프롬프트의 비즈니스 규칙이 우회될 수 있음
  • 하나의 Agent 침해가 큰 사고로 이어질 수 있음

예시:

위험 상황설명
보험금 과지급한도 $10,000인데 $50,000 지급
PII 유출Prompt Injection으로 개인정보 유출
부적격 승인자격 없는 고객을 승인

핵심은 LLM 안쪽 규칙만으로는 부족하다는 것.


2. AgentCore Policy란?

AgentCore Policy = AgentCore Gateway를 지나는 모든 Tool Call을 검사하는 결정론적 권한 제어 레이어

특징:

  • AgentCore Gateway를 통과하는 Tool Call을 가로챔
  • Cedar Policy로 허용/거부 판단
  • LLM 바깥에서 동작
  • Prompt Injection으로 우회 불가
  • 모델 판단이 아니라 Policy Logic으로 결정

즉, Agent가 아무리 “이건 해도 된다”고 말해도 Policy가 막으면 실행되지 않는다.


3. 구조

흐름은 다음과 같다.

User
→ AgentCore Runtime
→ AgentCore Gateway
→ AgentCore Policy 권한 검사
→ Tool/API 호출 허용 또는 차단

Policy는 Gateway 옆에서 동작하며, Tool 호출 전에 권한을 확인한다.

예:

Agent가 Payment API 호출 요청
→ Policy Engine이 Cedar Policy 평가
→ PERMIT 또는 FORBID 결정

4. 기본 상태: Default Deny

가장 중요한 규칙:

규칙의미
Default Deny매칭되는 정책이 없으면 DENY
At least one Permit최소 하나의 permit 정책이 필요
Forbid Winsforbid가 하나라도 매칭되면 무조건 DENY

핵심 공식:

FORBID > PERMIT

즉, 허용 정책이 있어도 금지 정책이 걸리면 차단된다.


5. Cedar Policy 기본 구조

Cedar 정책은 3요소로 구성된다.

요소의미
Effect허용할지, 거부할지
Scope누가, 무엇을, 어디에
Condition어떤 조건일 때

예시 구조:

permit (
principal,
action,
resource
)
when {
context.input.amount < 500
};

의미:

특정 사용자가 특정 Tool을 호출할 때, 금액이 500 미만이면 허용한다.


6. Cedar는 무엇이 아닌가?

Cedar는 다음이 아니다.

  • 프로그래밍 언어 아님

    • loop, state 없음
  • IAM/SCP 같은 일반 API Gateway 정책 아님

  • LLM Prompt 아님

  • 확률적 판단이 아니라 결정론적 판단

즉, Agent Tool 사용 권한을 명확히 제어하기 위한 정책 언어다.


7. JWT Claim과 Policy 연결

사용자 정보는 JWT Claim으로 들어온다.

예:

{
"username": "refund-agent",
"scope": "refund:write",
"role": "admin",
"department": "finance"
}

이 Claim은 Policy Entity Store에 저장되고, Cedar에서 다음처럼 사용된다.

principal.hasTag("role") &&
principal.getTag("role") == "admin"

즉:

IdP는 사용자의 Claim을 제공하고, Cedar는 그 Claim이 Tool 권한에서 어떤 의미인지 결정한다.


8. 자주 쓰는 Policy Pattern

패턴용도
Block All전체 차단
Disable Tool특정 Tool 비활성화
Disable User특정 사용자 차단
Numeric Check금액, 수량 제한
String Match결제수단, 상태값 확인
Set Membership국가, 그룹 포함 여부
Require Field필수 필드 존재 여부
Unless조건이 아닐 때 차단
RBAC역할 기반 접근 제어
OAuth ScopeScope 기반 접근 제어
Multi-condition역할 + 부서 등 복합 조건

예:

permit(...)
when {
principal.getTag("role") == "senior-analyst" &&
context.input.amount <= 1000000
};

의미:

senior analyst는 최대 $1M까지 승인 가능.


9. Enforcement Mode

Policy 적용 방식은 2가지다.

모드설명사용 시점
LOG_ONLY평가만 하고 차단하지 않음개발/테스트
ENFORCE실제로 허용/차단운영 환경

권장 흐름:

LOG_ONLY로 충분히 테스트
→ 로그에서 false deny 확인
→ 문제 없으면 ENFORCE 전환

10. NL2Cedar

자연어로 Cedar Policy를 생성할 수도 있다.

예:

Allow all users to invoke the risk model tool 
when data governance approval is true.

이런 문장을 Cedar 정책으로 변환한다.

다만 운영에서는 반드시 리뷰가 필요하다.


11. Best Practices

항목핵심
LOG_ONLY 먼저 사용최소 1개 비즈니스 사이클 테스트
CloudWatch 대시보드ALLOW/DENY 추적
IAM Role 분리Gateway 실행 role과 Policy 관리 role 분리
Git 관리Cedar Policy도 코드처럼 버전 관리
PR Review & CI정책 변경 검토/검증
FORBID는 하드 경계안전 제약은 forbid로 명시

특히 중요한 점:

FORBID는 LLM 출력으로 절대 우회할 수 없다.

12. 최종 핵심

AgentCore Policy의 본질은 이것이다.

Agent가 Tool을 실행하기 전에, LLM 바깥에서 결정론적으로 권한을 검사하는 보안/비즈니스 규칙 레이어

한 줄 요약:

프롬프트로 막는 것이 아니라, Gateway 레벨에서 Tool Call을 정책으로 막는 구조다.