발자취
[클라우드 보안] #02. Amazon Cognito 본문
본 게시글은 aws 공식 사이트의 문서를 필자가 이해하기 쉽게 정리한 글입니다.
#01. Amazon Cognito
1. Amazon Cognito란?

AWS 클라우드 보안 서비스 중 Identity & Access Management(ID 및 액세스 관리) 서비스의 리소스 중 하나이다.
안전하고 확장 가능한 고객 ID 및 액세스 관리를 구현하는 서비스다.
쉽게 말해, 웹 및 모바일 애플리케이션에서 사용자의 로그인, 회원가입 및 접근 제어를 간편하게 관리하도록 돕는 서비스다.
2. Amazon Cognito의 주요 구성 요소
Amazon Cognito는 사용자 풀(User Pools)와 자격 증명 풀(Identity Pools)로 구성되어 있는데,
이 두 가지 요소는 독립적으로 사용하거나, 조합해서 함께 사용할 수 있다.
각 구성 요소들에 대해 자세히 알아보도록 하겠다.
1) 사용자 풀 (User Pools)
사용자의 회원 가입 및 로그인을 제공하는 사용자 디렉터리이다. 즉, 사용자 '인증' 기능을 지원한다.
사용자 풀은 통합 없이 독립적으로 JWT(인증된 JSON 웹 토큰)를 애플리케이션, 웹 서버 또는 API에 직접 발급할 수 있다.
사용자 풀은 자체 사용자 디렉터리로서, 관리자가 사용자 생성 및 관리, 인증을 할 수 있다.
SAML 2.0 및 OIDC IDP와의 SSO(Single Sign On)을 제공하며, OAuth 2.0 ID 스토어인 Amazon, Google, Apple 및 Facebook과의 SSO를 지원한다.
- SSO: 한 번의 사용자 인증으로 다수의 애플리케이션 및 웹사이트에 대한 사용자 로그인 허용하는 인증 솔루션
📌 사용자 풀 인증 흐름

(위 그림은 AWS 공식 사이트의 그림을 참고하여 내용을 이해하기 쉽게 재구성했습니다.)
* 제3자 ID 제공자 리디렉션 (선택 사항)
: 사용자가 소셜 미디어 계정(예: Facebook, Google 등)을 통하여 로그인하려는 경우,
Cognito는 제3자 ID 제공자로 리디렉션하여 해당 서비스에서 로그인을 처리함
2) 자격 증명 풀 (Identity Pools)
특정 사용자의 고유한 자격 증명을 만들어, 사용자에게 AWS 자원에 대한 접근 권한을 부여한다.
애플리케이션이 사용자에게 AWS 서비스에 대한 임시 인증 정보를 제공할 수 있도록 한다.
자격 증명 풀은 사용자 풀과의 통합 없이도 독립적으로 동작할 수 있다.
신뢰할 수 있는 ID 제공자(예: 사용자 풀 또는 SAML 2.0 서비스)로 사용자 인증을 할 수 있으며,
역할 기반 및 속성 기반 접근 제어를 사용하여 사용자의 AWS 자원 접근 권한을 관리한다.
📌 자격 증명 풀 인증 흐름

* 개발자 권한 부여, 토큰 또는 어설션 제공
: 제3자 ID 제공자 또는 Amazon Cognito 사용자 풀을 통해 사용자를 인증한다.
인증 후, 자격 증명 풀은 애플리케이션에 토큰 또는 어설션을 제공한다.
3. Amazon Cognito의 기능
1) 사용자 풀 (User Pools)
- 사용자 디렉토리: Amazon Cognito 사용자 풀은 사용자가 웹 또는 모바일 앱에 로그인할 수 있는 사용자 디렉토리
- 로컬 및 연합 사용자: 로컬 사용자*와 제3자 ID 제공자*를 통한 연합 사용자를 지원함
- 로컬 사용자: 직접 가입하거나 생성한 사용자
- 제3자 ID 제공자: Google, Facebook 등
- JWT 발급: 사용자 풀은 제3자 ID 제공자로부터 받은 토큰을 수락하고, 사용자 속성을 포함한 JWT를 발급함
- 독립 ID 제공자 역할: 사용자 풀은 자체적으로 ID 제공자로 작동할 수 있으며, OIDC 표준을 사용하여 JWT를 생성함
- 다양한 기능:
- 사용자 인증, 권한 부여, 관리 API 제공
- 다단계 인증(MFA) 지원(TOTP, SMS)
- 사용자 계정 보호
- 커스텀 다단계 인증 흐름 생성
- 다른 디렉토리의 사용자 마이그레이션
- 소비자 및 기업 ID 제공자와의 연결
2) 자격 증명 풀 (Identity Pools)
- 고유 식별자: 자격 증명 풀은 사용자 또는 게스트에게 고유 식별자를 할당하고 임시 AWS 자격 증명을 부여함
- 인증 방식: SAML 2.0, OIDC, OAuth 2.0 소셜 ID 제공자의 인증 증명을 수락하여 자격 증명 풀에 사용자를 연결함
- 인증 없는 접근: 자격 증명 풀은 사용자 인증 없이도 AWS 접근 권한을 부여할 수 있음
- 임시 자격 증명: 자격 증명 풀은 AWS STS로부터 임시 세션 자격 증명을 가져옴
- IAM 정책 통합:
- 역할 기반 접근 제어: 자격 증명 풀은 사용자의 속성을 기반으로 IAM 역할을 선택하고, 해당 역할에 맞는 IAM 정책을 적용함
- 속성 기반 접근 제어: 자격 증명 풀은 사용자의 속성을 IAM 세션 태그로 매핑하고, 리소스 접근 권한을 제어함
4. 사용자 풀과 자격 증명 풀의 통합 사용
- 사용자가 사용자 풀을 통해 로그인한 후, OAuth 2.0 토큰을 받는다.
- 애플리케이션이 사용자 풀 토큰을 자격 증명 풀로 교환하여 임시 AWS 자격 증명을 받는다.
- 애플리케이션이 자격 증명 세션을 사용자에게 할당하고, S3 및 DynamoDB와 같은 AWS 서비스에 대한 권한 있는 접근을 제공한다.
참고한 게시글
https://docs.aws.amazon.com/ko_kr/cognito/latest/developerguide/what-is-amazon-cognito.html
Amazon Cognito란 무엇입니까? - Amazon Cognito
이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.
docs.aws.amazon.com
쉽게 풀어쓴 AWS Cognito - 기초 이론
본 글에서 등장하는 용어인 '앱'은 개발자가 만들고자 하는 서비스를 의미하며, '서비스'는 AWS에서 제공하는 서비스를 의미합니다. 개요 AWS Cognito는 웹 및 모바일 앱에 대한 인증과 권한 부여 그
velog.io
https://velog.io/@yoookm/Cognito
Cognito 알아보기
AWS 인증을 위한 Amazon Cognito 입문기
velog.io
'스터디 > 클라우드 보안' 카테고리의 다른 글
| [클라우드 보안 #06. AWS Direct Connect (0) | 2024.08.13 |
|---|---|
| [클라우드 보안] #05. AWS Site-to-Site VPN (0) | 2024.08.13 |
| [클라우드 보안] #04. Amazon VPC (0) | 2024.08.13 |
| [클라우드 보안] #03. AWS 관리 콘솔 (AWS Management Console) (0) | 2024.07.12 |
| [클라우드 보안] #01. 클라우드 보안이란? (0) | 2024.07.11 |