◇ 공부 기록용으로 작성하였으니 틀린점, 피드백 주시면 감사하겠습니다 ◇
Amazon Cognito
Cognito는 AWS 측에서 사용자의 회원가입과 로그인을 관리해 주는 서비스이다.
예를 들어, 애플리케이션에서 사용자는 Cognito를 통해 회원가입하고 로그인할 수 있다.
사용자의 로그인 데이터는 Cognito를 통해 안전하게 관리할 수 있다.
또한, 소셜 로그인(외부 ID Provider: Facebook, Google 등)도 쉽게 설정할 수 있다.
Cognito의 2가지 컴포넌트
Cognito는 크게 2가지로 나눠진다.
- 유저 풀 (User Pool)
- ID 풀 (Identity Pool)
1. 유저 풀 (User Pool): 로그인 관리
유저 풀은 애플리케이션의 유저 인증과 관리(회원가입과 로그인)를 위한 컴포넌트이다.
사용자 가입, 로그인, 비밀번호 재설정 등의 기본 기능을 제공한다.
User Pool에서 자체적으로 관리하는 사용자뿐만 아니라, 외부 ID Provider(예: 구글)와 연동된 사용자 인증도 지원한다.
유저 인증 방식은 2가지 있다.
- User Pool이 제공하는 인증 방식
- 로그인을 위한 커스터마이징 가능한 Web UI를 제공한다.
- 외부 ID Provider와 연동하는 인증 방식
- 소셜 로그인 (i.e. Facebook, Google, Apple, Amazon)
인증이 완료되면 토큰(*)이 발급되며, 애플리케이션 측에서 사용자의 식별이나 Amazon API Gateway에 대한 접근 제어 등에 사용될 수 있다.
또한, ID 풀과 결합하여 AWS의 다양한 서비스에 접근할 수 있는 일시적인 인증 정보를 얻을 수도 있다.
※ 발급되는 토큰은 "JWT(JSON Web Token)"이라 불리며, 이는 인증 정보를 JSON 형식으로 저장한다.
추가 기능:
- 다단계 인증(MFA): 보안 강화를 위해 MFA를 활성화하면, 로그인 시 추가적인 인증 단계를 요구할 수 있다.
- 사용자 속성 관리: 사용자 이름, 이메일, 전화번호 등 사용자 속성을 관리할 수 있다.
2. 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 인증을 요구하도록 설정
🤔 SAA-C03 문제
어떤 기업이 Amazon Cognito를 사용하여 사용자 관리 및 인증을 수행하는 모바일 애플리케이션을 개발하고 있습니다. 이 애플리케이션은 인증이 성공하면 사용자가 Amazon DynamoDB에 저장된 개인 정보를 조회하고 업데이트할 수 있도록 설계되었습니다. 그러나 사내 테스트 결과, 로그인은 성공하지만 DynamoDB 데이터에 접근할 수 없다는 보고가 있었습니다. 사용자가 DynamoDB 데이터에 접근할 수 있도록 적절한 권한을 설정해야 합니다. 이 문제를 해결하기 위한 가장 적절한 접근법은 무엇입니까?
- Cognito ID 풀에서 발행되는 일시적인 인증 정보의 근거가 되는 IAM Role에 DynamoDB에 대한 적절한 접근 권한이 부여되어 있는지 확인하고, 필요에 따라 접근 권한을 추가합니다.
- DynamoDB에 대한 적절한 접근 권한이 부여된 IAM 정책을 생성하고, Cognito에서 관리하는 사용자에게 이를 연결합니다.
- DynamoDB에 대한 적절한 접근 권한을 가진 IAM 사용자로 접근 키와 비밀 키를 생성하고, 이러한 키를 사용하여 접근하도록 애플리케이션 코드를 수정합니다.
- 개인 정보가 저장된 기존의 DynamoDB 테이블을 글로벌 테이블로 변환합니다.
정답
정답. 1번
Cognito ID 풀에서 발행되는 일시적인 인증 정보의 근거가 되는 IAM Role에 DynamoDB에 대한 적절한 접근 권한이 부여되어 있는지 확인하고, 필요에 따라 접근 권한을 추가합니다.
[Amazon Cognito]
Amazon Cognito는 모바일 애플리케이션 및 웹 애플리케이션을 위한 사용자 인증 기능을 제공하는 서비스이다.
새로운 사용자 등록을 하거나, 외부 ID 제공자(Facebook, Google 등)와 연동한 사용자 인증 및 사용자 관리를 할 수 있다.
Amazon Cognito를 구성하는 주요 컴포넌트에는 "유저 풀(User Pool)"과 "ID 풀(ID Pool)"이 있다.
유저 풀은 사용자의 인증 및 관리를 담당하는 컴포넌트로, 사용자 가입 및 로그인, 비밀번호 재설정 등의 기본 기능을 제공한다
ID 풀은 인증된 사용자에 대한 허가 관리를 담당한다. 인증 시의 속성 정보에 따라, 사전에 정의된 IAM 역할이 할당되며, 이 IAM 역할에 부여된 권한을 기반으로 AWS의 각종 서비스에 접근할 수 있는 임시 인증 정보가 발급된다.
본 문제에서는 로그인이 성공했지만 DynamoDB에 접근할 수 없다는 점에서, ID 풀에서 발급된 임시 인증 정보에 적절한 권한이 포함되지 않았을 가능성이 있다고 생각할 수 있다.
오답
2번. DynamoDB에 대한 적절한 접근 권한이 부여된 IAM Policy을 생성하고, Cognito에서 관리하는 사용자에게 이를 연결합니다.
Cognito로 관리되는 사용자에게 직접 IAM Policy을 첨부할 수 없기 때문에 오답이다.
3번. DynamoDB에 대한 적절한 접근 권한을 가진 IAM 사용자로 접근 키와 비밀 키를 생성하고, 이러한 키를 사용하여 접근하도록 애플리케이션 코드를 수정합니다.
접근 키와 시크릿 키와 같은 인증 정보를 애플리케이션에 포함시키는 것은 보안 위험이 높아 권장되지 않는다.
4번. 개인 정보가 저장된 기존의 DynamoDB 테이블을 글로벌 테이블로 변환합니다.
DynamoDB 글로벌 테이블은 테이블을 여러 리전에서 운영할 수 있게 해주는 서비스로, 접근 권한 설정과는 직접적인 관련이 없다
'클라우드(AWS)' 카테고리의 다른 글
[AWS] Global Accelerator란? 쉽게 개념 및 특징 정리 (0) | 2024.06.23 |
---|---|
[AWS] Batch란? 쉽게 개념 정리 (0) | 2024.06.21 |
[AWS] Amazon EMR란? 쉽게 특징 정리 (빅데이터 처리, Hadoop, Spark, HDFS, EMRFS) (0) | 2024.06.18 |
[AWS] Snow Family, DataSync, Storage Gateway의 차이점 쉽게 정리 (feat. S3 sync 명령어) (1) | 2024.06.17 |
[AWS] Amazon MQ란? 쉽게 개념 정리 (Message Broker, 메시지 브로커, ActiveMQ, RabbitMQ) (0) | 2024.06.14 |