SAABlog
보안고급

AWS Identity Federation: SAML, OIDC, Cognito 언제 무엇을 선택할까?

AWS Identity Federation의 SAML 2.0, OIDC, Cognito 방식을 비교하고 시나리오별 최적의 선택 기준을 알아봅니다.

PHILOLAMB-
Identity FederationSAMLOIDCCognitoSTS

관련 시험 도메인

  • Domain 1: Design Secure Architectures

핵심 요약 (BLUF)

Identity Federation은 외부 자격 증명(기업 AD, 소셜 로그인 등)으로 AWS 리소스에 접근하게 해줍니다. 기업 IdP(Active Directory) 연동은 SAML 2.0, 모바일/웹 앱 소셜 로그인은 Cognito, 다중 계정 SSO는 IAM Identity Center를 사용합니다.

시험 팁

시험 핵심: "기업 AD → SAML 2.0", "모바일/웹 소셜 로그인 → Cognito", "다중 AWS 계정 SSO → IAM Identity Center"

Identity Federation이란?

외부 ID 공급자(IdP)에서 인증된 사용자가 별도의 IAM 사용자 없이 AWS 리소스에 접근할 수 있게 하는 메커니즘입니다.

기존 방식 (비추천):
외부 사용자마다 IAM 사용자 생성 → 자격 증명 관리 부담

Federation 방식 (추천):
외부 IdP 인증 → STS 임시 자격 증명 발급 → AWS 리소스 접근

왜 Federation을 사용해야 할까?

이유설명
보안 강화IAM 사용자/장기 자격 증명 불필요
중앙 관리기존 IdP(AD, Okta 등)에서 사용자 관리
임시 자격 증명STS로 시간 제한된 토큰 발급
규정 준수기업 보안 정책 일관 적용

Federation 유형 비교

유형프로토콜사용 사례STS API
SAML 2.0SAML기업 IdP(AD) → AWS 콘솔/APIAssumeRoleWithSAML
Web Identity (OIDC)OIDC모바일/웹 앱 소셜 로그인AssumeRoleWithWebIdentity
CognitoOIDC/SAML모바일/웹 앱 (권장)Cognito SDK
Custom Identity Broker커스텀SAML 미지원 IdPAssumeRole / GetFederationToken

SAML 2.0 Federation

기업의 Active Directory, Okta, ADFS 등 SAML 2.0을 지원하는 IdP와 AWS를 연동합니다.

작동 흐름

[사용자] → [기업 IdP (AD/ADFS)]
              │
              │  SAML Assertion 발급
              ▼
         [AWS STS]
              │  AssumeRoleWithSAML
              │  임시 자격 증명 반환
              ▼
         [AWS 리소스 접근]

AWS 콘솔 SSO 흐름

1. 사용자 → 기업 IdP 포털 로그인
2. IdP → SAML Assertion 생성
3. 브라우저 → AWS SSO 엔드포인트로 Assertion 전달
4. STS → AssumeRoleWithSAML → 임시 자격 증명
5. AWS 콘솔 리디렉션 (로그인 완료)

설정 요소

구성 요소설명
IAM Identity ProviderSAML IdP 메타데이터 등록
IAM RoleFederation용 역할 (신뢰 정책에 SAML 프로바이더 지정)
IdP 설정AWS를 서비스 프로바이더로 등록

시험 팁

SAML 2.0 Federation 키워드: "기업 Active Directory", "온프레미스 IdP", "AWS 콘솔 SSO", "ADFS" → SAML 2.0 선택

Web Identity Federation (OIDC)

Google, Facebook, Amazon 등 OIDC(OpenID Connect) 공급자로 인증된 사용자가 AWS에 접근합니다.

작동 흐름

[모바일 앱] → [소셜 IdP (Google/Facebook)]
                    │
                    │  ID Token 발급 (OIDC)
                    ▼
               [AWS STS]
                    │  AssumeRoleWithWebIdentity
                    │  임시 자격 증명 반환
                    ▼
               [S3, DynamoDB 등]

직접 사용 vs Cognito 사용

항목직접 STS 호출Cognito 사용 (권장)
APIAssumeRoleWithWebIdentityCognito SDK
IdP 관리직접 처리Cognito가 중개
익명 접근불가가능 (Unauthenticated)
다중 IdP 통합복잡간편

시험 팁

AWS 권장: Web Identity Federation은 직접 STS를 호출하지 말고 Amazon Cognito를 사용하세요.

Amazon Cognito를 이용한 Federation

Cognito 구성 요소

┌──────────────────────────────────────────┐
│            Amazon Cognito                 │
│                                           │
│  ┌─────────────┐   ┌──────────────────┐  │
│  │ User Pool   │   │ Identity Pool    │  │
│  │ (인증)      │   │ (권한 부여)       │  │
│  │             │   │                  │  │
│  │ - 회원가입   │   │ - IAM 역할 매핑   │  │
│  │ - 로그인     │   │ - 임시 자격 증명  │  │
│  │ - JWT 발급   │   │ - 인증/비인증 역할│  │
│  └─────────────┘   └──────────────────┘  │
└──────────────────────────────────────────┘

User Pool vs Identity Pool

항목User PoolIdentity Pool
역할인증 (Authentication)권한 부여 (Authorization)
결과JWT 토큰 발급AWS 임시 자격 증명
IdP 연동Google, Facebook, SAMLUser Pool, 소셜 IdP
사용 사례로그인/회원가입AWS 리소스 직접 접근

전체 흐름

1. 사용자 → Cognito User Pool 로그인 (또는 소셜 IdP)
2. User Pool → JWT 토큰 발급
3. JWT → Cognito Identity Pool에 전달
4. Identity Pool → STS에서 임시 AWS 자격 증명 교환
5. 사용자 → S3, DynamoDB 등 직접 접근

시험 팁

User Pool = 인증(로그인), Identity Pool = AWS 자격 증명 발급. 이 구분은 시험에서 자주 출제됩니다.

Custom Identity Broker

SAML 2.0을 지원하지 않는 레거시 IdP를 사용할 때의 방법입니다.

[사용자] → [레거시 IdP]
               │
               ▼
      [Custom Identity Broker]  ← 직접 개발
               │
               │  AssumeRole 또는
               │  GetFederationToken 호출
               ▼
          [AWS STS] → 임시 자격 증명 반환
STS API용도
AssumeRole특정 IAM 역할의 임시 자격 증명
GetFederationToken커스텀 정책 기반 임시 자격 증명

시나리오별 선택 가이드

Federation 방식 선택:
        │
        ▼
기업 IdP(AD/Okta)로 AWS 콘솔 SSO?
        │
       Yes → 다중 AWS 계정? ─ Yes → [IAM Identity Center]
        │                    No  → [SAML 2.0]
        No
        │
        ▼
모바일/웹 앱 사용자 인증?
        │
       Yes → [Amazon Cognito] (권장)
        │
        No
        │
        ▼
SAML 미지원 레거시 IdP?
        │
       Yes → [Custom Identity Broker]

STS 주요 API 정리

API사용 시나리오
AssumeRole교차 계정 접근, EC2 역할
AssumeRoleWithSAMLSAML 2.0 Federation
AssumeRoleWithWebIdentityOIDC/소셜 IdP (Cognito 권장)
GetSessionTokenMFA 인증 시 임시 토큰
GetFederationTokenCustom Broker에서 사용

SAA-C03 시험 출제 포인트

  1. SAML 2.0: "기업 AD/ADFS → AWS 콘솔 SSO = SAML 2.0"
  2. Cognito 구분: "User Pool = 인증, Identity Pool = AWS 자격 증명"
  3. Web Identity 권장: "소셜 로그인 → Cognito 사용 (STS 직접 호출 비추천)"
  4. 임시 자격 증명: "Federation은 항상 STS를 통한 임시 자격 증명"
  5. Custom Broker: "SAML 미지원 IdP → Custom Identity Broker"

시험 팁

시험 문제 예시: "온프레미스 Active Directory 사용자가 AWS 콘솔에 SSO로 접근해야 합니다. 어떻게 구성할까요?" → 정답: SAML 2.0 Federation (ADFS → AssumeRoleWithSAML)

자주 묻는 질문 (FAQ)

Q: SAML 2.0과 OIDC의 차이는 무엇인가요?

SAML 2.0은 XML 기반으로 주로 기업 환경(AD, ADFS)에서 사용됩니다. OIDC는 JSON/JWT 기반으로 모바일/웹 앱의 소셜 로그인에 적합합니다.

Q: Cognito User Pool만 사용하면 AWS 리소스에 접근할 수 있나요?

아니요. User Pool은 JWT 토큰만 발급합니다. AWS 리소스(S3, DynamoDB 등)에 직접 접근하려면 Identity Pool을 통해 임시 AWS 자격 증명을 받아야 합니다.

Q: Federation으로 발급된 임시 자격 증명의 유효 기간은?

기본 1시간이며, AssumeRole은 최대 12시간, GetFederationToken은 최대 36시간까지 설정 가능합니다.

Q: IAM Identity Center와 SAML 2.0 직접 연동의 차이는?

IAM Identity Center는 여러 AWS 계정에 대한 SSO를 중앙 관리합니다. 단일 계정이면 SAML 직접 연동이 간단하지만, 다중 계정 환경이면 IAM Identity Center가 권장됩니다.

Q: Cognito는 SAML도 지원하나요?

네. Cognito User Pool은 SAML 2.0과 OIDC IdP를 모두 연동할 수 있습니다. 기업 사용자(SAML)와 소셜 로그인 사용자(OIDC)를 하나의 User Pool에서 통합 관리할 수 있습니다.

관련 글

참고 자료