기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
고객 자격 증명 관리
고객 자격 증명 및 액세스 관리(CIAM)는 조직이 고객 자격 증명을 관리할 수 있는 기술입니다. 조직에서 제공하는 소비자 애플리케이션, 웹 포털 또는 디지털 서비스에 가입, 로그인 및 액세스하기 위한 보안과 향상된 사용자 환경을 제공합니다. CIAM은 고객을 식별하고, 개인화된 경험을 만들고, 고객 응대 애플리케이션 및 서비스에 필요한 올바른 액세스를 결정하는 데 도움이 됩니다. 또한 CIAM 솔루션은 조직이 업계 규제 표준 및 프레임워크 전반의 규정 준수 요구 사항을 충족하는 데 도움이 될 수 있습니다. 자세한 내용은 AWS 웹 사이트의 CIAM이란 무엇입니까?
Amazon Cognito는 모든 규모의 비즈니스에 CIAM 기능을 제공하는 웹 및 모바일 애플리케이션을 위한 자격 증명 서비스입니다. Amazon Cognito에는 사용자 디렉터리, 인증 서버 및 OAuth 2.0 액세스 토큰에 대한 권한 부여 서비스가 포함되며 임시 AWS 자격 증명을 제공할 수도 있습니다. Amazon Cognito를 사용하여 기본 제공 사용자 디렉터리, 엔터프라이즈 디렉터리와 같은 페더레이션 자격 증명 공급자 또는 Google 및 Facebook과 같은 소셜 자격 증명 공급자의 사용자를 인증하고 권한을 부여할 수 있습니다.
Amazon Cognito의 두 가지 주요 구성 요소는 사용자 풀과 자격 증명 풀입니다. 사용자 풀은 웹 및 모바일 애플리케이션 사용자에게 가입 및 로그인 옵션을 제공하는 사용자 디렉터리입니다. 자격 증명 풀은 사용자에게 다른 AWS 서비스에 대한 액세스 권한을 부여하는 임시 AWS 자격 증명을 제공합니다.
Amazon Cognito를 사용해야 하는 경우
Amazon Cognito는 웹 및 모바일 애플리케이션을 위한 안전하고 비용 효율적인 사용자 관리 솔루션이 필요한 경우에 적합합니다. 다음은 Amazon Cognito를 사용하기로 결정할 수 있는 몇 가지 시나리오입니다.
-
인증. 애플리케이션을 프로토타이핑하거나 사용자 로그인 기능을 빠르게 구현하려는 경우 Amazon Cognito의 사용자 풀과 호스팅 UI를 사용하여 개발 속도를 높일 수 있습니다. Amazon Cognito가 사용자 가입, 로그인 및 보안을 처리하는 동안 핵심 애플리케이션 기능에 집중할 수 있습니다.
Amazon Cognito는 사용자 이름 및 암호, 소셜 자격 증명 공급자, SAML 및 OpenID Connect(OIDC)를 통한 엔터프라이즈 자격 증명 공급자 등 다양한 인증 방법을 지원합니다.
-
사용자 관리. Amazon Cognito는 사용자 등록, 확인 및 계정 복구를 포함한 사용자 관리를 지원합니다. 사용자는 선호하는 자격 증명 공급자에 가입하고 로그인할 수 있으며 애플리케이션의 요구 사항에 따라 등록 프로세스를 사용자 지정할 수 있습니다.
-
AWS 리소스에 대한 보안 액세스. Amazon Cognito는 IAM과 통합되어 AWS 리소스에 대한 세분화된 액세스 제어를 제공합니다. IAM 역할 및 정책을 정의하여 사용자 자격 증명 및 그룹 멤버십을 기반으로 AWS 서비스에 대한 액세스를 제어할 수 있습니다.
-
페더레이션 자격 증명. Amazon Cognito는 페더레이션 자격 증명을 지원하므로 사용자는 기존 소셜 또는 엔터프라이즈 자격 증명을 사용하여 로그인할 수 있습니다. 이렇게 하면 사용자가 애플리케이션에 대한 새 자격 증명을 생성할 필요가 없으므로 사용자 경험을 개선하고 가입 프로세스 중에 발생하는 마찰을 줄일 수 있습니다.
-
모바일 및 웹 애플리케이션. Amazon Cognito는 모바일 및 웹 애플리케이션 모두에 적합합니다. 다양한 플랫폼을 위한 SDKs 제공하며 인증 및 액세스 제어를 애플리케이션 코드에 쉽게 통합할 수 있습니다. 모바일 애플리케이션에 대한 오프라인 액세스 및 동기화를 지원하므로 사용자가 오프라인 상태일 때도 데이터에 액세스할 수 있습니다.
-
확장성. Amazon Cognito는 수백만 명의 사용자로 확장할 수 있는 가용성과 완전관리형 서비스입니다. 매월 1,000억 개 이상의 인증을 처리합니다.
-
보안. Amazon Cognito에는 민감한 데이터의 암호화, 다중 인증(MFA), 교차 사이트 스크립팅(XSS) 및 교차 사이트 요청 위조(CSRF)와 같은 일반적인 웹 공격에 대한 보호와 같은 몇 가지 보안 기능이 내장되어 있습니다. 또한 Amazon Cognito는 적응형 인증, 손상된 자격 증명 사용 확인, 액세스 토큰 사용자 지정과 같은 고급 보안 기능을 제공합니다.
-
기존 AWS 서비스와 통합. Amazon Cognito는 AWS 서비스와 원활하게 통합됩니다. 이렇게 하면 AWS 리소스에 의존하는 기능에 대한 개발을 간소화하고 사용자 관리를 간소화할 수 있습니다.
다음 다이어그램은 이러한 시나리오 중 일부를 보여줍니다.

-
애플리케이션은 Amazon Cognito 사용자 풀로 인증하고 토큰을 가져옵니다.
-
애플리케이션은 Amazon Cognito 자격 증명 풀을 사용하여 AWS 자격 증명에 대한 토큰을 교환합니다.
-
애플리케이션은 자격 증명을 사용하여 AWS 서비스에 액세스합니다.
웹 또는 모바일 애플리케이션에 사용자 인증, 권한 부여 및 사용자 관리 기능을 추가해야 할 때마다, 특히 여러 자격 증명 공급자가 있고 AWS 리소스에 대한 보안 액세스가 필요하며 확장성 요구 사항이 있는 경우 Amazon Cognito를 사용하는 것이 좋습니다.
설계 고려 사항
-
요구 사항에 따라 Amazon Cognito 사용자 풀 또는 자격 증명 풀을 생성합니다.
-
사용자 프로필을 너무 자주 업데이트하지 마세요(예: 모든 로그인 요청). 업데이트가 필요한 경우 업데이트된 속성을 Amazon DynamoDB와 같은 외부 데이터베이스에 저장합니다.
-
Amazon Cognito 인력 자격 증명 관리를 사용하지 마세요.
-
애플리케이션은 항상 서명 및 유효성을 확인하여 JSON 웹 토큰(JWTs)을 신뢰하기 전에 JSON 웹 토큰을 검증해야 합니다. 이 검증은 API 호출을 사용자 풀로 전송하지 않고 클라이언트 측에서 수행해야 합니다. 토큰이 확인된 후 토큰에서 클레임을 신뢰하고 추가 getUser API 호출 대신 사용할 수 있습니다. 자세한 내용은 Amazon Cognito 설명서의 JSON 웹 토큰 확인을 참조하세요. 토큰 확인을 위해 추가 JWT 라이브러리
를 사용할 수도 있습니다. -
CUSTOM_AUTH
흐름을 사용하지 않거나, AWS Lambda가 사용자 지정 인증 문제 또는 페더레이션 로그인을 트리거하는 경우에만 Amazon Cognito의 고급 보안 기능을 활성화합니다. 고급 보안 기능에 대한 고려 사항 및 제한 사항은 Amazon Cognito 설명서를 참조하세요. -
속도 기반 규칙을 사용하고 여러 요청 파라미터를 결합하여 AWS WAF가 Amazon Cognito 사용자 풀을 보호할 수 있도록 합니다. 자세한 내용은 AWS 블로그 게시물 AWS WAF로 Amazon Cognito 사용자 풀 보호를 참조하세요
. -
추가 보호 계층을 원하는 경우 AWS 블로그 게시물 Amazon CloudFront 프록시를 사용하여 Amazon Cognito용 퍼블릭 클라이언트 보호에 설명된 대로 Amazon CloudFront 프록시를
사용하여 수신 요청을 추가로 처리하고 검증합니다. -
사용자 로그인 후 모든 API 호출은 백엔드 서비스에서 이루어져야 합니다. 예를 들어 AWS WAF를 사용하여에 대한 호출을 거부
UpdateUserAttribute
한 다음 애플리케이션 백엔드AdminUpdateUserAttribute
에서 대신를 호출하여 사용자 속성을 업데이트합니다. -
사용자 풀을 생성할 때 사용자 이름, 이메일 주소 또는 전화번호를 사용하여 사용자가 로그인하는 방법을 선택합니다. 사용자 풀이 생성된 후에는이 구성을 변경할 수 없습니다. 마찬가지로 사용자 풀에 추가된 후에는 사용자 지정 속성을 변경하거나 제거할 수 없습니다.
-
사용자 풀에서 다중 인증(MFA)을 활성화하는 것이 좋습니다.
-
Amazon Cognito는 현재 내장 백업 또는 내보내기 기능을 제공하지 않습니다. 사용자의 데이터를 백업하거나 내보내려면 Amazon Cognito Profiles Export Reference Architecture
를 사용할 수 있습니다. -
AWS 리소스에 대한 일반적인 액세스에는 IAM 역할을 사용합니다. 세분화된 권한 부여 요구 사항의 경우 Amazon Verified Permissions를 사용합니다. 이 권한 관리 서비스는 기본적으로 Amazon Cognito와 통합됩니다
. 또한 액세스 토큰 사용자 지정 을 사용하여 애플리케이션별 클레임을 보강하여 사용자가 사용할 수 있는 액세스 및 콘텐츠 수준을 결정할 수 있습니다. 애플리케이션이 Amazon API Gateway를 진입점으로 사용하는 경우 Amazon Cognito 기능을 사용하여 Amazon Verified Permissions를 사용하여 Amazon API Gateway를 보호합니다. 이 서비스는 사용자 속성 및 그룹을 참조하는 세분화된 보안 정책을 관리하고 평가합니다. 권한 있는 Amazon Cognito 그룹의 사용자만 애플리케이션의 APIs. 자세한 내용은 AWS 커뮤니티 웹 사이트의 Amazon Verified Permissions를 사용하여 API 게이트웨이 보호 섹션을 참조하세요. -
AWS SDKs 사용하여 사용자 속성, 상태 및 그룹 정보를 호출하고 검색하여 백엔드에서 사용자 데이터에 액세스할 수 있습니다. 사용자 지정 앱 데이터를 Amazon Cognito의 사용자 속성에 저장하고 디바이스 간에 동기화된 상태로 유지할 수 있습니다.
다음 섹션에서는 Amazon Cognito를 다른 AWS 서비스와 통합하기 위한 세 가지 패턴인 Application Load Balancer, Amazon API Gateway 및 Amazon OpenSearch Service에 대해 설명합니다.
Application Load Balancer와 통합
다음 다이어그램과 같이 애플리케이션 사용자를 인증하도록 Amazon Cognito로 Application Load Balancer를 구성할 수 있습니다.

HTTPS 리스너 기본 규칙을 구성하여 Application Load Balancer로 사용자 식별을 오프로드하고 자동 인증 프로세스를 생성할 수 있습니다. 자세한 내용은 AWS 지식 센터의 Amazon Cognito 사용자 풀을 통해 사용자를 인증하도록 Application Load Balancer를 설정하는 방법을
Amazon API Gateway와 통합
Amazon API Gateway는 API를 대규모로 쉽게 생성, 게시 및 관리할 수 있는 완전 관리형 클라우드 기반 APIs 게이트웨이 서비스입니다. 백엔드 서비스로의 사용자 트래픽의 진입점입니다. Amazon Cognito를 API Gateway와 통합하여 인증 및 액세스 제어를 구현하여 APIs으로부터 보호하거나 기타 보안 또는 비즈니스 사용 사례에 사용할 수 있습니다. Amazon Cognito 권한 부여자, Amazon Verified Permissions 또는 Lambda 권한 부여자를 사용하여 인증 및 액세스 제어를 구현하여 API Gateway APIs를 보호할 수 있습니다. 다음 표에서는 이러한 세 가지 접근 방식이 권한 부여를 지원하는 방법을 설명합니다.
권한 부여자 유형 | 지원되는 권한 부여 |
---|---|
Amazon Cognito 권한 부여자 |
액세스 토큰: 범위 ID 토큰: 유효성 |
확인된 권한 - Lambda 권한 부여자 |
Verified Permissions는 구성된 토큰에 대한 토큰 검증(서명, 만료)을 수행합니다. 액세스 토큰: 간단한 속성, 복잡한 속성, 범위 또는 그룹입니다. ID 토큰: 간단한 속성, 복잡한 속성, 범위 또는 그룹입니다. 또한 정책은 제로 트러스트 권한 부여에 컨텍스트 데이터(예: IP 주소, 요청 컨텍스트 또는 디바이스 지문)를 사용할 수 있습니다. |
사용자 지정 Lambda 권한 부여자 |
사용자 지정 토큰 검증 및 권한 부여 체계를 구현할 수 있습니다. |
Amazon Cognito 권한 부여자
다음 다이어그램과 같이 Amazon Cognito를 API Gateway와 통합하여 인증 및 액세스 제어를 구현할 수 있습니다. Amazon Cognito 권한 부여자는 Amazon Cognito에서 생성된 JSON 웹 토큰(JWT)을 검증하고 액세스 토큰 또는 유효한 ID 토큰의 사용자 지정 범위를 기반으로 요청을 승인합니다. 구현에 대한 자세한 내용은 AWS 지식 기반에서 Amazon Cognito 사용자 풀을 API Gateway REST API의 권한 부여자로 설정하려면 어떻게 해야 합니까?

확인된 권한 - Lambda 권한 부여자
Amazon Verified Permissions를 사용하여 인증 및 세분화된 액세스 제어를 위해 Amazon Cognito 또는 자체 자격 증명 공급자를 API Gateway와 통합할 수 있습니다. Verified Permissions는 Amazon Cognito 또는 모든 OpenID Connect(OIDC) 공급자의 ID 및 액세스 토큰 검증을 지원하며 간단한 토큰 속성, 복잡한 토큰 속성(예: 배열 또는 JSON 구조), 범위 및 그룹 멤버십을 기반으로 액세스를 승인할 수 있습니다. Verified Permissions를 사용하여 API Gateway REST APIs 보안을 시작하려면 AWS 보안 블로그 게시물 Amazon Cognito에서 Amazon Verified Permissions를 사용하여 API Gateway APIs 승인 또는 자체 자격 증명 공급자와

Lambda 권한 부여자
AWS Lambda 권한 부여자를 사용하여 사용자 지정 권한 부여 체계를 구현할 수 있습니다. 이 체계는 요청 파라미터를 사용하여 호출자의 자격 증명을 확인하거나 OAuth 또는 SAML과 같은 보유자 토큰 인증 전략을 사용할 수 있습니다. 이 옵션은 유연성을 극대화하지만 APIs를 보호하기 위해 로직을 코딩해야 합니다. 자세한 내용은 API Gateway 설명서의 API Gateway Lambda 권한 부여자 사용을 참조하세요.
Amazon OpenSearch Service와 통합
Amazon Cognito를 사용하여 Amazon OpenSearch Service 도메인을 보호할 수 있습니다. 예를 들어, 다음 다이어그램과 같이 사용자가 인터넷에서 OpenSearch 대시보드에 액세스해야 하는 경우 이 시나리오에서 Amazon Cognito는 Amazon Cognito 그룹 및 사용자를 내부 OpenSearch Service 권한에 매핑하여 세분화된 권한을 포함한 액세스 권한을 제공할 수 있습니다. 자세한 내용은 OpenSearch Service 설명서의 OpenSearch Dashboards에 대한 Amazon Cognito 인증 구성을 참조하세요. OpenSearch
