AWSSecworkshop IAM 두번째 workshop에서 AWS Congnito 내용이 나오기에, 미리 알아보자
- AWS Identity: Using Amazon Cognito for serverless consumer apps
AWS Cognito란?
- 쉽게 말하면 AWS 서비스를 외부 웹(Facebook, Apple 등)의 기타 서비스와 회원가입 또는 로그인을 연동하는 서비스이다.
- NAC <> 기타 다른 보안솔루션이 User Login ID(Token)을 통해 사용자 로그인을 연동하는 것과 같은 개념이다.
AWS Cognito는 크게 1)사용자 Pool 2) 자격 증명 Pool 2가지로 구성된다.
1) AWS Cognito 사용자 Pool이란?
- 말 그대로 AWS에 로그인 또는 사용자 관리 할 수 있는 사용자 정보를 담고있는 DB라고 보면 된다.
예) A 라는 사용자가 Facebook을 통해 AWS에 로그인 시도를 했는데, 해당 로그인 인증을 해줄것인가? 이다.
- 기타 다른 서비스에서 AWS Cognito를 통해 로그인을 하게 되면, 최종적으로 Cognito Token을 받게 된다.
개발자는 필요에 따라 해당 Token을 AWS API Gateway 등으로 보내 서버 또는 서비스에 대한 권한을 받을 수 있다.
2) AWS Cognito 자격 증명 Pool이란?
- AWS 서버 또느 서비스에 Access 할 수 있는 임시 자격 증명을 제공하는 서비스이다.
예) A 사용자의 Cognito Token이 유효할 때, S3 Bucket에 Access 할 수 있는 권한을 부여할 것인가? 이다.
전체적인 AWS Cognito 서비스의 사용 예시는 다음과 같다.
1. 서비스 제공자가 AWS S3를 통해 웹페이지 서비스(가입/인증 등)을 호스팅하고 있는 상태입니다.
2. 사용자가 해당 S3에 접속하여, 회원가입을 합니다.
3. Cognito에서 회원가입에 필요한 이메일 인증 등의 코드를 발송합니다.
4. 사용자가 인증 받은 코드를 입력하고, 로그인을 하면 Cognito Token을 받습니다.
5. 사용자는 웹 로그인 이후, 다음 페이지 호출(S3 Bucket 호출) 또는 기타 API 서비스 이용을 위해
AWS API Gateway에 Cognito Token을 헤더에 담아서 호출합니다.
6. AWS API Gateway에서 해당 Token의 유효성을 Cognito에 질의합니다.
7. Cognito는 해당 Token의 유효성을 응답해줍니다.
8. Cognito에서 전달받은 유효성에 따라 API 서비스를 호출하거나 거부합니다.
가장 중요한것은 회원가입/로그인 시 Cognito 사용자 인증 Pool에서 Cognito Token을 받고
S3 또는 AWS 서비스 이용 시, 해당 Token의 유효성을 점검하여 서비스를 제공하는 것이다.
'기술 이모저모 > [AWS] Workshop' 카테고리의 다른 글
[Secworkshop] Using AWS Cognito (0) | 2022.02.02 |
---|---|
[AWS][API Gateway][Lambda] API 서비스 이론만 알아보기 (0) | 2022.02.01 |
[AWS][IAM] IAM 계정 로그인 (0) | 2022.01.30 |
[AWS][IAM] IAM 사용자 계정 생성 방법 (0) | 2022.01.30 |
[Secworkshop] Access Delegation(권한 위임) (0) | 2022.01.25 |