Play Integrity API を使用してアプリやゲームを危険な操作から保護することができます。こうした操作を特定することで、アプリは適切な措置を取り、攻撃や不正使用のリスクを軽減できます。
仕組み
Integrity API は、Android アプリとゲームのデベロッパーが危険で不正なトラフィックを未然に検出できるよう、Google Play の不正使用対策機能と一連の完全性シグナルを統合したものです。たとえば、改変されたバージョンのアプリやゲーム、信頼できないデバイス、信頼できない環境などからのトラフィックを対象とします。こうしたトラフィックを検出することで、攻撃や、不正行為、不正アクセスなどの不正使用を防止するための適切な措置を取ることができます。
アプリやゲームで定義された操作をユーザーが実行すると、デベロッパーのサーバーは Integrity API を呼び出すようクライアント サイドのコードに指示します。Google Play サーバーは、このデバイスとそのバイナリを信頼できるかどうかについての完全性判定の結果とともに、暗号化されたレスポンスを返します。アプリは、確認のため、そのレスポンスをデベロッパーのサーバーに転送します。サーバーは、アプリやゲームが次に行う動作を決定できます。
この API は、次の情報を含むレスポンスの形で、完全性判定の結果を提供します。
- 正規のアプリバイナリ: Google Play で認識されている、改変されていないバイナリとやり取りしているかどうかを判断します。
- 正規の Play インストール: 現在のユーザー アカウントにライセンスが付与されているかどうか(つまりユーザーが Google Play でアプリまたはゲームのインストールや支払いを行ったかどうか)を判断します。
- 真正な Android デバイス: Google Play 開発者サービスを搭載した真正な Android デバイス(または PC 版 Google Play Games の真正なインスタンス)でアプリが実行されているかどうかを判断します。
完全性判定の結果で環境に関する詳細情報を受け取ることもできます。
- アプリのアクセスによるリスク: 画面をキャプチャしたり、アプリの上にオーバーレイを表示したり、デバイスを操作したりする可能性のあるアプリが他に実行されているかどうかを判断します。
- 既知のマルウェアによるリスク: Google Play プロテクトがオンになっているか、既知のマルウェアがデバイスで検出されたかどうかを判断します。
ヒント:
- Play Integrity API やその他の Play 開発者サービスのステータスは、Google Play ステータス ダッシュボードを使用してモニタリングできます。
- Integrity API をアプリで最大限有効に活用するには、デベロッパー向け Android サイトのドキュメントに記載されているおすすめの方法を行ってください。
Play Integrity API を設定、管理する
アプリで Integrity API を利用できるようにする
アプリで Integrity API のレスポンスを利用できるようにするには、Google Play Console で Google Cloud プロジェクトをリンクする必要があります。プロジェクトをリンクする方法は次のとおりです。
- Google Play Console を開き、[アプリの完全性] ページ([テストとリリース ] > [アプリの完全性])に移動します。
- [Play Integrity API] セクションまでスクロールします。
- [既存のプロジェクトをリンクする] を選択し、リンク対象のプロジェクトを指定します。
- [Cloud プロジェクトをリンク] をクリックします。
Integrity API とアプリとの統合を開始するための条件は次のとおりです。
- Java / Kotlin アプリの場合は、Google の Maven リポジトリから Play Integrity API 向けの最新バージョンの Android ライブラリをインストールします。
- Unity ゲームの場合は、Google Play の Unity 向けプラグインの最新リリースをインストールします。2019.x、2020.x 以降のすべてのバージョンがサポートされています。Unity 2018.x を使用している場合は、2018.4 以降をインストールします。Unity 2017.x を使用している場合は、2017.4.40 以降をインストールします。Unity 5.x 以前はサポートされていません。
- ネイティブのアプリとゲーム場合は、最新の Play Core Native SDK をインストールします。
これで、Android デベロッパー サイトに記載されている手順に沿ってアプリやゲームで Play Integrity API を使い始めることができます。
(省略可)Integrity API のレスポンスをカスタマイズする
API の完全性レスポンスを設定する方法については、デベロッパー向け Android サイトの記事をご覧ください。
API レスポンスを編集するには:
- Google Play Console を開き、[アプリの完全性] ページ([テストとリリース ] > [アプリの完全性])に移動します。
- [Play Integrity API] セクションまでスクロールします。
- [設定] をクリックします。
- [レスポンス] までスクロールします。
- [編集] をクリックします。
- 変更対象の API レスポンスの横にあるチェックボックスをオンまたはオフにします。
- [変更を保存] をクリックします。
重要: API レスポンスの変更は、アプリが製品版の場合も含め、保存後すぐに反映されます。Google Play Console で API レスポンスのセットを変更する前に、アプリのサーバーでそうしたレスポンスを受け入れる準備ができていることをご確認ください。
(省略可)クラシック リクエストの設定を構成する
デフォルトでは、Google がクラシック リクエストのレスポンスの暗号化を管理します。ただし、必要に応じてレスポンスの暗号化をご自身で管理することもできます。
重要: レスポンスの暗号化の管理を Google にするかご自身にするかを切り替えるには、バックエンド サーバーでのコード変更が必要になります。
レスポンスの暗号化をご自身による管理に切り替えるには:
- Google Play Console を開き、[アプリの完全性] ページ([テストとリリース ] > [アプリの完全性])に移動します。
- [Play Integrity API] セクションまでスクロールします。
- [設定] をクリックします。
- [クラシック リクエスト] セクションまでスクロールします。[レスポンスの暗号化] の横のステータスは、デフォルトで [Google で管理] になっています。[変更] をクリックします。
- [レスポンスの暗号鍵を自分で管理、ダウンロードする] を選択します。Google がレスポンスの暗号鍵を生成し、自分でダウンロードと管理を行うようになります。その鍵を使ってレスポンスを復号できるようバックエンド サーバーのロジックを更新する必要があります。
- 画面上の手順に沿って .pem ファイルを生成し、その .pem ファイルをアップロードして API キーをダウンロードします。
- [変更を保存] をクリックします。
- レスポンスの暗号化の管理が更新されたことを示すメッセージが画面に表示されます。
- 新しいレスポンスの暗号鍵が自動的にダウンロードされます。[キーをダウンロード] をクリックすれば、いつでも後でダウンロードできます。
ご自身による管理から Google の管理に戻すには:
- Google Play Console を開き、[アプリの完全性] ページ([テストとリリース ] > [アプリの完全性])に移動します。
- [Play Integrity API] セクションまでスクロールします。
- [設定] をクリックします。
- [クラシック リクエスト] セクションまでスクロールします。すでに設定を変更しているため、[レスポンスの暗号化] の横のステータスは [セルフマネージド] になっています。[編集] をクリックします。
- [レスポンスの暗号化の管理を Google に任せる(推奨)] を選択して [変更を保存] をクリックします。Google がレスポンスの暗号鍵の生成、管理を行います。バックエンド サーバーが Google Play のサーバーを呼び出してレスポンスを復号します。
Play Integrity API の統合をテストする
Integrity API の統合をテストするには、Gmail アカウントの一覧を設定します。最初に、テスターにリリースへのアクセス権が付与されていることをご確認ください。内部テストトラックまたはテスト対象のトラックにアプリを公開します。次に、メールアドレスでテスターを管理する手順、または Google グループを使用する手順に沿って、テスターがリリースにアクセスできるようにします。
テストを設定するには:
- Google Play Console を開き、[アプリの完全性] ページ([テストとリリース ] > [アプリの完全性])に移動します。
- [Play Integrity API] セクションまでスクロールします。
- [設定] をクリックします。
- [テスト] までスクロールします。
- [新しいテストを作成] をクリックします。
- メーリング リストを選択するか、新しいリストを作成します。
- [テストを作成] をクリックします。
ユーザーが Integrity API ダイアログからアクセスしたときのストアの掲載情報をカスタマイズする
Integrity API の修正ダイアログを使用して、アプリを非公式に入手したユーザーに対して、Google Play でアプリを入手するよう促すメッセージを表示できます。ユーザーがダイアログをタップすると、ストアの掲載情報にリダイレクトされます。そこに表示されているインストール(または購入や更新)ボタンをタップすると、ユーザーの Play ライブラリにアプリが追加されます。
Integrity API の修正ダイアログをタップしたユーザー向けに、ストアの掲載情報のアセット(アプリの名前、アイコン、説明、画像、映像など)をカスタマイズできます。Integrity API ダイアログからユーザーがアクセスしたときのストアの掲載情報をカスタマイズするには:
- Google Play Console を開き、[アプリの完全性] ページ([テストとリリース ] > [アプリの完全性])に移動します。
- [Play Integrity API] セクションまでスクロールします。
- [設定] をクリックします。
- [ストアの掲載情報のカスタマイズ] セクションまでスクロールします。
- [掲載情報の作成] をクリックします。
- [ストアのカスタム掲載情報を作成] ページの指示に沿って操作し、[保存] をクリックします。
[ストアのカスタム掲載情報] ページから Integrity API ダイアログ用のストアのカスタム掲載情報を直接作成することもできます。
- Google Play Console を開き、[ストアのカスタム掲載情報] ページ([ユーザーを増やす] > [ストアのカスタム掲載情報])に移動します。
- [掲載情報の作成] をクリックし、新しい掲載情報を作成するか既存のリスティングを複製するかを選択して、[次へ] をクリックします。
- [掲載情報] で [ターゲット ユーザー] セクションを探します。
- [URL] を選択し、テキスト ボックスに「playintegrity」と入力します。
- その他の情報をすべて入力して、[保存] をクリックします。
ヒント: URL パラメータ「playintegrity」は完全性のディープリンク用に予約されている特殊なキーワードであるため、ストアのカスタム掲載情報を設定する際に正確に入力する必要があります。
Play Integrity API の 1 日あたりの最大リクエスト数を増やす
デフォルトでは、アプリは Integrity API に対して 1 日あたり最大 10,000 件のリクエストを行えます。
アプリが行っている日別リクエスト数を確認するには:
- Google Play Console を開き、[アプリの完全性] ページ([テストとリリース ] > [アプリの完全性])に移動します。
- [Play Integrity API] セクションまでスクロールします。
- 日別のリクエスト数が表示されます。詳しいデータを表示したり、期間を変更したり、フィルタを適用したりするには、[Integrity API レポートを表示] をクリックします。
アプリの 1 日あたりの最大リクエスト数を確認するには:
- Google Play Console を開き、[アプリの完全性] ページ([テストとリリース ] > [アプリの完全性])に移動します。
- [Play Integrity API] セクションまでスクロールします。
- [設定] をクリックします。
- 使用量ティアを確認します。
1 日あたり 10,000 件を超えるリクエストを行うことを要望できます。対象となるには、以下を行う必要があります。
- 再試行を含む API ロジックの実装が正しいことを確認する。
- 他の配信チャネルに加えて Google Play でアプリを公開する。
1 日あたりの最大リクエスト数を増やすには、こちらのフォームに記入してください。
関連コンテンツ
- Play Integrity API に関するデベロッパー向けドキュメントをご確認ください。
- Play Integrity API の概要の動画をご覧ください。
- Google Play Console の完全性と署名のサービスについてご確認ください。
- Android デベロッパー サイトの完全性と署名のサービスについてご確認ください。