このページでは、組み込みの Play Integrity プロバイダを使用して、Android アプリで App Check を有効にする方法について説明します。App Check を有効にすると、自分のアプリだけがプロジェクトのバックエンド リソースにアクセスできるようになります。この機能の概要をご覧ください。
Play Integrity プロバイダは、Google Play、Google Play 以外、またはその両方で公開されている Android アプリをサポートしています。ユースケースで App Check で実装されていない Play Integrity 機能が必要な場合や、独自のカスタム プロバイダで App Check を使用する場合は、App Check カスタム プロバイダを実装するをご覧ください。
1. Firebase プロジェクトを設定する
Firebase を Android プロジェクトに追加します(まだ行っていない場合)。
Play Integrity API を有効にします。
Google Play Console でアプリを選択します。アプリをまだ追加していない場合は追加します。
[リリース] セクションで、[アプリの完全性] をクリックします。
そのページの [Play Integrity API] セクションに移動し、[Cloud プロジェクトをリンク] をクリックして、Google Cloud プロジェクトのリストから Firebase プロジェクトを選択します。ここで選択するプロジェクトは、アプリを登録するプロジェクトと同じである必要があります(次のステップを参照)。
Firebase コンソールの App Check] セクションで、Play Integrity プロバイダで App Check を使用するようにアプリを登録します。アプリの署名証明書の SHA-256 フィンガープリントを提供する必要があります。
Firebase プロダクトで適用を有効にすると、プロダクトのバックエンド リソースにアクセスできるのは登録されているアプリのみとなるため、通常、プロジェクトのアプリすべてを登録する必要があります。
省略可: アプリの登録設定で、プロバイダが発行する App Check トークンのカスタム有効期間(TTL)を設定します。TTL は 30 分から 7 日までの任意の値に設定できます。この値を変更する場合は、次のトレードオフに注意してください。
- セキュリティ: TTL が短いほど、漏えいしたトークンや傍受されたトークンが攻撃者によって悪用される可能性が低減するため、セキュリティが向上します。
- パフォーマンス: TTL が短いほど、アプリで証明書の取得が頻繁に行われます。アプリで証明書が取得されるたびにネットワーク リクエストのレイテンシが増加するため、TTL が短いと、アプリのパフォーマンスに影響する可能性があります。
- 割り当てとコスト: TTL を短くすると、証明書の取得が頻繁に発生し、割り当てが早く消費されます。有料サービスの場合は、費用が増加する可能性があります。割り当てと上限をご覧ください。
通常は、デフォルトの TTL(1 時間)で十分です。App Check ライブラリは TTL の約半分でトークンを更新することに留意してください。
詳細設定を構成する(省略可)
App Check には、Google Play 以外でアプリを配信するなど、高度なユースケースをサポートするための設定が多数用意されています。これらの設定は、各 Android アプリに対して Firebase コンソールの [App Check] セクションで構成できます。これらの設定は、初めてアプリを登録する際に、次の表に従って構成することをおすすめします。
アプリの配信チャネル | PLAY_RECOGNIZED | ライセンス契約 | 許容できるデバイスの完全性の最小レベル |
---|---|---|---|
Google Play に限定 | 必須 | 必須 | デバイスの完全性レベルを明示的に確認しない |
Google Play 以外に限定 | 不要 | 不要 | デバイスの完全性 |
Google Play と Google Play 以外 | 必須 | 不要 | デバイスの完全性レベルを明示的に確認しない |
詳細
各詳細設定は、Play Integrity の判定ラベルに対応しています。詳しくは、Play Integrity のドキュメントをご覧ください。
- デフォルトでは、App Check には
PLAY_RECOGNIZED
アプリ認識ラベルが必要です。Google Play で公開されていないアプリは、このラベルの対象外です。 - デフォルトでは、App Check にはアプリのライセンス ラベル
LICENSED
は必要ありません。このラベルを受け取る対象となるのは、Google Play から直接アプリをインストールまたは更新したユーザーのみです。 デフォルトでは、App Check はデバイスの完全性判定を明示的に行いません。App Check は、次の 3 つのデバイスの完全性レベルの明示的なチェックをサポートしており、デバイスの完全性が高い順に一覧表示します。
基本的な完全性。App Check に
MEETS_BASIC_INTEGRITY
デバイス認識ラベルを要求させます。アプリでこのオプションのラベルを表示するには、まず Google Play Console でオプトインする必要があります。デバイスの完全性。App Check に
MEETS_DEVICE_INTEGRITY
デバイス認識ラベルを要求させます。すべてのアプリがこのラベルを受け取る対象となります。強力な完全性。App Check に
MEETS_STRONG_INTEGRITY
デバイス認識ラベルを要求させます。アプリがこのオプションのラベルを受け取る対象となるようにするには、まず Google Play Console でオプトインする必要があります。
2. アプリに App Check ライブラリを追加します。
モジュール(アプリレベル)の Gradle ファイル(通常は<project>/<app-module>/build.gradle.kts
または <project>/<app-module>/build.gradle
)に、Android 用 App Check ライブラリの依存関係を追加します。ライブラリのバージョニングの制御には、Firebase Android BoM を使用することをおすすめします。
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:34.2.0")) // Add the dependencies for the App Check libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-appcheck-playintegrity") }
Firebase Android BoM を使用すると、アプリは常に互換性のあるバージョンの Firebase Android ライブラリを使用します。
(代替方法)BoM を使用せずに Firebase ライブラリの依存関係を追加する
Firebase BoM を使用しない場合は、依存関係の行でそれぞれの Firebase ライブラリのバージョンを指定する必要があります。
アプリで複数の Firebase ライブラリを使用する場合は、すべてのバージョンの互換性を確保するため、BoM を使用してライブラリのバージョンを管理することを強くおすすめします。
dependencies { // Add the dependencies for the App Check libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-appcheck-playintegrity:19.0.0") }
3. App Check を初期化する
他の Firebase SDK を使用する前に、以下の初期化コードをアプリに追加します。
Kotlin
Firebase.initialize(context = this) Firebase.appCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance(), )
Java
FirebaseApp.initializeApp(/*context=*/ this); FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance(); firebaseAppCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance());
次のステップ
アプリに App Check ライブラリがインストールされたら、更新されたアプリのユーザーへの配布を開始します。
更新されたクライアント アプリは、Firebase にリクエストを送信するたびに App Check トークンを送信しますが、Firebase コンソールの App Check セクションで適用を有効にするまで、Firebase プロダクトは有効なトークンを必要としません。
指標をモニタリングして適用を有効にする
ただし、適用を有効にする前に、既存の正規ユーザーを中断しないように対策を行う必要があります。一方、アプリリソースの不審な使用に気づいた場合は、すぐに適用を有効にすることもできます。
この決定を行うことができるように、使用するサービスの App Check 指標を確認します。
- Firebase AI Logic、Data Connect、Realtime Database、Cloud Firestore、Cloud Storage、Authentication、Google Identity for iOS、Maps JavaScript API、Places API(新規)の App Check リクエスト指標をモニタリングします。
- Cloud Functions に対して App Check リクエスト指標をモニタリングします。
App Check 適用を有効にする
App Check がユーザーに与える影響を理解し、続行する準備ができたら、App Check の適用を有効にできます。
- Firebase AI Logic、Data Connect、Realtime Database、Cloud Firestore、Cloud Storage、Authentication、Google Identity for iOS、Maps JavaScript API、Places API(新規)の App Check の適用を有効にします。
- Cloud Functions に対して App Check の適用を有効にします。
デバッグ環境で App Check を使用する
アプリを App Check に登録した後に、開発中のエミュレータや継続的インテグレーション(CI)など、通常は App Check が有効と分類しない環境でアプリを実行する場合は、実際の証明書プロバイダの代わりに App Check デバッグ プロバイダを使用するデバッグビルドのアプリを作成できます。
Android のデバッグ プロバイダで App Check を使用するをご覧ください。