Amazon Cognito
- 사용자에게 자격 증명을 부여해 웹, 모바일 애플리케이션과 상호작용 할 수 있도록 하는 것
- 두가지 하위 서비스 존재
- Cognito User Pools
- 앱 사용자를 위한 로그인 기능 제공
- API Gateway & ALB와 통합
- Cognito Identity Pools (Federated Identity)
- 앱에 등록된 사용자가 AWS 리소스에 바로 액세스 가능하도록 임시 AWS 자격 증명 부여
- 사용자 풀과 통합
- vs IAM : Cognito는 AWS 외부의 웹/모바일 애플리케이션 사용자를 위한 것 (수백만 사용자, 모바일 사용자, SAML 인증)
Cognito - User Pools
- 웹 / 모바일 애플리케이션 사용자에 대한 서버리스 데이터베이스를 생성할 수 있는 방법
- 단순 로그인 : 유저이름(or 이메일) + 패스워드 조합으로 애플리케이션 접속 가능
- 비밀번호 변경 가능 / 이메일 및 전화번호 인증 가능 / MFA 지원 / Facebook, Google, SAML 등으로 인증 가능 (연합 인증)
- 개인정보 유출 시 사용자 차단 기능 제공
- 로그인 시 JWT 제공
- 자체 내부 사용자 db를 가짐
Cognito - Identity Pools (Federated Identities)
- 앱에 등록된 사용자가 AWS 리소스에 바로 액세스 가능하도록 임시 AWS 자격 증명 부여
- Public Provider를 통해 인증 가능 (Amazon, Facebook, Google, Apple..)
- User Pools를 통해 인증 가능
- OpenID Connect Provider & SAML Identity Providers를 통해 인증 가능
- Developer Authenticated Identites (커스텀 로그인 서버)를 통해 인증 가능
- 인증되지 않은 게스트 사용자에게도 가능
- 권한을 받은 사용자는 SDK를 통한 API 콜 | Gateway를 통해 AWS 액세스 가능
- 이러한 권한 정책은 STS를 거쳐 획득
- 정책 변수를 통해 특정 AWS 서비스에 접근할 수 있는 권한 설정 가능
Cognito - User Pools vs Identity Pools
- User Pools
- 인증, 자격 증명 인증에 사용
- 웹 / 모바일 애플리케이션 사용자를 위한 db
- 연합 로그인 허용
- 인증에 필요한 호스팅 UI 사용자 지정 가능 (로고 등)
- 인증 흐름에서 사전 / 사후 방식으로 람다와 통합 가능
- Identity Pools
- 권한부여, 액세스 관리에 사용
- AWS 환경에 액세스 권한 부여
- 게스트 사용자 (미인증) 에 대한 권한 부여 가능
- CUP + CIP = 인증 + 인가
Reference