SMS 리전을 사용하여 SMS 악용으로부터 앱 보호

이 가이드에서는 SMS 리전을 사용하여 Identity Platform SMS 인증 사용을 제한하고 사용량 측정항목을 확인하는 방법을 보여줍니다.

SMS 리전 개요

SMS 리전은 SMS 악용으로부터 앱을 보호하기 위해 사용할 수 있는 Identity Platform 기능입니다.

SMS 악용은 일반적으로 악의적인 행위자가 서비스에서 수익 공유 계약을 맺은 이동통신사를 통해 SMS를 보내도록 할 때 발생합니다. SMS 악용은 비용을 증가시키고 고객의 제품 평판을 떨어뜨릴 수 있습니다.

Identity Platform은 SMS 전화 승인을 허용하므로 SMS 악용이 발생할 수 있습니다.

SMS 리전 기능을 사용하면 SMS 전화 승인을 받을 수 있는 리전을 설정할 수 있습니다.

이 기능은 다음을 제공합니다.

  • SMS 리전 정책을 설정할 수 있는 Firebase Console 인터페이스입니다.
  • SMS 리전 정책을 설정하는 API입니다.
  • SMS 리전 정책 사용 결정을 알릴 수 있는 측정항목입니다.

리전 정책 설정

이 섹션에서는 Identity Platform 리전 정책을 설명합니다. 다음 유형의 정책을 설정할 수 있으며 하나만 활성화할 수 있습니다.

  • 허용 목록 전용: 허용 목록에 지정한 리전만 전화 승인 요청을 수신할 수 있습니다.
  • 차단 목록 전용: 차단 목록에 지정한 리전을 제외한 모든 리전에서 전화 승인 요청을 수신할 수 있습니다.

구성을 변경한 후 시스템에서 즉시 정책 시행을 시작합니다. 전화번호의 지역 코드를 기준으로 정책에서 허용하지 않는 리전의 전화 승인 요청을 차단합니다.

허용 목록 전용 정책

허용 목록 전용 정책을 설정하려면 다음 단계를 따르세요.

Firebase Console

  1. Firebase Console에서 Firebase 인증 설정 페이지로 이동합니다.

    Firebase 인증 설정으로 이동

    1. 탐색창에서 SMS 리전 정책을 선택합니다.

    2. 허용을 선택합니다.

    3. 리전 선택을 클릭합니다.

  2. SMS 메시지를 보낼 리전만 추가하세요. 목록에 없는 리전은 차단됩니다.

  3. 저장을 클릭합니다.

    허용 목록이나 차단 목록 중 하나만 구성 가능하며, 둘 다 구성할 수는 없습니다. 이 경우 이전 구성을 덮어씁니다.

Identity Toolkit API

  1. Google Cloud 콘솔에서 프로젝트의 액세스 토큰을 출력하려면 다음 명령어를 실행합니다.

    gcloud auth print-access-token --project=PROJECT_ID
    
  2. Identity Toolkit API를 사용하여 새 정책을 포함하도록 프로젝트 구성을 업데이트합니다.

    curl -X PATCH -d "{'sms_region_config':{'allowlist_only':{'allowed_regions':['REGION_LIST']}}}" \
    -H 'Authorization: Bearer ACCESS_TOKEN' \
    -H 'Content-Type: application/json' \
    'https://identitytoolkit.googleapis.com/admin/v2/projects/PROJECT_ID/config?updateMask=sms_region_config'
    

다음을 바꿉니다.

  • ACCESS_TOKEN: 이전에 생성한 액세스 토큰입니다.
  • REGION_LIST: 하나 이상의 리전입니다(예: IN 또는 US).
  • PROJECT_ID: 프로젝트 ID

다른 필드가 변경되지 않도록 하려면 업데이트 마스크를 제공해야 합니다.

차단 목록 전용 정책

차단 목록 전용 정책을 설정하려면 다음 단계를 따르세요.

Firebase Console

  1. Firebase Console에서 Firebase 인증 설정 페이지로 이동하고 탐색창에서 SMS 리전 정책을 선택합니다.

    Firebase 인증 설정으로 이동

    1. 거부를 선택합니다.

    2. 리전 선택을 클릭합니다.

  2. SMS 메시지 전송을 차단하려는 리전을 추가합니다. 목록에 없는 리전은 허용됩니다.

  3. 저장을 클릭합니다.

    허용 목록이나 차단 목록 중 하나만 구성 가능하며, 둘 다 구성할 수는 없습니다. 이 경우 이전 구성을 덮어씁니다.

Identity Toolkit API

  1. Google Cloud 콘솔에서 프로젝트의 액세스 토큰을 출력하려면 다음 명령어를 실행합니다.

    gcloud auth print-access-token --project=PROJECT_ID
    
  2. Identity Toolkit API를 사용하여 새 정책을 포함하도록 프로젝트 구성을 업데이트합니다.

    curl -X PATCH -d "{'sms_region_config':{'denylist_only':{'disallowed_regions':['REGION_LIST']}}}" \
    -H 'Authorization: Bearer ACCESS_TOKEN' \
    -H 'Content-Type: application/json' \
    'https://identitytoolkit.googleapis.com/admin/v2/projects/PROJECT_ID/config?updateMask=sms_region_config'
    

다음을 바꿉니다.

  • ACCESS_TOKEN: 이전에 생성한 액세스 토큰입니다.
  • REGION_LIST: 하나 이상의 리전입니다(예: IN 또는 US).
  • PROJECT_ID: 프로젝트 ID

다른 필드가 변경되지 않도록 하려면 업데이트 마스크를 제공해야 합니다.

리전별 SMS 사용 측정항목 액세스

이 섹션에서는 SMS 사용 측정항목을 보는 방법에 대해 설명합니다.

측정항목을 보려면 다음 안내를 따르세요.

  1. Google Cloud 콘솔에서 Cloud Monitoring의 측정항목 탐색기 페이지로 이동합니다.

    Cloud Monitoring으로 이동.

  2. 다음 필드를 선택합니다.

    • identitytoolkit.googleapis.com/usage/sent_sms_count,
    • identitytoolkit.googleapis.com/usage/blocked_sms_count,
    • firebaseauth.googleapis.com/phone_auth/phone_verification_count.

    측정항목에는 region_code 필드가 있습니다. 이 코드를 사용하여 SMS 승인을 받는 리전을 확인합니다.

  3. 특정 리전에서 인증 성공률을 verification_success_rate = phone_verification_count/sent_sms_count로 계산합니다. 일반적으로 인증 성공률이 75%를 초과하면 허용 가능한 것으로 간주됩니다.

verification_success_rate가 낮으면, 특히 사용자가 없을 것으로 예상되는 리전에서 악용이 표시될 수 있습니다. 일반적으로 인증 성공률이 75% 미만이면 낮은 것으로 간주됩니다.

SMS 악용이 의심되는 경우 리전 정책을 설정할 수 있습니다.