[AWS] IAM 이해
AWS의 IAM을 이해해보자.
1. IAM 개요
아래는 AWS의 IAM에 대한 설명이다.
AWS Identity and Access Management(IAM)은 AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스입니다.
IAM을 사용하여 리소스를 사용하도록 인증(로그인) 및 권한 부여(권한 있음)된 대상을 제어합니다.
IAM은 누가 언제 어디서 무엇을 어떻게 할 수 있는지를, 육하원칙 중 “왜”를 제외한 나머지를 설정할 수 있고 제어할 수 있는 서비스라고 할 수 있다.
2. IAM 기능
- AWS 어카운트 관리 및 리소스/사용자/서비스의 권한 제어
- 서비스 사용을 위한 인증 정보 부여
- 사용자의 생성 및 관리 및 계정의 보안
- 사용자의 패스워드 정책 관리(일정 시간마다 패스워드 변경 등)
- 다른 계정과의 리소스 공유
- Identify Federation(Facebook 로그인, 구글 로그인 등)
계정에 별명 부여 가능 -> 로그인 주소 생성 가능
- IAM은 글로벌 서비스(Region별 서비스가 아님)
3. IAM 구성
IAM은 총 4가지의 요소로 이루어져있다.
사용자
- 실제 AWS를 사용하는 사람 혹은 어플리케이션을 의미
그룹
- 사용자의 집합
- 그룹에 속한 사용자는 그룹에 부여된 권한을 행사
정책(Policy)
- 사용자와 그룹, 역할이 무엇을 할 수 있는지에 관한 문서
- JSON(JavaScript Object Notation) 형식으로 정의
역할(Role)
- AWS 리소스에 부여하여 AWS 리소스가 무엇을 할 수 있는지를 정의
- 혹은 다른 사용자가 역할을 부여 받아 사용
- 다른 자격에 대해서 신뢰관계를 구축 가능
- 역할을 바꾸어 가며 서비스를 사용 가능
다음은 IAM의 구성도이다.
다음은 사용자가 S3를 사용하고 싶을 경우의 IAM 권한 검증 절차를 나타낸 그림이다.
먼저 사용자에게 정책이 부여되어 있는지를 파악하고, 다음으로 그룹, 역할 순으로 권한을 검증한다.
다음은 역할이 리소스(Lambda)에 부여되어 있을 경우의 권한 검증 절차를 나타낸 그림이다.
4. 사용자의 종류
- 루트 사용자
- 결제 관리를 포함한 계정의 모든 권한을 가지고 있음
- 관리 목적 이외에 다른 용도로 사용하지 않는 것을 권장
- 탈취 되었을때 복구가 매우 어려움 -> MFA를 설정하는 것을 권장
- MFA(Multi-factor authentication) : 일회용 패스워드를 생성하여 로그인(OTP)
- IAM 사용자
- IAM을 통해 생성해서 사용하는 사용자
- 한 사람 혹은 하나의 어플리케이션을 의미
- 설정 시 콘솔 로그인 권한 부여 가능
- 설정 시 AWS 서비스를 이용할 수 있음
- Access Key (유저 이름에 해당)
- Secret Access Key (비밀번호에 해당)
- AdminAccess(모든 기능)를 부여하더라도 루트 사용자로 별도의 설정을 하지 않으면 Billing기능을 사용할 수 없음
5. 자격 증명 보고서
IAM의 현재 상황을 보여주는 보고서라고 할 수 있다.
계정의 모든 사용자와 암호, 액세스 키, MFA 장치등의 증명 상태를 나열하는 보고서를 생성하고 다운로드 가능
4시간에 한 번씩 생성 가능하며, 생성한 후 최대 4시간 동안 저장됨
AWS 콘솔, CLI, API에서 생성 요청 및 다운로드 가능
포함되는 정보는 아래와 같다.
6. IAM 모범 사용 사례
루트 사용자는 사용하지 않기
불필요한 사용자는 만들지 않기
가능하면 그룹과 정책을 사용하기
최소한의 권한만을 허용하는 습관을 들이기(최소 권한 원칙, Principle of least privilege)
MFA를 활성화하기
AccessKey 대신 역할을 사용하기
IAM 자격 증명 보고서(Credential Report) 활용하기