[AWS] Amazon Cognito

gyeol·2025년 11월 11일

AWS

목록 보기
16/20
post-thumbnail

Amazon Cognito

AWS Cognito는 웹 및 모바일 앱에 대한 인증과 권한 부여, 사용자 관리를 제공하고 기존의 아이디, 패스워드 방식 이외에도 소셜 로그인 기능을 제공하는 서비스이다.
Cognito는 user poolidentity pool로 구성되어 있는데 이 둘을 조합하거나 각각 별개로 사용할 수 있다.

  • user pool : 사용자의 가입과 로그인을 제공하는 사용자 저장소
  • identity pool : 사용자 풀에 저장된 정보를 바탕으로 로그인 또는 회원가입에 성공한 사용자에게 AWS 인프라의 여러 서비스에 대한 권한을 부여할 수 있는 서비스

User Pool

사용자 풀은 사용자에 대한 정보를 가지고 있는 저장소와 같은 역할을 한다.
성공적으로 사용자 인증 과정이 끝나면 Cognito는 JSON 형식의 웹 토큰을 발행하며, 이 토큰을 사용해 특정 API에 대한 접근 보안 등 자격 증명을 수행하거나 AWS의 자격 증명으로 교환한다.

  • 사용자 디렉터리 역할을 하는 핵심 요소
  • 회원가입, 로그인, 비밀번호 재설정 등의 기능 제공
  • SNS 로그인 연동 지원
  • JWT 형식의 Access Token, ID Token, Refresh Token 발급
예시)
Client → Cognito User Pool → JWT Token 발급 → API Gateway / App Backend

Identity Pool

자격 증명 풀은 특정 사용자의 고유한 자격 증명을 만들고 사용자에게 AWS 인프라에 대한 접근 권한을 부여할 수 있다.
자격 증명 풀을 이용하게 되면 다른 AWS 서비스에 직접 접근하거나 API Gateway를 통해 서비스에 접근하도록 정의하는 권한을 가진 임시 AWS 자격 증명을 생성할 수 있다.

  • AWS 리소스 접근을 위한 임시 자격 증명 발급
  • User Pool, SNS, SAML 등 다양한 인증 제공자 통합 가능
  • 로그인한 사용자가 S3, Dynamo DB 등 AWS 리소스에 접근할 수 있도록 권한 부여
예시)
Cognito Identity Pool → AWS STS → Temporary AWS Credentials → S3, DynamoDB 접근

활용 사례

1. 사용자 풀로 인증

  • 사용자는 사용자 풀을 통해 가입하거나 타사 ID 제공자를 통해 로그인 가능
  • 인증이 성공되면 사용자 풀에서 발급하는 토큰 받음
  • 이후 이 토큰을 활용해 백엔드 리소스 접근, AWS 자격 증명 획득 등 가능

2. 사용자 풀 토큰을 사용해 백엔드 리소스에 액세스

  • 사용자 풀 그룹을 생성해 권한을 관리하고 사용자 타입 구분 관리 가능
  • OAuth 2.0을 사용하면 사용자가 보호된 리소스에 액세스할 수 있는 자체 리소스 서버 제작 가능

✔️ 구현 시 고려사항

  • 사용자 풀 그룹 정보를 토큰에 포함시키고 백엔드에서 이 정보 확인해 권한 검증
  • 사용자 풀 + 백엔드 간 역할 분리 설계 고려

3. 사용자 풀로 API Gateway 및 Lambda를 사용하여 리소스 액세스

  • 서버리스 구조와의 연계로 사용자 풀 인증 → API Gateway → Lambda 흐름을 가지는 경우
  • API Gateway에서 사용자 풀 토큰을 검증한 뒤, Lambda 함수 또는 자체 API로 요청을 전달해 리소스에 접근
  • 그룹 기반으로 IAM 역할을 매핑해 권한 제어 가능
  • 사용자가 속한 그룹이 ID 토큰에 포함되고 이 그룹을 통해 IAM 역할이나 리소스 접근 연결 가능

✔️ 활용 포인트

  • 서버리스 백엔드를 구축 중이라면 Cognito + API Gateway + Lambda로 구성하면 비교적 빠르게 구축 가능
  • 사용자 풀 그룹을 활용해 역할 기반 접근 제어 (RBAC) 구현 추천

4. 사용자 풀 및 자격 증명 풀을 사용해 AWS 서비스에 액세스

  • 인증 성공 후 사용자 풀에서 토큰을 받고, 그 토큰을 자격 증명 풀로 전달하면 임시 AWS 자격 증명을 받아 AWS 서비스에 직접 접근 가능
  • 사용자 측 또는 앱에서 AWS 리소스에 직접 접근하는 구조 지원
  • 클라이언트에서 AWS 리소스를 직접 조작할 경우 IAM 역할 정책을 최소 권한 원칙으로 설계해야 함

5. 서드파티에 인증 및 자격 증명 풀로 AWS 서비스 액세스

  • 소셜 로그인등으로 로그인하고 그 이후 AWS 서비스에 접근하는 흐름을 말함
  • 자격 증명 풀은 외부 ID 제공자로 인증된 사용자의 토큰을 받아 AWS 자격 증명으로 교환 가능
  • 익명 게스트 사용자도 자격증명 풀을 통해 AWS 리소스에 접근 가능하기에 사용자 유형에 따라 설계 필요

6. Amazon Cognito를 사용해 AWS AppSync 리소스에 액세스

  • GraphQL API 등으로 구성된 AppSync에서 인증, 인가를 구현하는 시나리오
  • 사용자 풀 인증 토큰을 이용해 AppSync의 인증 방식 중 하나인 AMAZON_COGNITO_USER_POOLS 방식 사용 가능
  • 자격 증명 풀에서 받은 IAM 자격 증명을 이용해 AppSync API에 대한 AWS_IAM 방식 인증도 가능
profile
공부 기록 공간 '◡'

0개의 댓글