퍼블릭 클라우드 관련/AWS

AWS Cognito ID 풀 vs Cognito 사용자 풀

호레 2025. 10. 19. 20:10
반응형
{
  "AccessKeyId": "ASIAXXXXX",
  "SecretAccessKey": "XXXXX",
  "SessionToken": "XXXX",
  "Expiration": "2025-10-17T12:00:00Z"
}

🧩 요약 한 줄로

구분역할한 줄 설명
사용자 풀 (User Pool) “로그인 시스템” 사용자의 ID(이메일·비밀번호, Google 로그인 등)를 관리하는 인증(Authentication) 기능
ID 풀 (Identity Pool) “권한 부여 시스템” 로그인한 사용자가 AWS 리소스(S3, DynamoDB 등)에 접근할 수 있게 권한 부여(Authorization) 해주는 기능

1️⃣ Cognito 사용자 풀 (User Pool)

“사용자가 누구인지 인증(Authenticate)하는 곳”

💡 기능

  • 사용자 계정을 직접 관리 (회원가입, 로그인, 비밀번호 재설정)
  • Google, Apple, Facebook, SAML, OIDC 같은 소셜/기업 IdP 연동 가능
  • JWT 토큰 (ID 토큰, Access 토큰, Refresh 토큰) 발급
  • Lambda 트리거(가입 전 검증, 로그인 후 후처리 등) 가능
  • MFA, CAPTCHA, 비밀번호 정책 등 내장

📘 예시

사용자가 로그인하면 Cognito가 이런 토큰을 줍니다:

{
  "id_token": "...",      // 사용자 프로필 정보 (이름, 이메일 등)
  "access_token": "...",  // API Gateway 등 접근 시 사용
  "refresh_token": "..."  // 세션 갱신용
}

 

2️⃣ Cognito ID 풀 (Identity Pool)

“인증된 사용자에게 AWS 리소스에 접근할 자격(Authorization)을 주는 곳”

💡 기능

  • AWS 자격 증명(AWS Temporary Credentials) 발급 (STS 기반)
  • 사용자 풀 / SAML / 소셜 로그인 / 익명 게스트 로그인 모두 연결 가능
  • IAM 역할과 연동되어, “어떤 AWS 리소스에 어떤 권한을 줄지” 제어
  • 주로 프론트엔드 앱에서 S3 업로드, DynamoDB 접근 등에 사용

⚙️ 예시

User Pool에서 로그인 성공 → ID Token 발급

Identity Pool이 ID Token을 받아서 → STS AssumeRoleWithWebIdentity 호출

사용자에게 아래 같은 임시 자격 증명 발급:

 

{
  "AccessKeyId": "ASIAXXXXX",
  "SecretAccessKey": "XXXXX",
  "SessionToken": "XXXX",
  "Expiration": "2025-10-17T12:00:00Z"
}

 

🔄 두 개를 같이 쓰는 이유

단계구성요소역할
Cognito User Pool 사용자 로그인 / 인증 수행 (ID Token 발급)
Cognito Identity Pool 해당 토큰으로 AWS 자격 증명 발급 (IAM Role 연결)
IAM 어떤 AWS 리소스(S3, DynamoDB 등)에 접근 가능한지 제어
[사용자] → 로그인 → [User Pool]
                 ↓
      (ID Token 발급)
                 ↓
         [Identity Pool] → IAM Role 매핑
                 ↓
       [AWS 서비스 접근 (S3 등)]

 

🔐 실무 예제

사용 사례필요한 구성
웹/모바일 앱 로그인만 (토큰 기반 인증) User Pool만 사용
로그인 후 S3 업로드, DynamoDB 접근 등 AWS API 직접 호출 User Pool + Identity Pool 같이 사용
익명 게스트가 임시로 S3에 접근 Identity Pool만 사용 (Unauthenticated role)

📋 비교표 정리

항목사용자 풀 (User Pool)ID 풀 (Identity Pool)
주요 목적 인증(Authentication) 권한 부여(Authorization)
생성되는 것 JWT 토큰 (ID, Access, Refresh) AWS 임시 자격 증명 (AccessKey, SecretKey, SessionToken)
주 대상 사용자 (사람) AWS 리소스 접근 권한
IAM 역할 사용
게스트 로그인 지원
예시 서비스 로그인, MFA, SSO S3 업로드, DynamoDB 접근

🎯 요약

상황사용 방법
앱 로그인/회원가입만 필요 User Pool만 사용
로그인 후 AWS 리소스 접근 필요 User Pool + Identity Pool 조합
인증 없이 임시 접근 허용 Identity Pool만 사용
반응형