モバイルアプリやウェブアプリから API を直接呼び出す場合(生成 AI モデルへのアクセスを許可する API など)、API は不正なクライアントによる不正使用に対して脆弱になります。このような API の不正使用を防ぐために、 Firebase App Check を使用して、受信するすべての API 呼び出し が実際のアプリと未改造のデバイスからのものであることを確認できます。
Firebase AI Logic には、 Firebase App Check と統合し、 モバイルアプリやウェブアプリから呼び出される生成 AI モデル API を保護できるプロキシ ゲートウェイが用意されています。 Firebase AI Logic SDK で App Check を使用すると、次のすべての構成がサポートされます。
「Gemini API」プロバイダ(Gemini Developer API と Vertex AI Gemini API)の両方を保護します。
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 する前、アプリを共有する前、アプリを一般公開する前に。
(推奨) リプレイ保護を追加して保護を強化します。リプレイ保護とは、 App Check トークンは 1 回しか使用できないということです。
リプレイ保護を追加して保護を強化する
|
最新バージョンの 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 アプリで。
限定使用トークンの使用を有効にします。
インスタンス化時に、アプリで
useLimitedUseAppCheckTokensパラメータをtrueに設定します。Firebase Remote ConfigRemote ConfigSwift
// ... // 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 検証
が 行われます。