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 인증을 요구하도록 설정







