IAM Policy의 기본 구조
Policy는 AWS의 객체로서, Identity 또는 Resource와 연결될 때 해당 Identity나 Resource의 권한을 정의한다. 대부분의 Policy는 AWS에서 JSON 문서로 저장된다. Policy 문서는 하나 이상의 Statement로 구성되며, Action과 NotAction을 같은 문장에 사용할 수 없으며, Principal/NotPrincipal, Resource/NotResource도 상호 배타적이다.
정책 유형 및 적용 범위
Identity 기반 Policy는 IAM Identity(사용자, 그룹, 역할)에 연결되며 해당 Identity에게 권한을 부여한다. Resource 기반 Policy는 Resource에 인라인으로 연결되며, 일반적인 예로는 Amazon S3 버킷 Policy와 IAM 역할 신뢰 Policy가 있다. AWS는 Identity 기반, Resource 기반, VPC 엔드포인트, 권한 경계, Organizations 서비스 제어 Policy, Organizations 리소스 제어 Policy, ACL, Resource Access Manager, 세션 Policy 등 9가지 정책 유형을 지원한다.
Policy 평가 로직의 핵심 원칙
기본적으로 모든 요청은 거부되며, 이를 암시적 거부(implicit deny)라고 한다. Resource에 대한 접근 요청 시, AWS는 최소 하나의 Allow를 포함하는 모든 정책의 권한을 평가하며, 어떤 정책의 명시적 거부(explicit deny)도 이를 우선한다. 동일 계정 내에서 Identity 기반 또는 Resource 기반 정책 중 하나만 요청을 허용해도 요청은 허용된다.