Programming

[AWS, Certified Developer Associate] Cognito - User Pools, Identity Pools

Amazon Cognito

  • 사용자에게 자격 증명을 부여해 웹, 모바일 애플리케이션과 상호작용 할 수 있도록 하는 것
  • 두가지 하위 서비스 존재
  • Cognito User Pools
    • 앱 사용자를 위한 로그인 기능 제공
    • API Gateway & ALB와 통합
  • Cognito Identity Pools (Federated Identity)
    • 앱에 등록된 사용자가 AWS 리소스에 바로 액세스 가능하도록 임시 AWS 자격 증명 부여
    • 사용자 풀과 통합
  • vs IAM : Cognito는 AWS 외부의 웹/모바일 애플리케이션 사용자를 위한 것 (수백만 사용자, 모바일 사용자, SAML 인증)

 

 

Cognito - User Pools

  • 웹 / 모바일 애플리케이션 사용자에 대한 서버리스 데이터베이스를 생성할 수 있는 방법
  • 단순 로그인 : 유저이름(or 이메일) + 패스워드 조합으로 애플리케이션 접속 가능
  • 비밀번호 변경 가능 / 이메일 및 전화번호 인증 가능 / MFA 지원 / Facebook, Google, SAML 등으로 인증 가능 (연합 인증)
  • 개인정보 유출 시 사용자 차단 기능 제공
  • 로그인 시 JWT 제공
  • 자체 내부 사용자 db를 가짐

 

 

 

Cognito - Identity Pools (Federated Identities)

  • 앱에 등록된 사용자가 AWS 리소스에 바로 액세스 가능하도록 임시 AWS 자격 증명 부여
  • Public Provider를 통해 인증 가능 (Amazon, Facebook, Google, Apple..)
  • User Pools를 통해 인증 가능
  • OpenID Connect Provider & SAML Identity Providers를 통해 인증 가능
  • Developer Authenticated Identites (커스텀 로그인 서버)를 통해 인증 가능
  • 인증되지 않은 게스트 사용자에게도 가능
  • 권한을 받은 사용자는 SDK를 통한 API 콜 | Gateway를 통해 AWS 액세스 가능
  • 이러한 권한 정책은 STS를 거쳐 획득
  • 정책 변수를 통해 특정 AWS 서비스에 접근할 수 있는 권한 설정 가능

 

 

 

Cognito - User Pools vs Identity Pools

  • User Pools
    • 인증, 자격 증명 인증에 사용
    • 웹 / 모바일 애플리케이션 사용자를 위한 db
    • 연합 로그인 허용
    • 인증에 필요한 호스팅 UI 사용자 지정 가능 (로고 등)
    • 인증 흐름에서 사전 / 사후 방식으로 람다와 통합 가능
  • Identity Pools
    • 권한부여, 액세스 관리에 사용
    • AWS 환경에 액세스 권한 부여
    • 게스트 사용자 (미인증) 에 대한 권한 부여 가능
  • CUP + CIP = 인증 + 인가

 

 


Reference

Udemy - AWS Certified Developer Associate 시험 합격을 위한 모든 것!