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

선택 기준

  1. AWS Credential:
    • 서버 간 통신, 관리자 작업, 또는 AWS 리소스에 대한 강력한 권한 관리가 필요한 경우.
  2. Cognito 인증:
    • 애플리케이션 사용자 인증 및 관리가 필요하며, AWS 리소스에 제한적이고 안전한 접근을 제공해야 하는 경우.