IAM 이란
IAM 은 Identity and Access Management의 약자로
AWS 리소스에 대한 액세스를 안전하게 제어 할 수 있는 서비스이다.
- Identity: AWS로 요청을 할 수 있는 주체(Principal의 계정을 만들어 준다.
- Access Mangement : 누가 어떤 리소스에 어떤 권한을 가지는지 정의
즉 해당 서비스를 통해서 AWS 서비스 및 리소스 들에 대한 인증
과 인가
를 중앙에서 관리 할수 있다.
IAM 기능
- 사용자 생성/ 관리
- AWS 계정의 리소스 관리 및 권한을 다른 사람에게 부여 가능
- EC2 애플리케이션 권한 자격 부여(IAM Role 사용)
- ex) 특정 ec2가 s3버킷에 접근 access 권한 부여
- 세분화된 권한 (리소스에 따라 여러 사람에게 다양한 권한 부여 가능)
IAM 의 구성 요소

이미지 출처
IAM 은 크게 User, Group, Role, Policy로 구성이 되어 있다.
- User
- 실제 AWS의 기능과 자원을 이용하는 사람 or 애플리케이션
- Group
- 다수의 사용자를 모아놓은 개념
- 동일한 권한을 가지는 사용자에게 권한 설정을 편리하게 하기위해 사용
- Role
- 계정에 생성할 수 있는 IAM 자격 증명
- 임시 보안 자격 증명 제공(정의된 권한 범위 내에서 aws 기능을 사용할 수 있는)
- Role에 필요한 Policy가 할당된다
- Policy
- 사용자와 그룹, 역할이 무었을 할 수 있을지에 대한 permission 설정
- 하나 이상의 aws 리소스에 어떤 작업을 수행 할 수 있는지 허용 규칙이 JSON으로 작성된다.
Role 은 권한(Policy)를 갖는 다는 점에서 IAM 사용자와 비슷하지만, IAM 사용자는 딱 그 사용자에게만 권한이 적용되지만, IAM 역할은 그 권한이 필요한 사용자라면 얼마든지 획득할 수 있다.
AWS 정책
- api 호출 시, 적용된 정책을 통해서 인가 수행
- aws 정책은 기본 디폴트가 deny 이다.
- 정책은 iam 역할/사용자/그룹 등에 적용할 수 있다.
AWS 요청 성공 조건
AWS api 가 정상적으로 수행 되기 위해서는
IAM 보안 주체의 서명값이 포함되면서 Policy에 의해 해당 요청이 인가되어야 한다.
두가지 조건은 AND 조건으로 모두 통과해야지만 정상 적인 기능동작이 가능하다.