Search

Cognito

Cognito
애플리케이션에 대한 로그인 및 인증을 제공하는 기능
AWS 측에서 사용자의 회원가입로그인을 관리해 주는 서비스이다.
웹과 모바일 앱에 빠르고 사용자 가입, 로그인 및 엑세스 제어 기능
애플, 구글, 페이스북 등의 계정과 통합 가능

Cognito의 2가지 컴포넌트

유저 풀 (User Pool) 로그인 관리
유저 풀은 애플리케이션의 유저 인증관리(회원가입과 로그인)를 위한 컴포넌트이다.
사용자 가입, 로그인, 비밀번호 재설정 등의 기본 기능을 제공한다.
User Pool에서 자체적으로 관리하는 사용자뿐만 아니라, 외부 ID Provider(예: 구글)와 연동된 사용자 인증도 지원한다. 

유저 인증 방식

User Pool이 제공하는 인증 방식
로그인을 위한 커스터마이징 가능한 Web UI를 제공한다.
외부 ID Provider와 연동하는 인증 방식
소셜 로그인 (i.e. Facebook, Google, Apple, Amazon)
인증이 완료되면 토큰(*)이 발급되며, 애플리케이션 측에서 사용자의 식별이나 Amazon API Gateway에 대한 접근 제어 등에 사용될 수 있다.
또한, ID 풀과 결합하여 AWS의 다양한 서비스에 접근할 수 있는 일시적인 인증 정보를 얻을 수도 있다.
※ 발급되는 토큰은 "JWT(JSON Web Token)"이라 불리며, 이는 인증 정보를 JSON 형식으로 저장한다.
추가 기능
다단계 인증(MFA) : 보안 강화를 위해 MFA를 활성화하면, 로그인 시 추가적인 인증 단계를 요구할 수 있다.
사용자 속성 관리 : 사용자 이름, 이메일, 전화번호 등 사용자 속성을 관리할 수 있다.
ID 풀 (Identity Pool): 로그인 후에 AWS 서비스 접근 관리
ID 풀은 로그인 인증된 사용자에 대한 허가를 수행한다.
ID 풀을 사용하면 유저가 로그인한 후 AWS 서비스에 액세스할 수 있는 임시 자격 증명을 발급받을 수 있다.
이를 통해 S3와 DynamoDB같은 AWS 서비스에 접근 할 수 있다.
(인증 시의 속성 정보에 따라 사전에 정의된 IAM Role이 할당되며, 이 IAM Role에 부여된 권한에 따라 AWS의 다양한 서비스에 접근할 수 있는 일시적인 임시 자격 증명이 발급된다.)
또한, ID 풀 자체에도 외부 ID Provider와 연동된 인증 기능이 구현되어 있어 유저 풀을 사용하지 않고 ID 풀만으로 인증을 구현할 수 있다.

다양한 인증 유저를 지원

Cognito 유저 풀 : 유저 풀에서 직접 사용자 인증
연동된 신원 제공자 : Facebook, Google, Amazon, Apple 등의 소셜 로그인
기업 신원 제공자 : SAML 2.0을 지원하는 기업 디렉터리
익명 인증 : 인증 없이도 제한된 액세스를 허용

주요 기능

IAM과 연동 : User Group에 따라 다른 IAM Role을 할당하여 AWS 리소스에 대한 액세스를 제어할 수 있다.
연합 인증 : 유저 풀이 아닌 다른 인증 제공자를 통해 인증된 사용자도 지원한다.
익명 인증 : 로그인하지 않은 사용자도 제한된 리소스에 접근할 수 있도록 할 수 있다.

Adaptive Authentication - 평소와 다른 로그인 감지 ⇨ MFA 인증 요구

Cognito의Adaptive Authentication은 새로운 장치, 위치, 네트워크 정보 등 평소와 다른 상황에서 로그인을 감지하면 동적으로 보안 수준을 조정하는 기능이다. 
일반적으로는 비밀번호만으로 인증 설정을 해도, 다른 상황이 감지되면 MFA 인증 등을 요구할 수 있다.
예시) 평소와 다른 IP 주소에서 로그인하려고 할 때 MFA 인증을 요구하도록 설정