モバイルアプリやウェブアプリから API を直接呼び出す場合(生成 AI モデルへのアクセスを許可する API など)、API は不正なクライアントによる不正使用に対して脆弱になります。こうした API を不正使用から保護するために、 Firebase App Checkを使用して、受信したすべての API 呼び出し が実際のアプリと改ざんされていないデバイスから発信されたものであることを確認できます。
Firebase AI Logic は、 Firebase App Check と統合し、 モバイルアプリやウェブアプリから呼び出される生成 AI モデル API を保護できるプロキシ ゲートウェイを提供します。App Check を Firebase AI Logic SDK で使用すると、すべての構成がサポートされます。
「Gemini API」プロバイダの両方を保護します。Gemini Developer API と Agent Platform Gemini API (formerly Vertex AI)。
Gemini モデルと Imagen モデルの両方で、サポートされているすべてのモデルを保護します。
App Check は リプレイ保護もサポートしています。つまり、 App Check トークンは 1 回しか使用できません。
App Check の仕組みの概要
App Check を使用すると、アプリを実行しているデバイスでアプリまたはデバイスの証明書プロバイダを使用して、次のいずれか、または両方であることを証明できます。
- 正規のアプリから送信されたリクエストであること
- 正規の未改造のデバイスから送信されたリクエストであること
この証明書は、アプリが Firebase AI Logic SDK を使用して送信するすべてのリクエストに添付されます。App Checkが適用されると、有効な証明書がないクライアントからのリクエストと同様に、承認していないアプリまたはプラットフォームからのリクエストは拒否されます。
App Check を設定する際は、 リプレイ保護を追加することを検討してください。これにより、App Check トークンは 1 回のみ使用可能になります。このオプションを使用すると、ベースライン保護よりも保護を強化し、アプリやユースケースに適した保護レベルを設定できます。
の詳細(割り当てと上限など)については、App Checkの ドキュメントをご覧ください。
App Check を設定する
App Check のドキュメントには、証明書 プロバイダの詳細と、実装手順の詳細が記載されています。
証明書プロバイダを選択し、次のリンクの実装手順に沿って操作します。
- Apple プラットフォーム: DeviceCheck または App Attest
- Android: Play Integrity
- ウェブ: reCAPTCHA Enterprise
- Flutter: サポート
上記のデフォルト プロバイダをすべて
古いバージョンのプラグインを使用している場合は、 特別なインスタンス化に関する注を以下でご覧ください。 Flutter と App Check 用。 - Unity: 上記のデフォルト プロバイダをすべてサポート
これらの証明書プロバイダでは要件を満たすことができない場合は、サードパーティの証明書プロバイダを使用できます。また、独自の証明手法を使用する独自のプロバイダを実装することもできます。
(必須) App Check の適用を有効にします アプリを一般公開されているソースコード管理 システムに commit する前、アプリを共有する前、アプリを一般公開する前に。
(推奨) トークンを 1 回のみ使用可能にするApp Checkリプレイ保護を追加して、保護を強化します。
App Check が適用されているローカル開発 の場合は、App Check の適用を維持しながら証明書をバイパスするように App Check デバッグ プロバイダを構成します。ご使用のプラットフォームの設定手順( iOS+ | Android | ウェブ | Flutter | Unity)をご覧ください。
リプレイ保護を追加して保護を強化する
|
最新バージョンの SDK を使用することをおすすめしますが、
リプレイ保護を使用するには、次のいずれかのバージョン以上を使用する必要があります。 Apple プラットフォーム v12.2.0 以降 | Android BoM v34.14.0 以降(App Check v19.1.0 以降)| ウェブ v12.14.0 以降 | Flutter v4.15.0 以降(App Check v4.10.0 以降)| Unity v13.12.0 以降 |
デフォルトでは、App Check は セッション トークンを使用します。セッション トークンの有効期間(TTL)は
ただし、 リプレイ保護を適用して、ベースライン保護よりも保護を強化できます。リプレイ保護では、代わりに使用回数制限付きトークンを使用します。リプレイ保護が適用されると、次のようになります。
App Check は、Firebase AI Logic を使用する セッション トークンへのリクエストをブロックします。代わりに、App Check は、許可 リクエストを Firebase AI Logic にのみ、新しく生成された使用回数制限付きトークン を使用する場合に。
使用回数制限付きトークンが検証されると、トークンは使用済みになり、1 回しか使用できなくなるため、リプレイ攻撃を防ぐことができます。
App Check SDK は、リクエストごとに新しい使用回数制限付きトークンを生成します。 このプロセスでは、レイテンシが発生したり、証明書プロバイダによっては費用が発生したりして、リクエストに影響する可能性があります。
リプレイ保護を設定して適用する
|
Gemini API プロバイダをクリックして、このページでプロバイダ固有のコンテンツとコードを表示します。 |
リプレイ保護を設定して適用する方法は次のとおりです。
まだ App Check を実装していない場合は、アプリに App Check をApp Check実装して、 App Check のApp Check適用を有効にします 。
使用回数制限付きトークンの使用を有効にします。
インスタンス化時に、アプリで
useLimitedUseAppCheckTokensパラメータをtrueに設定します。Swift
// ... // During instantiation, enable usage of limited-use tokens. let ai = FirebaseAI.firebaseAI( backend: .googleAI(), useLimitedUseAppCheckTokens: true ) // ...Kotlin
// ... // During instantiation, enable usage of limited-use tokens. val ai = Firebase.ai( backend = GenerativeBackend.googleAI(), useLimitedUseAppCheckTokens = true ) // ...Java
// ... // During instantiation, enable usage of limited-use tokens. FirebaseAI ai = FirebaseAI.getInstance( /* backend: */ GenerativeBackend.googleAI(), /* useLimitedUseAppCheckTokens: */ true ); // ...Web
// ... // During instantiation, enable usage of limited-use tokens. const ai = getAI(firebaseApp, { backend: new GoogleAIBackend(), useLimitedUseAppCheckTokens: true }); // ...Dart
// ... // During instantiation, enable usage of limited-use tokens final ai = await FirebaseAI.googleAI( useLimitedUseAppCheckTokens: true, ); // ...Unity
// ... // During instantiation, enable usage of limited-use tokens var ai = FirebaseAI.GetInstance( useLimitedUseAppCheckTokens: true ); // ...リプレイ保護を適用します。
アプリのコードベースで、使用回数制限付きトークンの使用が有効になっていることを確認します(前の手順を参照)。
Firebase[**セキュリティ**] > [**App Check**] コンソールで、に移動します。
Firebase AI Logic の指標ビューを開きます。
[ベースライン保護]が [適用]されていることを確認し、 [続行]をクリックします。
リプレイ保護で、[適用しない(モニタリングのみ)] または [適用] を選択します。
リプレイ保護を適用するタイミングを決定する際は、次の点を考慮してください。
使用回数制限付きトークンの使用が有効になっていない古いバージョンのアプリを使用しているユーザーが多数いる場合は、リクエストをモニタリングすることをおすすめします。リプレイ保護をすぐに適用すると、それらのユーザーからのリクエストはブロックされます。
未確認: トークンが再利用されました 指標をモニタリングできます。これは、以前のリクエストですでに使用されているトークンを含むリクエストの数です。この指標は、 Firebase コンソール([セキュリティ] > [App Check] > [API] タブ)でモニタリングできます。
最近のリクエストの大部分がこのカテゴリに該当する場合は、ユーザーの混乱を避けるため、使用回数制限付きトークンを使用するバージョンのアプリに更新するユーザーが増えるまで、リプレイ保護の適用を待つことを検討してください。
Firebase AI Logic と App Check の統合方法について
Firebase AI Logic SDK を使用するには、Firebase プロジェクトで
Firebase AI Logic API(firebasevertexai.googleapis.com)
を有効にする必要があります。これは、
Firebase AI Logic SDK によって行われたリクエストが、まず Firebase AI Logic
サーバーに送信されるためです。このサーバーはプロキシ ゲートウェイとして機能し、リクエストが選択した
"Gemini API" プロバイダのバックエンドと Gemini
モデルと Imagen モデルにアクセスする API に進む前に、Firebase App Check 検証
が行われます。
(省略可) 本番環境の証明書プロバイダを使用せずに App Check を適用する(デバッグ プロバイダのみ)
本番環境の証明書プロバイダにアプリを登録せずに、App Check に AI Logic を適用できます。この設定では、App Check デバッグ プロバイダを使用して、AI Logicを保護しながら、Gemini APIを簡単に開始できます。
App Check が AI Logic にすでに適用されているかどうかを確認します。
Firebase コンソールで、[セキュリティ] > [App Check] > [API] タブに移動します。
Firebase AI Logic の行を見つけます。[
Unenforced] と表示されている場合は、この手順の残りの部分に進みます。
Firebase AI Logic の行をクリックすると、指標グラフが表示されます。 グラフの下にある [設定] をクリックします。
ダイアログの最初の画面([Baseline protection])で、 [Enforced] を選択し、[Continue] をクリックします。
次の画面([リプレイ保護])で、[無効] を選択します。この設定はいつでも行うことができ、この設定ワークフローに戻ることができます。[続行] をクリックします。
最後の画面で、App Check の適用に関する考慮事項を確認し、App Checkを適用する準備ができていることを確認します。準備ができたら、[続行] をクリックします。
App Check を適用し、本番環境前のアプリで App Check AI Logic とAI Logicデバッグ プロバイダのみを使用する場合は、アプリを登録する必要はありません。ただし、アプリをエンドユーザーにリリースする準備ができたら、本番環境の証明書プロバイダ(App Attest、Play Integrity、reCAPTCHA Enterprise など)の設定の一環としてアプリを登録する必要があります。
App Check が適用されているローカル開発の場合は、App Check の適用を維持しながら証明書をバイパスするように App Check デバッグ プロバイダを構成する必要があります。
デバッグ プロバイダの構成の詳細については、ご使用のプラットフォームの手順(iOS+ |Android |ウェブ |Flutter |Unity)をご覧ください。