モバイルアプリやウェブアプリから 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 を使用すると、アプリを実行しているデバイスでアプリまたはデバイスの証明書プロバイダを使用して、次のいずれか、または両方であることを証明できます。
- 正規のアプリから送信されたリクエストであること
- 正規の未改造のデバイスから送信されたリクエストであること
この証明書は、アプリが Firebase AI Logic SDK を使用して送信するすべてのリクエストに添付されます。App Check の適用を有効にすると、 承認していないアプリまたはプラットフォームからのリクエストと同様に、有効な証明書がないクライアントからのリクエストは拒否されます。
App Check を設定する際は、 今後の強化された保護機能 (リプレイ保護)に備えることをおすすめします。
の詳細については、App Check割り当てと上限など、 ドキュメントをご覧ください。
利用可能なプロバイダと実装手順
App Check のドキュメントでは、証明書プロバイダの説明と実装手順について説明しています。
デフォルト プロバイダを選択し、次のリンクの実装手順に沿って操作します。
- Apple プラットフォーム: DeviceCheck または App Attest
- Android: Play Integrity
- ウェブ: reCAPTCHA Enterprise
- Flutter: 上記のデフォルト プロバイダをすべてサポートしています。
また、 特別なインスタンス化要件 に準拠してください。 Flutter と App Check - Unity: 上記のデフォルト プロバイダをすべてサポートしています
デフォルト プロバイダでは要件を満たせない場合は、 サードパーティの証明書プロバイダを使用するか、独自の証明手法を使用するカスタム プロバイダ を実装できます。
(推奨) 今後の App Check の強化された保護機能(リプレイ保護)に備えます。
(必須) アプリを実際のユーザーにリリースする前に、 App Check の適用を有効にしますApp Check。
Flutter で必要な特別なインスタンス化
|
Gemini API プロバイダをクリックして、このページでプロバイダ固有のコンテンツとコードを表示します。 |
Flutter アプリで Firebase AI Logic とともに App Check を使用する場合は、次のようにインスタンス化時に App Check を明示的に渡す必要があります。
// ...
final ai = await FirebaseAI.googleAI(
appCheck: FirebaseAppCheck.instance, // for Flutter, pass in App Check explicitly
);
// ...
今後の強化された保護機能に備える
|
最新バージョンの 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リプレイ保護を有効にすると、保護が次のように強化されます。
App Check は、限定使用トークンと呼ばれる特別な 種類のトークンが添付されている場合にのみリクエストを許可します。
限定使用トークンが検証されると、トークンは使用済みにされ、1 回しか使用できなくなるため、リプレイ攻撃を防ぐことができます。
リプレイ保護に備えるため、App Check の設定の一環として 限定使用トークンの使用を有効にすることをおすすめします。 App Checkそうすることで、リプレイ保護が利用可能になったときに、限定使用トークンを送信するアプリのバージョンを使用しているユーザーが増えるため、より早く有効にできます。
リプレイ保護が利用できないときに、アプリで限定使用トークンの使用を有効にする場合は、次の点に注意してください。
App Check は、有効なセッション トークンの使用をブロックしません。
セッション トークンと同様に、限定使用トークンは App Check SDK によってキャッシュされ、リクエストとともに送信されます。限定使用トークンは、セッション トークンよりも TTL が短いため(
5 分 のみで調整不可)、デフォルトのセッション トークンよりも わずかに保護が強化されます。限定使用トークンは
5 分間 有効ですが、SDK はリクエストごとに新しいトークンを生成します。このプロセスにより、リクエストにレイテンシが発生する可能性があります。
ただし、今後 Firebase AI Logic で リプレイ保護が利用可能になり、有効にすると、セッション トークンの使用と 限定使用トークンの再利用はできなくなります。リクエストごとに新しいトークンを生成するための追加のレイテンシは引き続き発生します。
限定使用トークンの使用を有効にする
|
Gemini API プロバイダをクリックして、このページでプロバイダ固有のコンテンツとコードを表示します。 |
限定使用トークンの使用を有効にする方法は次のとおりです。
インスタンス化時に、アプリで
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( appCheck: FirebaseAppCheck.instance, // for Flutter, pass in App Check explicitly useLimitedUseAppCheckTokens: true, ); // ...Unity
// ... // During instantiation, enable usage of limited-use tokens var ai = FirebaseAI.GetInstance( useLimitedUseAppCheckTokens: true ); // ...
Firebase AI Logic と App Check の統合方法について
Firebase AI Logic SDK を使用するには、Firebase プロジェクトで
Firebase AI Logic API(firebasevertexai.googleapis.com)
を有効にする必要があります。これは、
Firebase AI Logic SDK によって行われたリクエストが最初に Firebase AI Logic
サーバーに送信されるためです。Firebase App Check 検証
は、リクエストが選択した
"Gemini API" プロバイダのバックエンドと Gemini
および Imagen モデルにアクセスするための API に進む 前に行われます。