Amazon Cognito 사용자 풀의 SMS 메시지 설정 - Amazon Cognito

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon Cognito 사용자 풀의 SMS 메시지 설정

사용자 풀에 대한 일부 Amazon Cognito 이벤트로 인해 Amazon Cognito가 사용자에게 SMS 문자 메시지를 보낼 수 있습니다. 예를 들어 전화 확인을 요구하도록 사용자 풀을 구성한 경우 사용자가 앱에서 새 계정을 등록하거나 암호를 다시 설정하면 Amazon Cognito에서 SMS 문자 메시지를 보냅니다. SMS 문자 메시지를 유발하는 작업에 따라 메시지에는 확인 코드, 임시 암호 또는 시작 메시지가 포함됩니다.

Amazon Cognito는 SMS 문자 메시지 전송에 Amazon Simple Notification Service(Amazon SNS)를 사용합니다. Amazon Cognito 또는 Amazon SNS를 통해 문자 메시지를 처음 보내는 경우 Amazon SNS에서 해당 보내는 사람을 샌드박스 환경에 배치합니다. 샌드박스 환경에서는 애플리케이션에서 SMS 문자 메시지를 테스트할 수 있습니다. 샌드박스에서 메시지는 확인된 전화 번호로만 보낼 수 있습니다.

Amazon SNS는 SMS 텍스트 메시지에 대해 요금을 부과합니다. 자세한 내용은 Amazon SNS 요금을 참조하세요.

참고

원치 않는 SMS 트래픽 양의 전 세계적 증가로 인해 일부 정부는 SMS 메시지 발신자와 수신자 사이에 장벽을 부과하고 있습니다. MFA와 사용자 업데이트에 SMS 메시지를 사용하는 경우 메시지가 전달되도록 추가 조치를 취해야 합니다. 또한 사용자가 거주할 수 있는 국가의 SMS 메시지 관련 규정을 모니터링하고 SMS 메시지 구성을 최신 상태로 유지해야 합니다. 자세한 내용은 Amazon Simple Notification Service 개발자 안내서의 모바일 문자 메시지(SMS)를 참조하세요.

SMS 메시지를 사용한 사용자 인증과 확인은 보안 모범 사례가 아닙니다. 전화번호는 소유자가 바뀔 수 있으며, 사용자의 가지고 있는 것 MFA 요소를 확실히 대표하지 못할 수 있습니다. 대신 앱이나 서드 파티 IdP를 사용하여 TOTP MFA를 구현하세요. 사용자 정의 인증 챌린지 Lambda 트리거를 사용하여 추가 사용자 지정 인증 요소를 생성할 수도 있습니다.

Amazon Cognito는 사용자가 입력할 수 있는 코드와 함께 SMS 메시지를 사용자에게 보냅니다. 다음 표에서는 SMS 메시지를 생성할 수 있는 이벤트를 보여줍니다.

메시지 옵션

활동 API 작업 전송 옵션 포맷 옵션 사용자 지정 가능 메시지 템플릿
Forgot password ForgotPassword Email, SMS code No N/A
Invitation AdminCreateUser Email, SMS code Yes 초대 메시지
Self-registration SignUp Email, SMS code, link Yes 검증 메시지
Email address or phone number verification UpdateUserAttributes Email, SMS code Yes 검증 메시지
Multi-factor authentication (MFA) AdminInitiateAuth, InitiateAuth SMS, authenticator app code Yes¹ MFA 메시지

¹ SMS 메시지의 경우.

Amazon Cognito 사용자 풀에서 처음으로 SMS 메시지 설정

Amazon Cognito는 Amazon SNS를 사용하여 사용자 풀로 SMS 메시지를 전송합니다. 자체 리소스를 사용하는 사용자 지정 SMS 발신자 Lambda 트리거를 사용하여 SMS 메시지를 보낼 수도 있습니다. 특정 AWS 리전지역에서 SMS 문자 메시지를 전송하도록 Amazon SNS를 처음 설정하면 Amazon SNS는 해당 지역의 SMS 샌드박스에 사용자를 배치합니다. Amazon SNS는 샌드박스를 사용하여 사기 및 남용을 방지하고 규정 준수 요구 사항을 AWS 계정 충족합니다. 샌드박스에 있는 경우 Amazon AWS 계정 SNS는 몇 가지 제한을 적용합니다. 예를 들어 Amazon SNS에서 확인한 최대 10개의 전화 번호로 문자 메시지를 보낼 수 있습니다. 샌드박스에 있는 동안에는 프로덕션 중인 애플리케이션에 Amazon SNS 구성을 사용하지 마십시오. AWS 계정 샌드박스에서는 Amazon Cognito가 사용자의 전화 번호로 메시지를 보낼 수 없습니다.

Amazon Cognito가 Amazon SNS로 SMS 메시지를 보내는 데 사용할 수 있는 IAM 역할을 준비합니다.

사용자 풀에서 SMS 메시지를 보낼 때 Amazon Cognito는 계정에서 IAM 역할을 맡습니다. Amazon Cognito는 해당 역할에 할당된 sns:Publish 권한을 사용하여 사용자에게 SMS 메시지를 보냅니다. Amazon Cognito 콘솔의 SMS 아래에 있는 사용자 풀의 Messaging(메시징) 탭에서 IAM role selection(IAM 역할 선택)을 설정하거나 사용자 풀 생성 마법사 중에 선택할 수 있습니다.

다음 예제에서는 IAM 역할 신뢰 정책은 Amazon Cognito 사용자 풀에 역할을 맡을 수 있는 제한된 권한을 부여합니다. Amazon Cognito는 aws:SourceArn 조건의 사용자 풀과 AWS 계정 조건의 aws:SourceAccount을 대신하여 역할을 맡을 때만 역할을 맡을 수 있습니다.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "cognito-idp.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "<your account number>" }, "ArnLike": { "aws:SourceArn": "<your user pool ARN>" } } }] }

aws:SourceArn 조건 값에 정확한 사용자 풀 ARN 또는 와일드카드 ARN을 지정할 수 있습니다. DescribeUserPoolAPI 요청을 통해 OR에 있는 사용자 풀의 AWS Management Console ARN을 조회하십시오.

IAM 역할 및 신뢰 정책에 대한 자세한 내용은 AWS Identity and Access Management 사용 설명서역할 용어 및 개념을 참조하세요.

Amazon SNS SMS AWS 리전 메시지용 선택

일부 AWS 리전지역에서는 Amazon Cognito SMS 메시지에 사용할 Amazon SNS 리소스가 포함된 지역을 선택할 수 있습니다. 아시아 태평양 (서울) 을 제외하고 Amazon Cognito를 사용할 수 있는 모든 AWS 리전 AWS 리전 곳에서 사용자 풀을 생성한 곳의 Amazon SNS 리소스를 사용할 수 있습니다. 리전을 선택할 때 SMS 메시징을 더 빠르고 안정적으로 만들려면 해당 사용자 풀과 동일한 리전에서 Amazon SNS 리소스를 사용합니다.

참고

에서는 새로운 Amazon Cognito 콘솔 환경으로 전환한 후에만 SMS 리소스의 지역을 변경할 수 있습니다. AWS Management Console

새 사용자 풀 마법사의 메시지 전송 구성(Configure message delivery) 단계에서 SMS 리소스에 대한 리전을 선택합니다. 또한 기존 사용자 풀의 메시징(Messaging) 탭의 SMS 아래에서 편집(Edit)을 선택할 수 있습니다.

Amazon Cognito는 출시 당시 대체 지역의 Amazon SNS 리소스와 함께 SMS 메시지를 전송하기도 AWS 리전했습니다. 선호 지역을 설정하려면 사용자 풀의 SmsConfigurationType객체 SnsRegion 파라미터를 사용하십시오. 다음 표의 Amazon Cognito 리전에서 Amazon Cognito 사용자 풀 리소스를 프로그래밍 방식으로 생성하고 SnsRegion 파라미터를 제공하지 않으면 사용자 풀이 레거시 Amazon SNS 리전에서 Amazon SNS 리소스와 함께 SMS 메시지를 보낼 수 있습니다.

아시아 태평양 (서울) 의 Amazon Cognito 사용자 풀은 아시아 태평양 (도쿄) 지역의 Amazon SNS 구성을 AWS 리전 사용해야 합니다.

Amazon SNS는 모든 새 계정의 지출 할당량을 매월 1.00 USD로 설정합니다. Amazon Cognito와 함께 사용하는 경우 지출 한도가 증가했을 수 있습니다. AWS 리전 Amazon SNS SMS 메시지를 변경하기 전에 AWS Support Center에서 할당량 증가 사례를 열어 새 지역의 한도를 늘리십시오. AWS 리전 자세한 내용은 Amazon Simple Notification Service 개발자 안내서Amazon SNS에 대한 월별 SMS 지출 할당량 증가 요청을 참조하세요.

다음 표의 모든 Amazon Cognito 리전에 대한 SMS 메시지를 해당되는 Amazon SNS 리전의 Amazon SNS 리소스와 함께 보낼 수 있습니다.

Amazon Cognito 리전 Amazon SNS 리전
미국 동부(오하이오) 미국 동부(오하이오), 미국 동부(버지니아 북부)
아시아 태평양(뭄바이) 아시아 태평양(뭄바이), 아시아 태평양(싱가포르)
캐나다(중부) 캐나다(중부), 미국 동부(버지니아 북부)
유럽(프랑크푸르트) 유럽(프랑크푸르트), 유럽(아일랜드)
유럽(런던) 유럽(런던), 유럽(아일랜드)
아시아 태평양(서울) 아시아 태평양(도쿄)
미국 동부(버지니아 북부) 미국 동부(버지니아 북부)
미국 서부(캘리포니아 북부) 미국 서부(캘리포니아 북부)
미국 서부(오리건) 미국 서부(오리건)
아시아 태평양(싱가포르) 아시아 태평양(싱가포르)
아시아 태평양(시드니) 아시아 태평양(시드니)
아시아 태평양(도쿄) 아시아 태평양(도쿄)
유럽(아일랜드) 유럽(아일랜드)
유럽(파리) 유럽(파리)
유럽(스톡홀름) 유럽(스톡홀름)
유럽(밀라노) 유럽(밀라노)
중동(바레인) 중동(바레인)
남아메리카(상파울루) 남아메리카(상파울루)
아시아 태평양(오사카) 아시아 태평양(오사카)
이스라엘(텔아비브) 이스라엘(텔아비브)
아프리카(케이프타운) 아프리카(케이프타운)
아시아 태평양(자카르타) 아시아 태평양(자카르타)
중동(UAE) 중동(UAE)
유럽(취리히) 유럽(취리히)

미국 전화 번호로 SMS 메시지를 보내기 위한 발신 자격 증명 얻기

미국 전화 번호로 SMS 문자 메시지를 보내려는 경우 SMS 샌드박스 테스트 환경을 구축하거나 프로덕션 환경을 구축하는 경우 모두 발신 자격 증명을 얻어야 합니다.

2021년 6월 1일부터 미국 이동 통신사는 미국 전화 번호로 메시지를 보낼 때 발신 자격 증명을 요구합니다. 발신 자격 증명이 아직 없는 경우 받아야 합니다. 소스 자격 증명을 얻는 방법을 알아보려면 Amazon Pinpoint 사용 설명서에서 번호 요청을 참조하세요.

다음과 같은 AWS 리전방식으로 사업을 운영하는 경우 AWS Support 티켓을 열어 원본 ID를 얻어야 합니다. 자세한 지침은 Amazon Simple Notification Service 개발자 가이드에서 SMS 메시징 지원 요청을 참조하세요.

  • 미국 동부(오하이오)

  • 유럽(스톡홀름)

  • 유럽(파리)

  • 유럽(밀라노)

  • Middle East (Bahrain)

  • 남아메리카(상파울루)

  • 미국 서부(캘리포니아 북부)

동일한 오리진 ID에 둘 이상의 오리진 ID가 있는 경우 Amazon SNS는 단축 코드 AWS 리전, 10DLC, 무료 전화 번호와 같은 우선 순위에 따라 오리진 ID 유형을 선택합니다. 이 우선 순위는 변경할 수 없습니다. 자세한 내용은 Amazon SNS FAQ를 참조하세요.

환경이 SMS 샌드박스인지 확인합니다.

환경이 SMS 샌드박스인지 확인하려면 다음 절차를 따르세요. 프로덕션 Amazon Cognito 사용자 풀이 AWS 리전 있는 각 위치에 대해 반복합니다.

환경이 SMS 샌드박스인지 확인하려면
  1. Amazon Cognito 콘솔로 이동합니다. 메시지가 표시되면 AWS 자격 증명을 입력합니다.

  2. [사용자 풀(User Pools)]을 선택합니다.

  3. 목록에서 기존 사용자 풀을 선택합니다.

  4. [메시징(Messaging)] 탭을 선택합니다.

  5. [SMS 구성(SMS configuration)] 섹션에서 [Amazon SNS 프로덕션 환경으로 이동(Move to Amazon SNS production environment)]을 확장합니다. 계정이 SMS 샌드박스에 있는 경우 다음 메시지가 표시됩니다.

    You are currently in the SMS Sandbox and cannot send SMS messages to unverified numbers.

    이 메시지가 표시되지 않으면 해당 계정으로 이미 SMS 메시지를 설정한 다른 사용자가 있는 것입니다. Amazon Cognito에서 사용자 풀 설정 완료 섹션으로 이동하세요.

  6. 메시지에서 Amazon SNS 링크를 선택합니다. 이렇게 하면 Amazon SNS 콘솔이 새 탭에서 열립니다.

  7. 샌드박스 환경에 있는지 확인합니다. 콘솔 메시지는 샌드박스 상태를 나타내며 AWS 리전, 다음과 같습니다.

    This account is in the SMS sandbox in US East (N. Virginia).

Amazon SNS 샌드박스 외부로 계정 이동

앱을 테스트하고 관리자가 확인할 수 있는 전화 번호로만 SMS 메시지를 보내야 하는 경우 이 단계를 건너뜁니다.

프로덕션에서 앱을 사용하려면 계정을 SMS 샌드박스에서 프로덕션으로 이동합니다. Amazon Cognito에서 사용할 Amazon SNS 리소스가 AWS 리전 포함된 오리진 ID를 구성한 후에는 SMS 샌드박스에 남아 있는 동안 미국 전화번호를 확인할 수 AWS 계정 있습니다. Amazon SNS 환경이 프로덕션 상태인 경우 사용자에게 SMS 메시지를 보내기 위해 Amazon SNS에서 사용자 전화 번호를 확인할 필요가 없습니다.

자세한 지침은 Amazon Simple Notification Service 개발자 가이드에서 SNS 샌드박스 환경에서 나가기를 참조하세요.

Amazon SNS에서 Amazon Cognito의 전화 번호 확인

계정을 SMS 샌드박스 외부로 이동한 경우 이 단계를 건너뜁니다.

환경이 SMS 샌드박스인 경우 Amazon SNS에서 확인한 모든 전화 번호로 메시지를 보낼 수 있습니다.

전화 번호를 확인하려면 다음을 수행합니다.

  1. Amazon SNS 콘솔의 문자 메시지(SMS)(Text messaging (SMS)) 섹션에 Sandbox 대상 전환 번호(Sandbox destination phone number)를 추가합니다.

  2. 입력한 전화 번호로 코드가 포함된 SMS 메시지를 수신합니다.

  3. Amazon SNS 콘솔에 SMS 메시지의 확인 코드(Verification code)를 입력합니다.

자세한 지침은 Amazon Simple Notification Service 개발자 가이드에서 SMS 샌드박스에서 전화 번호 추가 및 확인을 참조하세요.

참고

Amazon SNS는 사용자가 SMS 샌드박스에 있는 동안 확인할 수 있는 대상 전화 번호 수를 제한합니다. 자세한 내용은 Amazon Simple Notification Service 개발자 가이드에서 SMS 샌드박스를 참조하세요.

Amazon Cognito에서 사용자 풀 설정 완료

사용자 풀을 생성 또는 편집하던 브라우저 탭으로 돌아갑니다. 절차를 완료합니다. 사용자 풀에 SMS 구성을 성공적으로 추가하면 Amazon Cognito가 내부 전화번호에 테스트 메시지를 전송하여 구성이 제대로 작동하는지 확인합니다. Amazon SNS는 각 테스트 SMS 메시지에 대해 요금을 청구합니다.