AWS DVA 입문 — IAM·STS·Cognito 보안 기초

2026-05-03확률과 통계 마스터 노트

AWS DVA-C02 마스터 노트 시리즈 1편. 시험 비중 26%인 보안 도메인의 토대 — IAM 사용자·그룹·역할의 차이, 정책 평가의 명시적 거부 우선 룰, STS 임시 자격 증명, iam:PassRole 권한 상승 함정, Cognito User Pool과 Identity Pool 차이까지 자격증 시험에 자주 나오는 핵심을 한 흐름으로.

이 글은 AWS DVA-C02 마스터 노트 시리즈의 첫 번째 편입니다. AWS Certified Developer Associate(DVA-C02)는 130분·65문항·합격선 720점의 자격증이에요. 그중 보안 도메인이 26% — 단일 영역으로 가장 큰 비중. 이 시리즈 12편 중 IAM·암호화·Cognito 같은 보안 토픽이 절반 가까이 차지하는 이유입니다.

이 시리즈는 12편으로 DVA-C02 시험 범위 전체를 다룹니다. 1편의 목표는 단순해요. IAM 사용자/그룹/역할 + STS + Cognito 세 단어를 손에 잡히게 만드는 것. 이 셋이 잡혀야 2편 컴퓨팅 서비스, 3편 스토리지에서 IAM 패턴이 자연스럽게 따라옵니다.

📚 학습 노트

이 시리즈는 AWS 공식 문서, AWS Skill Builder 자료, DVA-C02 시험 가이드, 여러 공개 학습 자료를 참고해 한국어 학습 노트로 풀어쓴 자료입니다.

읽으면서 AWS 콘솔 또는 CLI로 직접 IAM 사용자·역할을 만들어 보고 정책을 박아 보면 본문이 머리에 훨씬 잘 박혀요. 30분이면 첫 IAM 사용자에게 정책을 붙여 콘솔 접근 테스트까지 끝낼 수 있습니다.

처음 IAM이 어렵게 느껴지는 이유

이유는 두 가지예요.

첫째, 사용자·그룹·역할 세 단어가 비슷비슷합니다. 영어 단어로도 User·Group·Role이라 처음엔 어떤 자리에 어떤 걸 써야 하는지 안 보여요.

둘째, 정책 평가 로직이 직관과 어긋납니다. "Allow와 Deny가 동시에 있으면?" 답이 곧바로 안 나오는데 시험에는 매번 등장.

해결법은 한 가지예요. 회사 비유로 잡으세요. 사용자 = 직원 한 명, 그룹 = 부서, 역할 = 임시 출입증(다른 부서 회의실 들어갈 때 빌리는). 그리고 명시적 거부 = 보안실 거절 — 다른 모든 허가를 다 받아도 보안실 한 번 거절하면 끝. 이 비유 하나로 정책 평가가 정리됩니다.

IAM의 글로벌 특성

IAM은 리전에 종속되지 않는 글로벌 서비스 입니다. 서울에서 만든 사용자·정책이 도쿄·버지니아 어디서든 그대로 작동해요. 콘솔 우상단 리전 드롭다운이 IAM에서는 비활성. 이 한 줄은 시험에 자주 나옵니다.

전역 서비스 4총사 — IAM · Route 53 · CloudFront · WAF. 이 넷은 리전 개념이 없어요.

사용자·그룹·역할 — 회사 비유로

사용자 (User)

AWS 계정 안의 한 명. 콘솔 비밀번호 + 액세스 키(프로그래밍 방식)를 가질 수 있어요.

여기서 시험 함정이 하나 있어요. 루트 계정은 일상 작업에 절대 사용 X. 모든 권한 다 가지고 있어 사고 위험 큼. 초기 설정 후 봉인하고 IAM 사용자를 만들어 사용.

그룹 (Group)

여러 사용자를 묶어 권한 일괄 관리.

부서(그룹) "Developers"
├── 사용자 alice
├── 사용자 bob
└── 사용자 charlie

여기서 정말 중요한 시험 함정 — 그룹에는 사용자만 들어갈 수 있어요. 역할이나 다른 그룹은 X. 그룹 중첩 불가. 이 한 줄이 시험에 자주.

역할 (Role)

AWS 서비스나 외부 사용자가 임시로 권한을 빌리는 도구. 임시 출입증 비유가 딱 맞아요.

{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Principal": { "Service": "lambda.amazonaws.com" },
    "Action": "sts:AssumeRole"
  }]
}

이 신뢰 정책은 "Lambda 서비스가 이 역할을 맡을 수 있다"는 의미예요. EC2·Lambda·ECS 같은 AWS 서비스가 다른 서비스에 접근할 때 역할 사용.

IAM 정책 — JSON 4요소

{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Action": ["s3:GetObject", "s3:ListBucket"],
    "Resource": [
      "arn:aws:s3:::my-bucket",
      "arn:aws:s3:::my-bucket/*"
    ]
  }]
}

핵심 4요소 — Effect (Allow/Deny) · Action (s3:GetObject 등) · Resource (ARN) · Condition (선택, MFA·IP 제한 등).

정책 유형

유형 생성자 재사용 버전 관리
AWS 관리형 AWS AWS 자동
고객 관리형 사용자 ◯ (롤백 가능)
인라인 사용자 X (1:1) X

권장 — 고객 관리형. AWS 모범 사례.

정책 평가 — 명시적 거부 우선

평가 순서:

  1. 기본값은 거부 (Default Deny) — 명시적 Allow 없으면 자동 거부
  2. 명시적 거부 우선 (Explicit Deny wins) — Deny 있으면 다른 모든 Allow 무시
  3. 명시적 Allow + 명시적 Deny 없음 = 허용

IAM + S3 버킷 정책

IAM S3 정책 결과
Allow 없음 허용
Allow Deny 거부 (명시적 Deny 우선)
없음 Allow 허용
Deny Allow 거부 (명시적 Deny 우선)

여기서 정말 중요한 시험 함정 — 명시적 Deny가 모든 Allow를 이긴다. 이 한 줄이 시험 정답을 가르는 자리가 매우 많아요.

STS — 임시 자격 증명

Security Token Service. 15분~12시간 (기본 1시간) 유효한 임시 자격 증명 발급.

발급되는 3개:

  • Access Key ID
  • Secret Access Key
  • Session Token (이게 추가됨, 일반 IAM 사용자엔 없음)

핵심 4 API

AssumeRole

내 계정 또는 교차 계정의 IAM 역할을 위임받음. 교차 계정 액세스의 표준.

aws sts assume-role \
  --role-arn "arn:aws:iam::123456789012:role/CrossAccountRole" \
  --role-session-name "MySession" \
  --duration-seconds 3600

GetSessionToken

MFA 사용자가 임시 자격 증명 획득.

aws sts get-session-token \
  --duration-seconds 3600 \
  --serial-number "arn:aws:iam::123456789012:mfa/user" \
  --token-code "123456"

GetCallerIdentity

"내가 누구인가" 확인. 디버깅 1순위.

aws sts get-caller-identity
# {"UserId": "AIDAXXXX", "Account": "123456789012", "Arn": "arn:aws:iam::123456789012:user/johndoe"}

DecodeAuthorizationMessage

Access Denied 오류 메시지 해독.

aws sts decode-authorization-message \
  --encoded-message "<암호화된 문자열>"

MFA 강제 적용

중요 작업에 MFA 의무화.

{
  "Effect": "Deny",
  "Action": "ec2:TerminateInstances",
  "Resource": "*",
  "Condition": {
    "BoolIfExists": {
      "aws:MultiFactorAuthPresent": "false"
    }
  }
}

MFA 코드 없이 EC2 종료 시도 → 자동 차단.

iam:PassRole — 권한 상승 차단

여기서 정말 중요한 시험 함정 — iam:PassRole 은 사용자가 AWS 서비스에 IAM 역할을 할당(전달) 하기 위한 권한이에요.

이 권한이 없으면, 권한 적은 사용자가 관리자 역할을 EC2에 붙여 권한 상승하는 보안 사고를 막습니다.

{
  "Effect": "Allow",
  "Action": ["iam:PassRole", "iam:GetRole"],
  "Resource": "arn:aws:iam::123456789012:role/LambdaExecutionRole"
}

특정 역할만 전달 가능하게 제한 — 권한 상승 차단의 표준 패턴. 시험에 매우 자주 등장.

Cognito — 외부 사용자 인증

AWS의 외부 사용자(웹·모바일 앱 사용자) 관리 서비스. 두 가지 풀이 있어요.

Cognito User Pool

사용자 가입·로그인 관리. 회사 비유 — 회원 데이터베이스 + 로그인 시스템.

특징:

  • 사용자 ID/비밀번호 저장
  • 소셜 로그인 통합 (Google, Facebook, Apple)
  • MFA·이메일/SMS 인증
  • API Gateway·ALB와 직접 통합 (인증 토큰)

Cognito Identity Pool

AWS 리소스 임시 자격 증명 발급. 회사 비유 — 외부 손님에게 주는 임시 출입증.

특징:

  • 게스트 사용자(미인증) 지원
  • 인증된 사용자 → IAM 역할 매핑 → AWS 리소스 접근
  • User Pool과 연동 가능

차이 한 줄

여기서 정말 중요한 시험 함정 — 두 Pool의 역할이 다릅니다.

구분 User Pool Identity Pool
역할 회원 관리·로그인 AWS 리소스 액세스
결과 JWT 토큰 임시 AWS 자격 증명
비유 회원 DB + 로그인 임시 출입증 발급

User Pool로 누군지 확인 → Identity Pool로 AWS 권한 줌. 두 단계 조합이 일반적.

Directory Service — AD 통합

종류 설명
AWS Managed Microsoft AD 클라우드에 완전한 AD
AD Connector 온프레미스 AD를 AWS와 프록시 연결
Simple AD AWS 자체 AD 호환 디렉토리

기업이 기존 AD와 AWS를 통합할 때 사용. 시험에서 가끔 등장.

시험 직전 한 번 더 — 자주 헷갈리는 함정 모음

여기까지가 1편의 핵심입니다. 시험 직전 또는 실무에서 헷갈릴 때 다시 펼쳐 볼 수 있게 압축 노트로 마무리할게요.

  • IAM은 글로벌 서비스 (리전 종속 X)
  • 글로벌 4총사 = IAM · Route 53 · CloudFront · WAF
  • 사용자·그룹·역할 — 직원·부서·임시 출입증 비유
  • 그룹에 사용자만 들어감 — 역할·다른 그룹 X, 중첩 X
  • 루트 계정 일상 사용 절대 X — 봉인
  • IAM 정책 = JSON, Effect / Action / Resource / Condition 4요소
  • 정책 유형 — AWS 관리형 / 고객 관리형(권장) / 인라인
  • 정책 평가 — 명시적 Deny > 명시적 Allow > 암묵적 Deny
  • IAM + S3 버킷 정책 결합 — Deny 하나면 무조건 거부
  • STS 임시 자격 증명 = Access Key + Secret + Session Token
  • 유효 기간 15분~12시간 (기본 1시간)
  • AssumeRole = 교차 계정 / GetSessionToken = MFA / GetCallerIdentity = 누구냐 / DecodeAuthorizationMessage = 오류 해독
  • MFA 강제 — Condition + aws:MultiFactorAuthPresent
  • iam:PassRole = 역할을 서비스에 전달하는 권한
  • 없으면 권한 상승 차단 — 시험 단골
  • 특정 역할만 전달 가능하게 Resource 제한
  • Cognito User Pool = 회원 관리·로그인 (JWT)
  • Cognito Identity Pool = AWS 리소스 임시 자격 증명
  • 두 Pool 조합 — 인증 + 권한 부여
  • Directory Service — Managed AD / AD Connector / Simple AD

시리즈 다른 편

같은 시리즈의 다른 글들도 같은 톤으로 묶어 정리되어 있어요. 1편 보안 토대가 잡히면 2~12편의 모든 서비스에서 IAM 패턴이 반복됩니다.

공식 문서: AWS IAM 사용자 가이드DVA-C02 시험 가이드에서 더 깊이 갈 수 있어요.

다음 글(2편)에서는 컴퓨팅 서비스 전반 — EC2 인스턴스 타입·Lambda 트리거 모델·ECS/Fargate 컨테이너·Elastic Beanstalk PaaS까지 풀어 갑니다.

※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

답글 남기기

error: Content is protected !!