SMS リージョンを使用して SMS の不正使用からアプリを保護する

このガイドでは、SMS のリージョンを使用して Identity Platform SMS 検証の使用を制限し、使用状況の指標を表示する方法について説明します。

SMS のリージョンの概要

SMS のリージョンは、SMS の不正使用からアプリを保護するために使用できる Identity Platform の機能です。

通常、SMS の不正使用は、悪意のあるアクターが、収益受け取りの契約を結んだ携帯通信会社を通じて SMS をサービスに送信させた場合に発生します。SMS の不正使用はコストの増加につながり、顧客からのプロダクトの評判を損なわせる可能性があります。

Identity Platform では SMS での電話認証ができるため、SMS の不正使用が発生する可能性があります。

SMS のリージョン機能を使用すると、SMS での電話認証を受信できるリージョンを設定できます。

この機能では以下を利用できます。

  • SMS リージョン ポリシーを設定するための Firebase コンソール インターフェース。
  • SMS リージョン ポリシーを設定するための API。
  • SMS リージョン ポリシーを使用するかどうかの判断に役立つ指標。

リージョン ポリシーの設定

このセクションでは、Identity Platform のリージョン ポリシーについて説明します。次のタイプのポリシーを設定できます。1 つのポリシーのみを有効にできます。

  • 許可リストのみ: 許可リストで指定したリージョンのみが、電話認証リクエストを受け取ることができます。
  • 拒否リストのみ: すべてのリージョンで、拒否リストで指定したものを除く電話認可リクエストを着信できます。

構成を変更すると、システムがすぐにポリシーの適用を開始します。電話番号のリージョン コードに基づいて、ポリシーで許可されていないリージョンからの電話認証リクエストをブロックします。

許可リストのみのポリシー

許可リストのみのポリシーを設定する手順は次のとおりです。

Firebase コンソール

  1. Firebase コンソールで、[Firebase Auth Settings] ページに移動します。

    Firebase Authentication の設定に移動

    1. ナビゲーション パネルで [SMS のリージョン ポリシー] を選択します。

    2. [Allow] を選択します。

    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: 1 つ以上のリージョン(INUS など)。
  • PROJECT_ID: プロジェクト ID。

他のフィールドの変更を防止するには、更新マスクを指定する必要があります。

拒否リストのみのポリシー

拒否リストのみのポリシーを設定するには、次の操作を行います。

Firebase コンソール

  1. Firebase コンソールで、[Firebase Auth Settings] ページに移動し、ナビゲーション ペインで [SMS リージョン ポリシー] を選択します。

    Firebase Authentication の設定に移動

    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: 1 つ以上のリージョン(INUS など)。
  • PROJECT_ID: プロジェクト ID。

他のフィールドの変更を防止するには、更新マスクを指定する必要があります。

リージョン SMS の使用状況の指標にアクセスする

このセクションでは、SMS 使用の指標の表示方法について説明します。

指標を表示するには、次の手順を行います。

  1. Google Cloud コンソールで、Cloud Monitoring の [Metrics Explorer] ページに移動します。

    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

    指標には field_code というフィールドがあります。このコードは、SMS 認証を受信するリージョンを表示するために使用します。

  3. 特定のリージョンでの検証成功率を verification_success_rate = phone_verification_count/sent_sms_count として計算します。通常、検証成功率が 75% を超える場合は許容範囲とみなされます。

(特にユーザーが想定されていないリージョンで)verification_success_rate の値が低い場合、不正使用が発生している可能性があります。通常、検証成功率が 75% 未満の場合は低いとみなされます。

SMS の不正使用が疑われる場合は、リージョン ポリシーを設定できます。