Amazon Cognito 개발자 안내서 Amazon Cognito 개발자 안내서 Amazon Cognito: 개발자 안내서 Copyright © 2022 Amazon Web Services, Inc. and/or its affiliates. All rights reserved. Amazon의 상표 및 브랜드 디자인은 Amazon 외 제품 또는 서비스와 함께, Amazon 브랜드 이미지를 떨어뜨리거나 고객 에게 혼동을 일으킬 수 있는 방식으로 사용할 수 없습니다. Amazon이 소유하지 않은 기타 모든 상표는 Amazon과 제휴 관계이거나 관련이 있거나 후원 관계와 관계없이 해당 소유자의 자산입니다. Amazon Cognito 개발자 안내서 Table of Contents Amazon Cognito란 무엇입니까?............................................................................................................ 1 Amazon Cognito의 기능.............................................................................................................. 2 Amazon Cognito 시작하기........................................................................................................... 2 리전별 가용성............................................................................................................................ 3 Amazon Cognito 요금................................................................................................................. 3 Amazon Cognito 콘솔 사용.......................................................................................................... 3 Amazon Cognito 시작하기................................................................................................................... 6 AWS 계정 및 루트 사용자 자격 증명 받기 ...................................................................................... 6 IAM 사용자 생성......................................................................................................................... 7 IAM 사용자로 로그인.................................................................................................................. 8 IAM 사용자 액세스 키 생성.......................................................................................................... 8 일반적인 Amazon Cognito 시나리오...................................................................................................... 9 사용자 풀로 인증 ........................................................................................................................ 9 서버 측 리소스 액세스................................................................................................................. 9 API Gateway 및 Lambda를 사용하여 리소스 액세스....................................................................... 10 사용자 풀 및 자격 증명 풀로 AWS 서비스 액세스 .......................................................................... 11 서드 파티에 인증 및 자격 증명 풀로 AWS 서비스 액세스 ................................................................ 11 Amazon Cognito를 사용하여 AWS AppSync 리소스 액세스............................................................. 12 자습서............................................................................................................................................. 13 사용자 풀 생성 ......................................................................................................................... 13 관련 리소스...................................................................................................................... 14 자격 증명 풀 생성 ..................................................................................................................... 14 관련 리소스...................................................................................................................... 14 AWS 리소스 정리 ..................................................................................................................... 15 앱과 통합......................................................................................................................................... 16 AWS Amplify 프레임워크를 사용한 Amazon Cognito 인증............................................................... 16 amazon-cognito-identity-js를 사용하는 인증................................................................................... 16 AWS SDK를 사용하는 인증........................................................................................................ 17 멀티 테넌트 애플리케이션 모범 사례.................................................................................................... 18 사용자 풀 기반 멀티 테넌시 ........................................................................................................ 18 애플리케이션 클라이언트 기반 멀티 테넌시 .................................................................................. 19 그룹 기반 멀티 테넌시 ............................................................................................................... 19 사용자 지정 속성 기반 멀티 테넌시............................................................................................. 19 멀티 테넌시 보안 권장 사항 ........................................................................................................ 19 Amazon Cognito 사용자 풀................................................................................................................ 21 사용자 풀 시작하기 ................................................................................................................... 22 사전 요건: AWS 계정 가입 ................................................................................................. 22 1단계. 사용자 풀 생성 ....................................................................................................... 22 2단계. 앱 클라이언트 추가 및 호스팅 UI 설정 ........................................................................ 24 3단계. 사용자 풀에 소셜 로그인 추가(선택 사항).................................................................... 27 4단계. 사용자 풀에 SAML 자격 증명 공급자로 로그인 추가(선택 사항)....................................... 33 다음 단계......................................................................................................................... 36 사용자 풀 업데이트 ................................................................................................................... 36 Amazon Cognito API 또는 AWS CLI를 사용하여 사용자 풀 업데이트 ......................................... 37 호스트된 UI 사용 ...................................................................................................................... 38 AWS Amplify를 사용하여 호스트된 UI 설정........................................................................... 38 Amazon Cognito 콘솔을 사용하여 호스트된 UI 설정 ............................................................... 38 앱 클라이언트 구성 ........................................................................................................... 42 도메인 구성...................................................................................................................... 47 기본 제공 웹 페이지 사용자 정의 ......................................................................................... 53 호스팅 UI 사용 방법 .......................................................................................................... 57 리소스 서버 정의 .............................................................................................................. 69 서드 파티를 통한 로그인 추가 ..................................................................................................... 72 Amazon Cognito 사용자 풀에서 페더레이션 로그인이 작동하는 방식 ......................................... 72 iii Amazon Cognito 개발자 안내서 소셜 자격 증명 공급자 추가 ................................................................................................ 73 SAML 공급자 추가............................................................................................................ 80 OIDC 공급자 추가............................................................................................................. 92 속성 매핑 지정................................................................................................................. 98 페더레이션 사용자를 기존 사용자 프로필에 연결 .................................................................. 102 Lambda 트리거 사용................................................................................................................ 104 중요 고려 사항................................................................................................................ 105 사용자 풀 트리거 추가..................................................................................................... 107 사용자 풀 Lambda 트리거 이벤트...................................................................................... 108 사용자 풀 Lambda 트리거 공통 파라미터 ............................................................................ 108 Lambda 트리거 소스........................................................................................................ 109 사전 가입 Lambda 트리거................................................................................................ 111 사후 확인 Lambda 트리거................................................................................................ 117 사전 인증 Lambda 트리거................................................................................................ 120 사후 인증 Lambda 트리거................................................................................................ 122 문제 Lambda 트리거........................................................................................................ 126 사전 토큰 생성 Lambda 트리거......................................................................................... 135 사용자 마이그레이션 Lambda 트리거................................................................................. 139 사용자 정의 메시지 Lambda 트리거................................................................................... 143 사용자 지정 발신자 Lambda 트리거................................................................................... 147 Amazon Pinpoint 분석 사용...................................................................................................... 156 Amazon Cognito 및 Amazon Pinpoint 리전 매핑 찾기........................................................... 157 앱을 Amazon Pinpoint와 통합........................................................................................... 159 사용자 관리............................................................................................................................ 159 사용자 계정 가입 및 확인................................................................................................. 160 관리자로 사용자 생성...................................................................................................... 168 사용자 풀에 그룹 추가..................................................................................................... 174 사용자 관리 및 검색 ........................................................................................................ 176 사용자 계정 복구 ............................................................................................................. 181 사용자 풀로 사용자 가져오기 ............................................................................................ 181 이메일 설정............................................................................................................................ 192 기본 이메일 기능 ............................................................................................................. 192 Amazon SES 이메일 구성................................................................................................ 193 이메일 계정 구성 ............................................................................................................. 194 SMS 메시지 설정 .................................................................................................................... 198 Amazon Cognito 사용자 풀에서 처음으로 SMS 메시지 설정................................................... 198 토큰 사용............................................................................................................................... 203 ID 토큰 사용................................................................................................................... 204 액세스 토큰 사용 ............................................................................................................. 206 새로 고침 토큰 사용 ........................................................................................................ 207 토큰 철회....................................................................................................................... 209 JSON 웹 토큰 확인......................................................................................................... 210 캐싱 토큰....................................................................................................................... 213 로그인 후 리소스 액세스.......................................................................................................... 214 서버 측 리소스 액세스 ......................................................................................................... 9 API Gateway 및 Lambda를 사용하여 리소스 액세스............................................................. 215 자격 증명 풀을 사용하여 AWS 리소스 액세스 ...................................................................... 216 보안 기능 사용 ........................................................................................................................ 219 MFA 추가....................................................................................................................... 219 고급 보안 기능 추가 ........................................................................................................ 227 AWS WAF 웹 ACL.......................................................................................................... 237 대소문자 구분................................................................................................................. 240 사용자 풀 콘솔 참조 ................................................................................................................ 240 사용자 풀 이름................................................................................................................ 241 사용자 및 그룹................................................................................................................ 241 Attributes....................................................................................................................... 241 암호 요구 사항................................................................................................................ 250 iv Amazon Cognito 개발자 안내서 관리자로 사용자 생성 정책............................................................................................... 250 삭제 방지....................................................................................................................... 250 이메일 또는 전화 확인..................................................................................................... 251 메시지 사용자 정의 ......................................................................................................... 254 태그 .............................................................................................................................. 258 Devices......................................................................................................................... 259 앱 클라이언트................................................................................................................. 260 트리거........................................................................................................................... 262 설정 검토....................................................................................................................... 263 분석 .............................................................................................................................. 263 앱 클라이언트 설정 ......................................................................................................... 264 도메인 이름.................................................................................................................... 265 UI 사용자 정의................................................................................................................ 266 리소스 서버.................................................................................................................... 268 자격 증명 공급자 ............................................................................................................. 269 속성 매핑....................................................................................................................... 274 오류 응답 관리 ........................................................................................................................ 277 Amazon Cognito 자격 증명 풀........................................................................................................... 279 자격 증명 풀 시작하기 ............................................................................................................. 279 AWS 계정에 가입............................................................................................................ 280 Amazon Cognito에서 자격 증명 풀 생성............................................................................. 280 Mobile 또는 JavaScript SDK 설치...................................................................................... 281 자격 증명 공급자 통합..................................................................................................... 281 자격 증명 얻기................................................................................................................ 281 자격 증명 풀 사용 ................................................................................................................... 281 사용자 IAM 역할............................................................................................................. 282 인증된 자격 증명 및 인증되지 않은 자격 증명 ...................................................................... 282 미인증 자격 증명 활성화 또는 비활성화 .............................................................................. 282 자격 증명 유형과 연관된 역할 변경 .................................................................................... 283 인증 공급자 활성화 또는 편집 ........................................................................................... 283 자격 증명 풀 삭제........................................................................................................... 284 자격 증명 풀에서 자격 증명 삭제 ....................................................................................... 284 데이터 집합 관리 ............................................................................................................. 284 데이터 대량 게시 ............................................................................................................. 285 푸시 동기화 사용 ............................................................................................................. 285 Amazon Cognito 스트림 설정............................................................................................ 285 Amazon Cognito 이벤트 설정............................................................................................ 286 자격 증명 풀 개념 ................................................................................................................... 286 자격 증명 풀 인증 흐름.................................................................................................... 286 IAM 역할........................................................................................................................ 291 역할 트러스트 및 권한..................................................................................................... 296 액세스 제어에 속성 사용.......................................................................................................... 297 Amazon Cognito 자격 증명 풀에서 액세스 제어에 속성 사용 .................................................. 297 액세스 제어에 속성 사용 정책 예 ....................................................................................... 298 액세스 제어에 속성 사용 중지 ........................................................................................... 300 기본 공급자 매핑 ............................................................................................................. 300 역할 기반 액세스 제어 ............................................................................................................. 301 역할 매핑에 사용할 역할 생성 ........................................................................................... 301 역할 전달 권한 부여 ........................................................................................................ 301 토큰을 사용하여 사용자에게 역할 할당............................................................................... 302 규칙 기반 매핑을 사용하여 사용자에게 역할 할당 ................................................................. 303 규칙 기반 매핑에 사용할 토큰 클레임 ................................................................................. 304 역할 기반 액세스 제어의 모범 사례 .................................................................................... 305 자격 증명 얻기 ........................................................................................................................ 305 Android.......................................................................................................................... 305 iOS - Objective-C............................................................................................................ 306 iOS - Swift..................................................................................................................... 307 v Amazon Cognito 개발자 안내서 JavaScript...................................................................................................................... 308 Unity............................................................................................................................. 309 Xamarin......................................................................................................................... 310 AWS 서비스 액세스................................................................................................................. 311 Android.......................................................................................................................... 311 iOS - Objective-C............................................................................................................ 311 iOS - Swift..................................................................................................................... 311 JavaScript...................................................................................................................... 312 Unity............................................................................................................................. 312 Xamarin......................................................................................................................... 312 자격 증명 풀 외부 자격 증명 공급자........................................................................................... 312 Facebook....................................................................................................................... 313 Login with Amazon.......................................................................................................... 318 Google........................................................................................................................... 321 Apple로 로그인............................................................................................................... 328 OpenID Connect 공급자................................................................................................... 332 SAML 자격 증명 공급자................................................................................................... 334 개발자 인증 자격 증명 ............................................................................................................. 335 인증 흐름 이해................................................................................................................ 336 개발자 공급자 이름 정의 및 자격 증명 풀에 연결 .................................................................. 336 자격 증명 공급자 구현..................................................................................................... 336 로그인 맵 업데이트(Android 및 iOS 전용)........................................................................... 342 토큰 가져오기(서버 측).................................................................................................... 342 기존 소셜 자격 증명에 연결 .............................................................................................. 343 공급자 간 전환 지원 ........................................................................................................ 344 자격 증명 전환 ........................................................................................................................ 346 Android.......................................................................................................................... 346 iOS - Objective-C............................................................................................................ 347 iOS - Swift..................................................................................................................... 347 JavaScript...................................................................................................................... 347 Unity............................................................................................................................. 348 Xamarin......................................................................................................................... 348 Amazon Cognito Sync..................................................................................................................... 349 Amazon Cognito Sync 시작하기................................................................................................ 349 AWS 계정에 가입............................................................................................................ 349 Amazon Cognito에서 자격 증명 풀 설정............................................................................. 350 데이터 저장 및 동기화..................................................................................................... 350 데이터 동기화......................................................................................................................... 350 Amazon Cognito Sync 클라이언트 초기화........................................................................... 350 데이터 집합 이해 ............................................................................................................. 352 데이터 집합의 데이터 읽기 및 쓰기 .................................................................................... 353 로컬 데이터를 동기화 스토어와 동기화............................................................................... 355 콜백 처리............................................................................................................................... 357 Android.......................................................................................................................... 357 iOS - Objective-C............................................................................................................ 358 iOS - Swift..................................................................................................................... 361 JavaScript...................................................................................................................... 363 Unity............................................................................................................................. 365 Xamarin......................................................................................................................... 367 푸시 동기화............................................................................................................................ 368 Amazon Simple Notification Service(Amazon SNS) 앱 생성.................................................... 369 Amazon Cognito 콘솔에서 푸시 동기화 사용....................................................................... 369 앱에서 푸시 동기화 사용: Android...................................................................................... 370 앱에서 푸시 동기화 사용: iOS - Objective-C........................................................................ 371 앱에서 푸시 동기화 사용: iOS - Swift ................................................................................. 373 Amazon Cognito 스트림........................................................................................................... 375 Amazon Cognito 이벤트........................................................................................................... 376 vi Amazon Cognito 개발자 안내서 보안 .............................................................................................................................................. 380 데이터 보호............................................................................................................................ 380 데이터 암호화................................................................................................................. 381 ID 및 액세스 관리 ................................................................................................................... 381 대상 .............................................................................................................................. 381 자격 증명을 통한 인증..................................................................................................... 382 정책을 사용하여 액세스 관리 ............................................................................................ 384 Amazon Cognito에서 IAM을 사용하는 방법......................................................................... 385 자격 증명 기반 정책 예제................................................................................................. 392 문제 해결....................................................................................................................... 394 서비스 연결 역할 사용..................................................................................................... 396 인증 .............................................................................................................................. 399 로깅 및 모니터링 ..................................................................................................................... 406 CloudWatch 및 Service Quotas에서 할당량 및 사용량 추적 .................................................... 406 AWS CloudTrail을 사용하여 Amazon Cognito API 호출 로깅.................................................. 412 규정 준수 검증 ........................................................................................................................ 425 복원성................................................................................................................................... 425 리전 데이터 고려 사항..................................................................................................... 426 인프라 보안............................................................................................................................ 426 구성 및 취약성 분석 ................................................................................................................ 426 AWS 관리형 정책 .................................................................................................................... 427 정책 업데이트................................................................................................................. 427 리소스에 태그 지정........................................................................................................................ 429 지원되는 리소스...................................................................................................................... 429 태그 제한............................................................................................................................... 429 콘솔을 사용하여 태그 관리 ....................................................................................................... 430 AWS CLI 예제........................................................................................................................ 430 태그 할당....................................................................................................................... 431 태그 보기....................................................................................................................... 431 태그 제거....................................................................................................................... 432 리소스를 생성할 때 태그 적용 ........................................................................................... 432 API 작업................................................................................................................................ 433 사용자 풀 태그에 대한 API 작업 ........................................................................................ 433 자격 증명 풀 태그에 대한 API 작업 .................................................................................... 433 할당량........................................................................................................................................... 434 작업 할당량............................................................................................................................ 434 할당량 분류.................................................................................................................... 434 특별 요청 속도 처리가 포함된 Amazon Cognito 사용자 풀 API 작업......................................... 434 Monthly active users(월별 활성 사용자).............................................................................. 435 Amazon Cognito 사용자 풀 API 작업 범주 및 요청 속도 할당량............................................... 435 할당량 사용량 추적 ......................................................................................................... 439 할당량 요구 사항 파악..................................................................................................... 440 할당량 최적화................................................................................................................. 440 할당량 증가 요청 ............................................................................................................. 441 Amazon Cognito 자격 증명 풀(페더레이션 자격 증명) API연산 요청 속도 할당량 ........................ 441 리소스 할당량......................................................................................................................... 442 API 참조........................................................................................................................................ 446 호스트된 UI 및 OIDC 엔드포인트 참조....................................................................................... 446 권한 부여 엔드포인트...................................................................................................... 447 Token 엔드포인트........................................................................................................... 452 UserInfo 엔드포인트........................................................................................................ 456 Login 엔드포인트............................................................................................................ 458 Logout 엔드포인트.......................................................................................................... 459 취소 엔드포인트.............................................................................................................. 461 사용자 풀 API 참조................................................................................................................. 462 자격 증명 풀 API 참조 ............................................................................................................. 462 Cognito Sync API 참조............................................................................................................ 463 vii Amazon Cognito 개발자 안내서 문서 기록....................................................................................................................................... 464 viii Amazon Cognito 개발자 안내서 Amazon Cognito란 무엇입니까? Amazon Cognito는 웹 및 모바일 앱에 대한 인증, 권한 부여 및 사용자 관리를 제공합니다. 사용자는 사용자 이름과 암호를 사용하여 직접 로그인하거나 Facebook, Amazon, Google 또는 Apple 같은 타사를 통해 로그 인할 수 있습니다. Amazon Cognito의 두 가지 주요 구성 요소는 사용자 풀과 자격 증명 풀입니다. 사용자 풀은 앱 사용자의 가 입 및 로그인 옵션을 제공하는 사용자 디렉터리입니다. 자격 증명 풀을 통해 사용자에게 기타 AWS 서비스에 액세스할 수 있는 권한을 부여할 수 있습니다. 자격 증명 풀과 사용자 풀을 별도로 또는 함께 사용할 수 있습 니다. Amazon Cognito 사용자 풀 및 자격 증명 풀을 함께 사용 아래 일반적인 Amazon Cognito 시나리오 다이어그램을 참조하세요. 목표는 사용자 인증 이후 다른 AWS 서 비스에 대한 사용자 액세스 권한을 부여하는 것입니다. 1. 첫 번째 단계에서 앱 사용자는 사용자 풀을 통해 로그인하여 인증 성공 이후 사용자 풀 토큰을 받습니다. 2. 다음으로 앱은 자격 증명 풀을 통해 사용자 풀 토큰을 AWS 자격 증명으로 교환합니다. 3. 마지막으로 앱 사용자는 AWS 자격 증명을 사용하여 Amazon S3, DynamoDB 등 다른 AWS 서비스에 액세스할 수 있습니다. 자격 증명 풀과 사용자 풀 사용에 대한 예제는 일반적인 Amazon Cognito 시나리오 (p. 9) 단원을 참조하 십시오. Amazon Cognito는 SOC 1-3, PCI DSS, ISO 27001을 준수하며, HIPAA-BAA 적격 서비스입니다. 자세한 내 용은 범위 내 AWS 서비스를 참조하세요. 또한 리전 데이터 고려 사항 (p. 426) 단원도 참조하십시오. 주제 • Amazon Cognito의 기능 (p. 2) 1 Amazon Cognito 개발자 안내서 Amazon Cognito의 기능 • Amazon Cognito 시작하기 (p. 2) • 리전별 가용성 (p. 3) • Amazon Cognito 요금 (p. 3) • Amazon Cognito 콘솔 사용 (p. 3) Amazon Cognito의 기능 사용자 풀 사용자 풀은 Amazon Cognito의 사용자 디렉터리입니다. 사용자 풀에서 사용자는 Amazon Cognito를 통해, 또는 서드 파티 자격 증명 공급자(IdP)를 통해 페더레이션하여 웹 또는 모바일 앱에 로그인할 수 있습니다. 사 용자가 직접 또는 타사를 통해 로그인하는지 여부와 무관하게 사용자 풀의 모든 멤버는 디렉터리 프로필을 보유하며, SDK를 통해 액세스할 수 있습니다. 사용자 풀 제공 사항: • 가입 및 로그인 서비스. • 사용자 로그인을 위한 내장 사용자 지정 웹 UI. • Facebook, Google, Login with Amazon 및 Sign in with Apple을 통한 소셜 로그인 및 사용자 풀의 SAML 및 OIDC 자격 증명 공급자를 통한 로그인. • 사용자 디렉터리 관리 및 사용자 프로필. • 멀티 팩터 인증(MFA), 이상 있는 자격 증명 확인, 계정 탈취 보호, 전화 및 이메일 확인과 같은 보안 기능. • AWS Lambda 트리거를 통한 사용자 지정 워크플로우 및 사용자 마이그레이션. 사용자 풀에 대한 자세한 내용은 사용자 풀 시작하기 (p. 22) 및 Amazon Cognito 사용자 풀 API 참조를 참 조하세요. 자격 증명 풀 자격 증명 풀로 사용자는 임시 AWS 자격 증명을 얻어 Amazon S3, DynamoDB 등의 다른 AWS 서비스에 액 세스할 수 있습니다. 자격 증명 풀은 익명 게스트 사용자는 물론 자격 증명에 대한 사용자 인증에 사용할 수 있는 다음 자격 증명 공급자를 지원합니다. • Amazon Cognito user pools • Facebook, Google, Login with Amazon 및 Sign in with Apple을 통한 소셜 로그인 • OpenID Connect(OIDC) 공급자 • SAML 자격 증명 공급자 • 개발자 인증 자격 증명 사용자 프로필 정보를 저장하려면 자격 증명 풀이 사용자 풀에 통합되어야 합니다. 자격 증명 풀에 대한 자세한 내용은 Amazon Cognito 자격 증명 풀(페더레이션 자격 증명) 시작하 기 (p. 279) 및 Amazon Cognito 자격 증명 풀 API 참조를 참조하세요. Amazon Cognito 시작하기 주요 작업 및 시작 지점 가이드는 Amazon Cognito 시작하기 (p. 6) 단원을 참조하십시오. 동영상, 기사, 설명서, 샘플 앱은 Amazon Cognito 개발자 리소스를 참조하세요. 2
Description: