IAM 이란
AWS Identity and Access Management는 AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스 입니다.
IAM을 사용하면 사용자가 액세스할 수 있는 권한을 관리할 수 있습니다. IAM은 리전(서울, 미국, 일본 등)에 속하는 서비스가 아닌 글로벌 서비스 입니다. 루트 계정은 최초 생성 이후 가능하면 사용하지 말 것, IAM계정의 사용자는 필요한 최소한의 권한만 부여(최소권한의 원칙)
사용자(User)
- 개인 또는 애플리케이션을 위한 용도
- 특정 권한을 가진 ID (ex: EC2 FullAccess, Administrator)
- AWS 전반에 IAM 사용자를 특별하게 식별할 필요가 있는 경우 ARN(Amazon Resource Number)을 사용합니다. 일반적인 ARN은 아래와 같이 이루어져있습니다.
IAM 사용자(Richard)의 ARN의 예시는 아래와 같습니다.
그룹(Group)
- 개발팀, 운영팀 등의 사용자의 집합
- 다수의 사용자들에 대한 권한을 지정함으로써 해당 사용자들에 대한 권한을 더 쉽게 관리할 수 있음
역할(Role)
- 특정 개인에 속하지 않는 특정 권한을 가진 ID
- 자격 증명이 할 수 있는 것과 없는 것을 결정하는 권한 정책을 갖춘 AWS 자격 증명이라는 점에서 IAM User와 유사함
- 역할은 한 사람하고만 연관되지 않고 역할이 필요한 사람이라면 누구든지 맡을 수 있음
- 역할에는 그와 연관된 암호 또는 액세스 키와 같은 표준 장기 자격 증명이 없음, 임시 보안 자격 증명이 제공됨
사용 예시
1. AWS 리소스에 액세스할 수 없는 사용자, APP, Service에 액세스 권한을 위임하는 경우
2. 모바일 앱에서 AWS 리소스를 사용할 수 있도록 허용하되 앱에 AWS키를 내장하기 원치 않는 경우
3. 기업 디렉터리에서 AWS외부에 정의된 자격 증명을 이미 보유하고 있는 경우
4. 타사 계정에 대한 액세스 권한을 부여하여 리소스에 대한 감사를 수행할 수 있어야 하는 경우
정책(Policy)
정책은 자격 증명이나 리소스와 연결될 때 해당 권한을 정의하는 AWS의 객체입니다. AWS는 IAM 보안 주체(사용자 or 역할)가 요청을 보낼 때 이러한 정책을 평가합니다. 대부분의 정책은 AWS의 JSON 문서로 저장됩니다. AWS에서 정책은 아래와 같습니다.
- 자격 증명 기반 정책(관리형, 보안 인증 기반)
- 리소스 기반 정책
- 권한 경계
- 서비스 제어 정책 (Organizations SCP)
- 액세스 제어 목록(ACL)
- 세션 정책
JSON 정책 문서 구조
Version : 사용하고자 하는 정책 언어의 버전을 지정합니다.
Statement : 이 주요 정책 요소를 다음 요소의 컨테이너로 사용합니다. 정책에 설명문 둘 이상을 포함할 수 있습니다.
Sid(선택) : 선택 설명문 ID를 포함하여 설명문을 구분합니다.
Effect : Allow, Deny 을 사용하여 액세스를 허용, 거부 여부를 설명합니다.
Principal(일부 상황에 필요) : 리소스 기반 정책을 생성하는 경우 액세스를 허용하거나 거부할 계정, 사용자, 역할 또는 페더레이션 사용자를 표시합니다. 사용자 또는 역할에 연결할 IAM 권한 정책을 생성하면 이 요소를 포함할 수 없습니다.
Action : 정책이 허용하거나 거부하는 작업 목록을 포함합니다.
Resource(일부 상황에 필요) : IAM 권한 정책을 생성하는 경우 작업이 적용되는 리소스 목록을 지정해야 합니다. 리소스 기반 정책을 생성하는 경우 이 요소는 선택사항입니다.
Condition(선택) : 정책에서 권한을 부여하는 상황을 지정합니다.
참고
https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/introduction.html
https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/reference_policies_elements.html
, 인프런 코드바나나 AWS 자격증 준비하기