BE 공부/AWS
AWS Credential과 Cognito
꼬질꼬질두부
2024. 12. 12. 16:25
1. AWS Credential
AWS Credential은 AWS 리소스에 대한 직접적인 인증을 제공합니다.
특징
- 구성 요소:
- Access Key ID
- Secret Access Key
- 사용 목적:
- AWS CLI, SDK, 또는 기타 AWS 서비스에 직접 액세스.
- 관리 위치:
- IAM (Identity and Access Management)에서 관리.
- 일반적으로 사용자별 또는 역할(role) 기반으로 발급.
- 인증 방식:
- AWS SDK 또는 CLI를 사용하여 요청 시 헤더에 자격 증명을 포함해 AWS 서비스와 통신.
- 보안 고려사항:
- 노출될 경우 심각한 보안 위험이 있으므로, 환경 변수, ~/.aws/credentials 파일, 또는 KMS를 사용하여 보호.
- 사용 사례:
- 서버 간 통신, 관리자 또는 백엔드 애플리케이션에서 AWS 리소스에 접근.
- Lambda 함수 또는 ECS Task가 실행되는 환경에서 역할(Role)을 사용하여 자동으로 자격 증명 제공.
장점
- 직접적이고 강력한 권한 관리.
- IAM 정책을 통해 상세한 권한 제어 가능.
단점
- 사용자 자격 증명 노출 위험.
- 비교적 복잡한 초기 설정(특히 권한 관리).
2. Cognito 인증
Cognito는 주로 애플리케이션 사용자 인증을 처리합니다.
특징
- 구성 요소:
- Cognito User Pools: 사용자 관리 및 인증.
- Cognito Identity Pools: AWS 리소스에 대한 임시 자격 증명 제공.
- 사용 목적:
- 애플리케이션 사용자 (예: 웹 또는 모바일 앱)의 인증.
- AWS 리소스에 접근하기 위해 임시 자격 증명 발급.
- 관리 위치:
- Cognito User Pools: 사용자 등록, 로그인, 비밀번호 관리 등.
- Cognito Identity Pools: 인증된 사용자에게 AWS 리소스에 접근할 수 있는 임시 자격 증명 제공.
- 인증 방식:
- JWT(JSON Web Token)를 사용하여 사용자 인증.
- Cognito Identity Pool은 JWT를 기반으로 IAM 역할을 매핑하여 임시 AWS Credential을 발급.
- 보안 고려사항:
- 사용자가 직접 AWS Credential을 다룰 필요가 없으므로 보안 위험 감소.
- 사용 사례:
- 웹/모바일 앱 사용자 인증.
- 애플리케이션 사용자에게 특정 AWS 리소스 제한적 접근 제공 (예: S3, DynamoDB).
장점
- 사용자 관리 간소화 (로그인, 비밀번호 재설정 등 지원).
- AWS 리소스에 대한 임시 자격 증명 제공으로 보안 강화.
- 소셜 로그인(Google, Facebook, Apple) 및 OpenID Connect(OIDC) 지원.
단점
- IAM보다 비교적 제한적인 권한 제어.
- 임시 자격 증명의 수명 관리 필요.
비교 요약
특성 |
AWS Credential | Cognito 인증 |
주요 사용자 | 관리자, 서버 애플리케이션 | 애플리케이션 사용자 (웹/모바일) |
인증 방식 | Access Key + Secret Key | JWT (Cognito User Pool) |
권한 제어 | 세밀한 IAM 정책 | 제한적인 IAM 역할 매핑 |
보안 | 자격 증명 노출 위험 존재 | 임시 자격 증명 제공, 노출 위험 감소 |
사용 사례 | 백엔드, 서버 간 통신 | 사용자 인증, AWS 리소스 제한적 접근 |
관리 위치 | IAM | Cognito (User Pool/Identity Pool) |
지원 로그인 방식 | N/A | 이메일, 소셜 로그인, OIDC |
선택 기준
- AWS Credential:
- 서버 간 통신, 관리자 작업, 또는 AWS 리소스에 대한 강력한 권한 관리가 필요한 경우.
- Cognito 인증:
- 애플리케이션 사용자 인증 및 관리가 필요하며, AWS 리소스에 제한적이고 안전한 접근을 제공해야 하는 경우.