본문 바로가기

자격증/AWS Certified Security - Specialty

[AWS SCS] Cognito Identity Pools

728x90
반응형

AWS Cognito Identity Pools (연합된 ID)

개요

AWS Cognito Identity Pools, 또는 연합된 ID(Federated Identities)는 AWS 리소스(DynamoDB, S3 등)에 접근하려는 웹 및 모바일 애플리케이션 사용자들에게 임시 AWS 자격증명을 제공하는 서비스입니다. 이 서비스는 Cognito User Pools와는 완전히 다른 역할을 하지만, 같은 Cognito라는 이름 아래 포함되어 있어 혼동될 수 있습니다.

동작 방식

외부 애플리케이션 사용자들이 AWS 리소스에 접근하기 위해서는 임시 AWS 자격증명이 필요합니다. 다음은 그 과정을 단계별로 설명합니다.

1. 로그인 및 토큰 획득

사용자는 아래 제공되는 다양한 로그인 옵션을 통해 인증을 진행합니다.

  • 소셜 로그인: Google, Facebook, Amazon, Apple 등
  • Cognito User Pools: 자체 관리 사용자 풀을 통한 인증
  • SAML 또는 OpenID Connect: 엔터프라이즈 환경이나 커스텀 ID 제공자
  • Developer Authenticated Identities: 개발자가 직접 구축한 로그인 시스템

로그인 성공 시 토큰이 발급됩니다.

2. 토큰 교환

사용자는 발급받은 토큰을 Cognito Identity Pools에 전달합니다.

  • Identity Pools는 로그인 정보를 검증합니다.
  • 검증이 완료되면 **AWS STS(Security Token Service)**를 통해 임시 AWS 자격증명을 생성합니다.
  • 이 자격증명은 사용자에게 반환되며, 애플리케이션은 이를 통해 AWS 리소스에 접근할 수 있습니다.

3. 자격증명을 사용한 AWS 리소스 접근

임시 AWS 자격증명을 받은 사용자는 API Gateway, SDK 등을 통해 DynamoDB, S3와 같은 AWS 서비스에 직접 접근할 수 있습니다.


Identity Pools와 User Pools의 차이점

  • Cognito User Pools는 사용자 인증(로그인/회원가입)을 관리하는 인증 서비스입니다.
  • Cognito Identity Pools는 AWS 리소스에 접근하기 위한 임시 자격증명 발급 서비스입니다.
  • 통합 사용 가능: Identity Pools는 User Pools의 토큰을 활용해 AWS 자격증명을 제공할 수 있습니다.

권한 및 정책 관리

Cognito Identity Pools는 사용자의 IAM 역할(Role)을 지정하고, 이를 기반으로 AWS 자격증명을 제공합니다.

1. 게스트 사용자 관리

게스트 사용자에게 제한된 권한을 부여할 수 있습니다.
예: 특정 S3 버킷의 getObject 작업만 허용.

{
  "Effect": "Allow",
  "Action": "s3:GetObject",
  "Resource": "arn:aws:s3:::example-bucket/*"
}

 

2. 인증된 사용자 관리

인증된 사용자는 고유 ID를 기반으로 세분화된 접근 권한을 부여받습니다.
예: 각 사용자가 자신의 데이터에만 접근하도록 제한.

 

{
  "Effect": "Allow",
  "Action": "s3:*",
  "Resource": "arn:aws:s3:::example-bucket/${cognito-identity.amazonaws.com:sub}/*"
}

 

위 정책은 사용자 ID(예: cognito-identity.amazonaws.com:sub)를 활용해 특정 S3 버킷의 사용자 데이터에만 접근하도록 설정합니다.


실사용 예제

  • S3 버킷 접근 제어: 게스트 사용자에게 공개 리소스를 제공하고, 인증된 사용자에게 개인 데이터를 보호합니다.
  • DynamoDB 데이터 분리: 사용자 ID를 파티션 키로 사용하여 개별 데이터 접근을 제어합니다.

마무리

AWS Cognito Identity Pools는 사용자의 인증 토큰을 AWS 자격증명으로 변환하여 AWS 리소스의 세분화된 접근 제어를 가능하게 합니다. 이를 통해 서버리스 환경에서 확장 가능한 사용자 관리를 구현할 수 있습니다.

728x90
반응형