Ch2. IAM — AWS 보안의 핵심, Identity and Access Management
IAM이란?
**AWS Identity and Access Management(IAM)**은 AWS 리소스에 대한 접근을 안전하게 제어하는 서비스입니다. “누가(Who) 무엇을(What) 할 수 있는가”를 정의합니다.
핵심 특징: 글로벌 서비스, 무료, 루트 계정은 일상 업무에 절대 사용 금지.
IAM 핵심 구성요소
사용자 (User)
AWS에 접근하는 사람이나 애플리케이션. 최대 5,000명/계정.
그룹 (Group)
사용자들의 집합. 그룹에 정책을 붙이면 멤버 전체에 적용.
역할 (Role)
AWS 서비스나 외부 엔티티가 임시로 사용하는 권한 집합.
주요 사용 사례: EC2가 S3에 접근, Lambda가 DynamoDB 접근, 교차 계정 접근.
역할 vs 액세스 키: EC2에서 S3에 접근할 때 액세스 키를 코드에 직접 넣지 마세요! IAM 역할을 EC2에 부여하세요. 역할은 임시 자격증명을 자동 갱신하며 키 노출 위험이 없습니다. AWS 모범 사례입니다.
정책 (Policy)
권한을 정의하는 JSON 문서:
{
"Effect": "Allow",
"Action": ["s3:GetObject", "s3:PutObject"],
"Resource": "arn:aws:s3:::my-bucket/*"
}
최소 권한 원칙
Principle of Least Privilege: 업무에 필요한 최소한의 권한만 부여합니다. 시험에서 항상 옳은 선택지입니다.
MFA (다중 인증)
루트 계정과 권한 있는 사용자에게 필수 적용.
- 가상 MFA: Google Authenticator, Authy
- 하드웨어 MFA: YubiKey
- U2F: FIDO2 보안 키
STS와 임시 자격증명
**AWS Security Token Service(STS)**는 임시 보안 자격증명을 발급합니다(최대 12시간). AssumeRole로 교차 계정 접근 구현.
IAM 모범 사례
- 루트 계정에 MFA 활성화
- 루트 계정은 초기 설정에만 사용
- 최소 권한 원칙 적용
- 그룹으로 권한 관리
- 서비스간 접근은 역할 사용
핵심 개념 카드
사용자/그룹/역할/정책 ★★★★★ : 사용자=사람, 그룹=묶음, 역할=서비스/임시권한, 정책=JSON 권한 정의.
최소 권한 원칙 ★★★★★ : AWS 보안의 기본. 시험에서 항상 옳은 선택.
명시적 Deny 우선 ★★★★★ : Deny vs Allow 충돌 시 Deny가 항상 이깁니다.
실전 퀴즈
Q1. EC2 인스턴스에서 S3에 파일을 업로드할 때 가장 안전한 방법은?
EC2에 S3 쓰기 권한을 가진 IAM 역할을 부여합니다. 액세스 키를 코드나 환경변수에 넣으면 키 노출 위험이 있습니다. 역할은 자동으로 임시 자격증명을 갱신하므로 더 안전합니다.
Q2. 사용자가 S3 읽기 Allow 정책과 S3 전체 Deny 정책을 동시에 가지면 어떻게 되는가?
Deny가 우선합니다. 명시적 Deny는 어떤 Allow도 override합니다. 해당 사용자는 S3 읽기도 할 수 없습니다.
OIYO 편집부
편집부OIYO 편집부는 경제·법률·생활·자기이해 주제를 1차 자료와 공개 통계로 검증해 정리합니다. 모든 글은 출처 표기와 정기 점검을 거쳐 실용성과 정확성을 함께 유지합니다.