モバイルアプリやウェブアプリから API を直接呼び出す場合(生成 AI モデルへのアクセスを許可する API など)、API は不正なクライアントによる不正使用に対して脆弱になります。これらの API を保護するために、Firebase App Check を使用して、すべての受信 API 呼び出しが実際のアプリからのものであることを確認できます。
Firebase AI Logic は、Firebase App Check と統合し、モバイルアプリとウェブアプリから呼び出される生成 AI モデル API を保護できるプロキシ ゲートウェイを提供します。App Check を Firebase AI Logic SDK とともに使用すると、すべての構成がサポートされます。
Gemini Developer API と Vertex AI Gemini API の両方の「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 の適用を有効にします。
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
);
// ...
今後の保護強化機能に備える
| 制限付き使用トークンの使用を有効にすることは、Apple プラットフォーム(v12.2.0 以降)、Android(v17.2.0 以降、BoM v34.2.0 以降)、ウェブ(v12.3.0 以降)、Flutter(v3.2.0 以降、BoM v4.2.0 以降)でサポートされています。 Unity のサポートは近日中に提供予定です。 |
デフォルトでは、App Check はセッション トークンを使用します。このトークンには、
今後、App Check は、Firebase AI Logic のリプレイ保護を有効にするオプションを追加します(App Check がすでに他のリソースに対して提供しているサポートと同様です)。リプレイ保護が有効になっている場合、保護は次のように強化されます。
App Check は、限定使用トークンと呼ばれる特別な種類のトークンがリクエストに含まれている場合にのみ、リクエストを許可します。
限定使用トークンが検証されると、トークンは使用済みにされ、一度しか使用できないようにすることで、リプレイ攻撃を防ぎます。
リプレイ保護の準備として、App Check の設定の一環として限定使用トークンの使用を有効にすることをおすすめします。そうすることで、リプレイ保護が利用可能になったときに、より多くのユーザーが限定使用トークンを送信するアプリのバージョンを使用しているため、より早くリプレイ保護を有効にできます。
リプレイ保護が利用できない状態で、アプリで限定使用のトークンの使用を有効にする場合は、次の点に注意してください。
App Check は、有効なセッション トークンの使用をブロックしません。
セッション トークンと同様に、限定使用トークンは App Check SDK によってキャッシュに保存され、リクエストとともに送信されます。これらの限定使用トークンは、セッション トークンと比較して TTL が短いため(
5 分間 のみで調整不可)、デフォルトのセッション トークンよりもわずかに保護が強化されます。限定使用トークンの有効期間は
5 分間 ですが、SDK は各リクエストに対して新しいトークンを生成します。このプロセスにより、リクエストにレイテンシが追加されることがあります。
ただし、今後 Firebase AI Logic でリプレイ保護が利用可能になった場合(有効にした場合)、セッション トークンの使用と限定使用トークンの再利用はできなくなります。リクエストごとに新しいトークンを生成する際の追加のレイテンシは発生します。
限定使用トークンの使用を有効にする
|
Gemini API プロバイダをクリックして、このページでプロバイダ固有のコンテンツとコードを表示します。 |
限定使用トークンの使用を有効にする方法は次のとおりです。
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( appCheck: FirebaseAppCheck.instance, // for Flutter, pass in App Check explicitly useLimitedUseAppCheckTokens: true, ); // ...Unity
Unity ゲームでの限定使用トークンの使用は、今後のリリースでサポートされる予定です。しばらくお待ちください。
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 検証が行われるプロキシ ゲートウェイとして機能します。