Amazon Cognito FAQ
일반
Amazon Cognito란 무엇인가요?
Amazon Cognito를 사용하면 몇 분 만에 사용자 가입, 로그인, 액세스 제어, 중개형 AWS 서비스 액세스를 웹 및 모바일 애플리케이션에 추가할 수 있습니다. Amazon Cognito는 수백만 명의 사용자로 확장할 수 있는 안전한 테넌트 기반 ID 저장소와 페더레이션 옵션을 제공하는 개발자 중심의 비용 효율적인 서비스입니다. Amazon Cognito는 브랜드 고객 경험을 생성하고, 보안을 개선하고, 고객의 요구에 맞게 조정하는 데 도움이 됩니다. 예를 들어 소셜 ID 제공업체를 통한 로그인과 WebAuthn 패스키 또는 SMS 및 이메일 일회용 암호를 사용한 암호 없는 로그인을 지원합니다. Amazon Cognito는 다양한 규정 준수 표준을 지원하고, 개방형 ID 표준에서 작동하며, 광범위한 개발 리소스 및 SDK 라이브러리 카탈로그와 통합됩니다.
Amazon Cognito를 사용하면 사용자 관리와 인증을 처리하는 솔루션의 구축, 보안, 확장에 대해 걱정하는 대신 뛰어난 앱 경험을 생성하는 데 집중할 수 있습니다.
Amazon Cognito를 시작하려면 어떻게 해야 하나요?
AWS Console을 사용하여 간편하게 시작할 수 있습니다. Amazon Web Services 계정이 없는 경우 콘솔에 로그인하기 위해서는 먼저 계정을 생성해야 합니다. 사용자 관리를 위한 사용자 풀이나 페더레이션 ID를 위한 ID 풀을 생성한 후 애플리케이션과 API를 OAuth 및 OpenID Connect(OIDC)와 통합할 수 있습니다.
자세한 내용은 시작하기 리소스를 참조하세요.
Amazon Cognito는 누가 사용하면 좋은가요?
Amazon Cognito는 모바일과 웹 앱에 사용자 관리 및 동기화 기능을 추가하려는 개발자를 위해 설계되었습니다. 개발자는 Cognito Identity를 사용하여 앱에 가입 및 로그인 기능을 추가하고 사용자가 앱의 리소스에 안전하게 액세스하도록 지원할 수 있습니다. 또한, Cognito를 사용하면 개발자가 디바이스, 플랫폼 및 애플리케이션 간에 데이터를 동기화할 수 있습니다.
Amazon Cognito는 서버 측 API를 공개하나요?
예. Cognito는 서버 측 API를 공개합니다. 이러한 API를 직접 호출하여 Cognito에 대한 사용자 정의 인터페이스를 생성할 수 있습니다. 서버 측 API는 Developer Guide에 설명되어 있습니다.
Amazon Cognito는 무슨 플랫폼을 지원하나요?
Cognito에서는 iOS, Android, Unity 및 Kindle Fire를 지원하면, 선택 사항인 AWS Mobile SDK에 포함되어 있습니다. Cognito는 AWS SDK for .NET, C++, Go, Java, JavaScript, PHP v3, Python, Ruby v3, 명령줄 인터페이스에서도 사용할 수 있습니다.
리소스 페이지를 방문하여 사용 가능한 SDK를 확인하고 다운로드하세요.
AWS Mobile SDK를 사용해야 하나요?
아니요. Cognito는 웹 서비스처럼 제어 및 데이터 API를 공개합니다. 서버 측 API를 직접 호출하여 자체 클라이언트 라이브러리를 구현할 수 있습니다.
웹 및 모바일 앱에 가입 및 로그인 추가
Amazon Cognito는 어떤 인증 형식을 지원하나요?
1단계 인증의 경우 Amazon Cognito는 사용자 이름/암호, 암호 없는 이메일 OTP, 암호 없는 SMS OTP, WebAuthn 패스키를 지원합니다. Cognito는 이메일 OTP, SMS OTP 및 TOTP 인증 같은 다중 인증(MFA)을 지원합니다. 또한 고객과 파트너는 AWS Lambda 확장을 사용하여 사용자 지정 인증 흐름을 통해 서드 파티 제품 및 맞춤형 인증에 대한 지원을 구현할 수 있습니다.
자체 자격 증명 공급자를 사용하여 사용자 가입 및 로그인 기능을 지원할 수 있나요?
예. Amazon Cognito를 사용하면 간편하고 안전하게 가입 및 로그인 기능을 앱에 추가할 수 있습니다. 사용자는 이메일, 전화번호 또는 사용자 이름을 사용하여 가입 및 로그인할 수 있습니다. 또한, 이메일 인증, 전화번호 인증, 멀티 팩터 인증 등과 같은 강화된 보안 기능을 구현할 수 있습니다. Cognito를 사용하면 AWS Lambda를 통해 사기 탐지와 사용자 검증을 위해 사용자 등록에 앱별 로직을 추가하는 등 워크플로를 사용자 정의할 수 있습니다. 자세한 내용은 설명서를 참조하십시오.
Amazon Cognito 사용자 풀이란 무엇인가요?
사용자 풀은 웹 및 모바일 앱용으로 구성할 수 있는 테넌트 기반 사용자 디렉터리입니다. 사용자 풀은 사용자의 프로필 속성을 안전하게 저장하고 사용자 지정 스키마를 지원합니다. AWS Console, AWS CLI 또는 AWS SDK를 사용하여 사용자 풀을 생성하고 관리할 수 있습니다.
Amazon Cognito가 지원하는 사용자 프로필 정보는 무엇인가요?
개발자는 표준 OpenID Connect 기반 사용자 프로필 속성(사용자 이름, 전화번호, 주소, 시간대 등)을 사용하거나, 앱별 사용자 속성을 추가하도록 사용자 정의할 수 있습니다.
내 애플리케이션 사용자가 이메일 주소나 전화번호로 가입 또는 로그인하도록 할 수 있나요?
암호 정책을 설정할 수 있나요?
예. 사용자 풀을 설정하거나 구성할 때 암호 길이, 문자 복잡성, 암호 기록 요구 사항 같은 암호 정책을 설정할 수 있습니다. 또한 Amazon Cognito는 사용자가 다른 사이트에서 손상된 암호로 로그인하지 않도록 모든 사용자 가입, 로그인, 암호 변경 시 손상된 자격 증명 검사를 지원합니다.
애플리케이션 사용자의 이메일 주소와 전화번호를 인증할 수 있나요?
예. Amazon Cognito를 사용하면 사용자에게 애플리케이션에 대한 액세스를 제공하기 전에 사용자 이메일 주소와 전화번호를 먼저 인증하도록 할 수 있습니다. 가입 진행 중에 인증 코드가 사용자의 전화번호 또는 이메일 주소로 전송되며, 사용자가 인증 코드를 입력해야 가입 및 확인이 완료됩니다.
Amazon Cognito는 SMS 기반 다중 인증(MFA)을 지원하나요?
예. 애플리케이션의 최종 사용자가 SMS 기반 MFA을 통해 로그인할 수 있습니다. SMA 기반 MFA가 활성화되면, 사용자에게 암호(첫 번째 팩터 – 고객이 알고 있는 것)를 입력하라는 메시지가 뜨고, 그런 다음 휴대전화에서 SMS를 통해서만 수신할 수 있는 보안 코드(두 번째 팩터 – 고객이 갖고 있는 것)를 입력하라는 메시지가 뜹니다.
사용자 가입 및 로그인 워크플로를 사용자 정의할 수 있나요?
예. AWS Lambda를 사용하여 가입 및 로그인 흐름을 사용자 지정할 수 있습니다. 예를 들어, 사기를 식별하거나 사용자 데이터에 추가 검증을 수행하도록 AWS Lambda 함수를 생성할 수 있습니다. 등록 전, 확인 후(등록), 인증 전, 인증 중, 인증 후에 사용자 지정 Lambda 함수를 트리거할 수 있습니다. 또한, Lambda 함수를 사용하여 이메일 또는 전화번호 인증과 멀티 팩터 인증의 일부로 전송되는 메시지를 사용자 정의할 수 있습니다.
Cognito 사용자 풀의 내 애플리케이션 사용자와 연결된 디바이스를 기억할 수 있나요?
예. 애플리케이션에 액세스하는 데 사용된 디바이스를 기억하도록 선택할 수 있으며 기억한 이러한 디바이스를 Cognito 사용자 풀의 내 애플리케이션 사용자와 연결할 수 있습니다. 또한 다중 인증을 설정한 경우 기억된 디바이스를 사용하여 사용자에게 2차 챌린지를 표시하지 않도록(적응형 인증) 선택할 수 있습니다.
기존 애플리케이션 사용자를 Amazon Cognito 사용자 풀로 마이그레이션하려면 어떻게 해야 하나요?
애플리케이션의 기존 사용자 디렉터리 또는 데이터베이스의 사용자를 사용자 풀로 마이그레이션할 수 있는 방법에는 JIT(Just-in-Time) 마이그레이션과 대량 마이그레이션의 두 가지가 있습니다.
Amazon Cognito를 사용하면 기본 제공 AWS Lambda 트리거를 사용하여 사용자가 애플리케이션에 로그인할 때 사용자를 JIT(Just-in-Time) 마이그레이션할 수 있습니다. Lambda 트리거를 사용하면 사용자에게 암호 재설정을 강제하지 않고 외부 시스템에서 사용자의 데이터를 마이그레이션할 수 있습니다.
또는 모든 애플리케이션 사용자에 대한 프로필 데이터가 포함된 CSV 파일을 업로드하여 대량으로 사용자를 마이그레이션할 수 있습니다. CSV 파일은 Amazon Cognito 콘솔, API 또는 AWS CLI를 통해 업로드할 수 있습니다. 사용자는 처음 로그인할 때 계정을 확인하고 이메일 또는 휴대전화로 전송된 확인 코드를 사용해 새로운 암호를 생성해야 합니다.
자세한 내용은 사용자 풀로 사용자 가져오기를 참조하세요.
AWS 리소스에 대한 액세스 활성화
Cognito ID 풀을 사용하여 ID를 페더레이션하고 AWS 리소스에 대한 액세스를 보호할 수 있나요?
예. Cognito ID 풀은 외부 ID 공급자를 통한 사용자 인증을 지원하며, AWS에 있는 앱의 백엔드 리소스 또는 Amazon API Gateway 뒤에 있는 서비스에 액세스할 수 있는 임시 보안 자격 증명을 제공합니다. Amazon Cognito는 SAML 또는 OpenID Connect를 지원하는 외부 자격 증명 공급자 및 소셜 자격 증명 공급자(Facebook, Twitter, Amazon 등)와 연동되며, 자체 자격 증명 공급자와 통합할 수도 있습니다.
Amazon Cognito ID 풀에 사용할 수 있는 퍼블릭 ID 공급자로는 무엇이 있나요?
Amazon, Facebook, Twitter, Sign in with Apple, Google 소셜 ID 공급자, OpenID Connect(OIDC) ID 공급자, SAML ID 공급자, Amazon Cognito 사용자 풀, 사용자 지정 개발자 공급자를 사용할 수 있습니다.
자격 증명 풀이란 무엇인가요?
ID 풀을 사용하면 사용자의 고유한 ID를 생성하고 AWS 서비스 공급자와 안전하게 페더레이션할 수 있습니다. 고객은 Amazon Cognito ID 풀을 자격 증명 브로커로 활용하여 AWS 리소스 액세스를 위한 권한이 제한된 임시 AWS 자격 증명을 받습니다.
사용자는 Amazon Cognito 사용자 풀, OIDC ID 공급자, SAML ID 공급자 또는 소셜 ID 공급자를 통해 로그인하고, Amazon S3 버킷이나 Amazon DynamoDB 레코드 같은 AWS 서비스에 대한 역할 기반 액세스 권한을 얻을 수 있습니다. 자격 증명 풀은 어떤 사용자 프로필도 저장하지 않습니다. 자격 증명 풀은 1개 이상의 앱과 연결할 수 있습니다. 두 가지 앱에 대해 서로 다른 두 가지 자격 증명 풀을 사용하는 경우 동일한 최종 사용자는 각 자격 증명 풀에서 서로 다른 고유 식별자를 가집니다.
퍼블릭 ID 공급자를 사용한 로그인 흐름은 어떻게 이루어지나요?
모바일 앱에서는 자격 증명 공급자(IdP)를 사용해 인증할 때는 공급자의 SDK를 사용합니다. 최종 사용자가 IdP를 통해 인증되면, IdP에서 반환된 OpenID Connect 토큰이나 SAML 어설션이 앱에 의해 Cognito ID 풀로 전달됩니다. 그러면 해당 사용자의 새로운 Cognito ID와 권한이 제한된 임시 AWS 자격 증명 세트가 반환됩니다.
사용자를 직접 등록하고 인증할 수 있나요?
Cognito ID 풀은 기존 인증 시스템과 통합할 수 있습니다. 간단한 API 호출을 사용하면 사용자에 대한 자체 고유 식별자를 토대로 최종 사용자의 Cognito ID를 가져올 수 있습니다. Cognito ID와 OpenID 토큰을 가져오면 Cognito ID 풀 클라이언트 SDK를 사용하여 AWS 리소스에 액세스하고 사용자 데이터를 동기화할 수 있습니다.
Cognito Identity는 권한을 제어하고 AWS 서비스에 안전하게 액세스하도록 어떻게 지원하나요?
Cognito ID 풀은 AWS 리소스에 액세스할 수 있도록 권한이 제한된 임시 자격 증명 세트를 사용자에게 할당합니다. 따라서 AWS 계정 자격 증명을 사용할 필요가 없습니다. 각 사용자의 권한은 여러분이 생성한 AWS IAM 역할을 통해 제어합니다. 사용자별로 IAM 역할을 선택하도록 규칙을 정의하거나, Cognito 사용자 풀의 그룹을 사용하고 있는 경우에는 그룹별로 IAM 역할을 지정할 수 있습니다. 또한 Cognito ID 풀을 사용하면 인증되지 않은 게스트 사용자에 대해 권한이 제한된 별도의 IAM 역할을 정의할 수 있습니다. 뿐만 아니라 Cognito가 사용자를 위해 생성하는 고유 식별자를 사용하여 특정 리소스에 대한 액세스를 제어할 수 있습니다. 예를 들면 각 사용자가 버킷 내 자신의 폴더에만 액세스할 수 있도록 허용하는 S3 버킷 정책을 생성할 수 있습니다.
퍼블릭 ID 공급자를 사용하는 경우, Amazon Cognito ID 풀은 사용자의 자격 증명을 저장하나요?
아니요. 앱은 지원되는 퍼블릭 ID 공급자(Amazon, Facebook, Twitter, Apple로 로그인, Google, SAML 또는 Open ID Connect 호환 공급자)와 직접 통신하여 사용자를 인증합니다. Cognito Identity는 사용자 자격 증명을 수신하거나 저장하지 않습니다. Cognito Identity는 자격 증명 공급자에게서 받은 토큰을 사용하여 사용자에 대한 고유 자격 증명을 확보한 다음, 단방향 해시를 사용하여 이를 해시합니다. 이를 통해 실제 사용자 자격 증명을 저장하지 않고도 이후에 같은 사용자임을 인식할 수 있습니다.
Cognito ID 풀은 ID 공급자로부터 사용자에 대한 기밀 정보를 수신하거나 저장하나요?
아니요. Cognito Identity는 자격 증명 공급자로부터 어떠한 기밀 정보(이메일 주소, 친구 목록 등)도 수신하지 않습니다.
사용자 로그인을 강제하고 싶지 않은 경우는 어떻게 하나요?
Cognito ID 풀은 인증된 사용자뿐 아니라 인증되지 않은 사용자를 위한 생성 및 토큰 벤딩 프로세스도 지원합니다. 이렇게 하면 앱에서 추가 로그인 화면으로 인한 마찰이 없어질 뿐만 아니라 계속하여 임시적이며 제한 권한이 있는 자격 증명을 사용해 AWS 리소스에 액세스할 수 있도록 합니다.
Cognito Identity를 사용하는 경우에도 자체 백엔드 인증 시스템이 필요한가요?
아니요. Cognito Identity는 Amazon, Facebook, Twitter, Digits 및 Google을 통한 로그인을 지원할 뿐만 아니라 인증되지 않은 사용자에 대한 지원도 제공합니다. Cognito Identity를 사용하면 백엔드 코드를 작성하지 않아도 연동 인증, 프로필 데이터 동기화 스토어, 그리고 AWS 액세스 토큰 배포를 지원할 수 있습니다.
인증되지 않은 사용자란 무엇인가요?
인증되지 않은 사용자란 자격 증명 공급자를 통해 인증을 받지 않고 게스트로서 앱에 액세스하는 사용자를 말합니다. 이러한 사용자에 대한 별도의 IAM 역할을 정의하여 백엔드 리소스에 액세스할 수 있도록 제한된 권한을 제공할 수 있습니다.
Cognito ID 풀은 동일한 디바이스에서 서로 다른 사용자의 개별 ID를 지원하나요?
Cognito ID 풀은 가족 iPad 같은 단일 디바이스에서 개별적인 ID를 지원합니다. 각 자격 증명은 개별적으로 처리되며 사용자가 앱에 로그인 및 로그아웃하는 방법과 로컬 및 원격 앱 데이터가 저장되는 방법을 완전히 제어할 수 있습니다.
Cognito ID 풀에 연결된 데이터는 어떻게 저장하나요?
프로그래밍 방식으로 Cognito ID 풀에 연결된 데이터세트를 생성하고, 키 값 페어 형식으로 데이터를 저장할 수 있습니다. 데이터는 디바이스에 로컬로 저장되고 Cognito Sync 스토어에도 저장됩니다. 또한, Cognito는 최종 사용자의 모든 디바이스 간에 이러한 데이터를 동기화할 수 있습니다.
Cognito ID 풀 콘솔의 ID 수는 내 앱을 사용하고 있는 사용자 수를 말하나요?
Cognito ID 풀 콘솔의 ID 수는 Cognito ID 풀 API를 통해 생성된 ID 수를 나타냅니다. 인증된 ID(Facebook 또는 OpenID Connect 공급자 같은 로그인 공급자를 통해 로그인한 사용자)의 경우, Cognito ID 풀의 GetId API를 직접적으로 호출할 때마다 각 사용자의 단일 ID만 생성됩니다. 하지만 인증되지 않은 자격 증명의 경우, 앱의 클라이언트가 GetId API를 호출할 때마다 새로운 자격 증명이 생성됩니다. 그러므로 앱에서 단일 사용자에 대한 인증되지 않은 자격 증명을 여러 번 호출하는 경우, 한 명의 사용자가 여러 개의 자격 증명을 보유한 것으로 나타나게 됩니다. 따라서 인증되지 않은 ID를 사용할 때는 사용자당 여러 번 GetId API를 직접적으로 호출하지 않고 GetId에서 받은 응답을 캐시하는 것이 중요합니다.
모바일 SDK는 Cognito ID 풀의 데이터를 자동으로 캐시하는 로직을 제공하므로 캐시 방법에 대해 걱정할 필요가 없습니다. 고유한 사용자를 추적하는 기능을 비롯해 완벽한 앱용 분석 솔루션을 찾고 있다면, Amazon Mobile Analytics를 검토해보시기 바랍니다.
요금
Amazon Cognito 사용자 풀의 비용은 얼마인가요?
Monthly Active Users(MAU)란 무엇인가요?
Amazon Cognito 사용자 풀 요금은 월별 활성 사용자(MAU)를 기준으로 부과됩니다. 한 달 내에 앱에서 관리 생성 또는 업데이트, 가입, 로그인, 로그 아웃, 토큰 새로 고침, 암호 변경, 사용자 계정 속성 업데이트 또는 사용자에 대한 속성 쿼리(AdminGetUser API)와 같은 ID 작업을 생성한 경우 사용자는 MAU로 간주됩니다. 후속 세션이나 해당 역월의 비활성 사용자에 대해서는 요금이 부과되지 않습니다. 일반적으로 총 사용자 수와 작업 수가 총 MAU 수보다 훨씬 많습니다.
Amazon Cognito Sync의 비용은 얼마인가요?
Amazon Cognito Sync 요금은 Amazon Cognito 요금 페이지를 참조하세요.
Cognito에서 SMS 메시지를 사용할 때의 비용은 얼마인가요?
전화번호 확인, 암호를 잊어버리거나 재설정할 때 코드 전송 또는 멀티 팩터 인증을 위해 SMS 메시지를 사용하는 비용은 별도로 부과됩니다. 자세한 내용은 전 세계 SMS 요금 페이지를 참조하세요.
동기화 작업이란 무엇인가요?
AWS Mobile SDK 사용하여 synchronize() 메서드를 호출하는 경우 동기화 작업으로 간주합니다. 서버 API를 직접 호출하는 경우 동기화 작업은 새로운 동기화 세션 토큰이 내보내 졌을 때 시작되며 쓰기 작업에 성공하거나 세션 토큰 시간이 만료되었을 때 완료됩니다. SDK synchronize() 메서드를 사용하든, 서버 API를 직접 호출하든 상관없이 동기화 작업에는 동일한 요금이 부과됩니다.
Amazon Cognito는 AWS 프리 티어의 일부인가요?
예. Amazon Cognito 사용자 풀 SKU와 Essentials SKU는 처음 10,000명의 MAU에 대해 무료로 제공됩니다. 2024년 11월 21일 이전에 활성 상태인 Amazon Cognito 사용자 풀을 보유한 고객 계정은 50,000 MAU의 프리 티어를 이용할 수 있습니다.
AWS 프리 티어의 일부로, 자격이 있는 AWS 고객에게는 처음 12개월간 매월 클라우드 동기화 스토어 10GB와 동기화 작업 1,000,000건이 제공됩니다.
사용자 인증과 고유 식별자 생성에 Amazon Cognito ID 풀을 무료로 사용할 수 있습니다.
Amazon Cognito 이벤트에서 Lambda의 사용 요금은 얼마인가요?
Cognito 이벤트를 사용하여 Lambda 함수를 트리거할 때 추가되는 요금은 없으며, Lambda 함수가 실행되는 동안 AWS Lambda와 기타 AWS 서비스 사용에 대한 일반 요금이 적용됩니다.
자세한 내용은 AWS Lambda 요금 페이지를 참조하세요.
앱에서의 쓰기 및 읽기 작업이 모두 동기화 작업으로 간주되나요?
아니요. synchronize() 메서드를 언제 호출할지 결정합니다. 디바이스에서의 모든 쓰기 또는 읽기 작업은 로컬 SQLite 스토어에 적용됩니다. 따라서 사용자가 비용을 완벽하게 제어할 수 있습니다.
푸시 동기화의 비용은 얼마인가요?
Cognito는 Amazon SNS를 사용하여 자동 푸시 알림을 전송합니다. 푸시 동기화에 Cognito를 사용하는 데 따르는 추가 요금은 없고 디바이스로 알림을 전송하는 데 대한 일반 Amazon SNS 요금이 부과됩니다.