App Check を使用して API キーを保護する
Firebase App Check は、正規のアプリ以外のソースから送信されたトラフィックをブロックすることで、アプリから Google Maps Platform への呼び出しを保護します。これは、Play Integrity などの証明書プロバイダからのトークンを確認することで行われます。アプリを App Check と統合すると、悪意のあるリクエストから保護されるため、不正な API 呼び出しに対して課金されることはありません。
App Check は私に適していますか?
ほとんどの場合、App Check を使用することをおすすめしますが、次のような場合は App Check が不要であるか、サポートされていません。
- 元の Places SDK を使用している。App Check は Places SDK(新版)でのみサポートされています。
- 非公開アプリまたは試験運用版アプリ。アプリが一般公開されていない場合、App Check は必要ありません。
- アプリがサーバー間でのみ使用される場合は、App Check は必要ありません。ただし、GMP と通信するサーバーがパブリック クライアント(モバイルアプリなど)で使用されている場合は、GMP ではなく App Check を使用してそのサーバーを保護することを検討してください。
- App Check の推奨証明書プロバイダは、証明書プロバイダによって危険な状態または信頼できないと判断されたデバイスでは機能しません。このようなデバイスをサポートする必要がある場合は、カスタム構成証明サービスをデプロイできます。詳しくは、手順をご覧ください。
実装手順の概要
大まかに言うと、アプリを App Check と統合する手順は次のとおりです。
- Firebase をアプリに追加します。
- App Check ライブラリを追加して初期化します。
- トークン プロバイダを追加します。
- デバッグを有効にします。
- アプリのリクエストをモニタリングし、適用を決定します。
App Check と統合すると、Firebase コンソールでバックエンド トラフィックの指標を確認できるようになります。これらの指標では、有効な App Check トークンが添付されているかどうかに基づいてリクエストの内訳を確認できます。詳細については、Firebase App Check のドキュメントをご覧ください。
ほとんどのリクエストが正規のソースからのものであり、ユーザーが App Check の実装を含むアプリの最新バージョンに更新していることを確認したら、適用を有効にできます。適用を有効にすると、有効な App Check トークンがないトラフィックはすべて App Check によって拒否されます。
App Check の統合を計画する際の考慮事項
統合を計画する際は、次の点を考慮してください。
推奨される証明書プロバイダである Play Integrity には、Standard API の使用量ティアに対して 1 日あたりの呼び出し回数の上限があります。呼び出し上限について詳しくは、Google Play Integrity デベロッパー ドキュメントの設定ページをご覧ください。
カスタムの証明書プロバイダを使用することもできますが、これは高度なユースケースです。詳細については、カスタム App Check プロバイダを実装するをご覧ください。
-
アプリのユーザーは、起動時にレイテンシが発生します。ただし、その後は定期的な再証明がバックグラウンドで行われるため、ユーザーが遅延を感じることはなくなります。起動時のレイテンシの正確な量は、選択した構成証明プロバイダによって異なります。
App Check トークンが有効である期間(有効期間、つまり TTL)によって、再証明の頻度が決まります。この期間は Firebase コンソールで構成できます。再証明は、TTL の約半分が経過したときに行われます。詳細については、証明書プロバイダの Firebase ドキュメントをご覧ください。
アプリを App Check と統合する
前提条件と要件
- Places SDK バージョン 4.1 以降が統合されたアプリ。
- アプリの SHA-256 フィンガープリント。
- アプリのパッケージ名。
- Cloud コンソールでアプリのオーナーである必要があります。
- Cloud コンソールからアプリのプロジェクト ID を取得する必要があります。
ステップ 1: Firebase をアプリに追加する
Firebase デベロッパー ドキュメントの手順に沿って、アプリに Firebase を追加します。
ステップ 2: App Check ライブラリを追加して App Check を初期化する
デフォルトの認証プロバイダである Play Integrity の使用については、Android で Play Integrity を使用して App Check を使ってみるをご覧ください。
- まだ統合していない場合は、Places SDK をアプリに統合します。
次に、App Check と Places クライアントを初期化します。
// Initialize App Check FirebaseApp.initializeApp(/* context= */ this); FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance(); firebaseAppCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance()); // Initialize Places SDK Places.initializeWithNewPlacesApiEnabled(context, API_KEY); PlacesClient client = Places.createClient(context);.
ステップ 3: トークン プロバイダを追加する
Places API を初期化した後、setPlacesAppCheckTokenProvider() を呼び出して PlacesAppCheckTokenProvider を設定します。
Places.initializeWithNewPlacesApiEnabled(context, API_KEY); Places.setPlacesAppCheckTokenProvider(new TokenProvider()); PlacesClient client = Places.createClient(context);.
トークン フェッチャー インターフェースの実装例を次に示します。
/** Sample client implementation of App Check token fetcher interface. */ static class TokenProvider implements PlacesAppCheckTokenProvider { @Override public ListenableFuture<String> fetchAppCheckToken() { SettableFuture<String> future = SettableFuture.create(); FirebaseAppCheck.getInstance() .getAppCheckToken(false) .addOnSuccessListener( appCheckToken -> { future.set(appCheckToken.getToken()); }) .addOnFailureListener( ex -> { future.setException(ex); }); return future; } }
ステップ 4: デバッグを有効にする(省略可)
アプリをローカルで開発およびテストする場合や、継続的インテグレーション(CI)環境で実行する場合は、デバッグ シークレットを使用して有効な App Check トークンを取得するアプリのデバッグビルドを作成できます。これにより、デバッグビルドで実際の証明書プロバイダを使用することを回避できます。
エミュレータまたはテストデバイスでアプリを実行するには:
- App Check ライブラリを
build.gradleファイルに追加します。 - デバッグビルドで、デバッグ プロバイダ ファクトリを使用するように App Check を構成します。
- アプリを起動します。ローカル デバッグ トークンが作成されます。このトークンを Firebase コンソールに追加します。
- 詳細と手順については、App Check のドキュメントをご覧ください。
CI 環境でアプリを実行するには:
- Firebase コンソールでデバッグ トークンを作成し、CI システムの安全なキーストアに追加します。
build.gradleファイルに App Check ライブラリを追加します。- デバッグ トークンを使用するように CI ビルド バリアントを構成します。
- テストクラスで、App Check トークンを必要とするコードを
DebugAppCheckTestHelperでラップします。 - 詳細と手順については、App Check のドキュメントをご覧ください。
ステップ 5: アプリのリクエストをモニタリングし、適用を決定する
適用を開始する前に、アプリの正規ユーザーを中断しないようにする必要があります。そのためには、App Check の指標画面にアクセスして、アプリのトラフィックのうち、検証済み、古い、不正なトラフィックの割合を確認します。トラフィックの大部分が確認されたら、適用を有効にできます。
詳細と手順については、Firebase App Check のドキュメントをご覧ください。