モバイルアプリやウェブアプリから Gemini API を直接呼び出す場合は、バックエンド インフラストラクチャ、割り当て、独自のプロンプトを保護するために、多層防御アプローチが必要です。このチェックリストを確認して、Firebase AI Logic に推奨されるセキュリティに関するベスト プラクティスを実装します。
アプリ、デバイス、ユーザーの確認
受信したリクエストが、正規のデバイスで実行されている正規の未改造のアプリ インスタンスと正規のユーザーから発信されたものであることを確認します。
適用 Firebase App Check
Firebase App Check を適用すると、アプリから直接呼び出されたときに Gemini API を不正使用から保護できます。App Check が適用されると、受信したリクエストが正規のアプリまたは改ざんされていないデバイスから発信されたものであることが確認されます。
App Check は、Apple プラットフォーム(DeviceCheck、App Attest、reCAPTCHA Enterprise)、Android(Play Integrity、reCAPTCHA Enterprise)、ウェブ(reCAPTCHA Enterprise)の証明書プロバイダをサポートしています。また、Flutter アプリと Unity アプリのすべてのプロバイダもサポートしています。
2026 年 7 月上旬より、Firebase コンソールのガイド付き設定で、Firebase AI Logic の App Check が自動的に適用されます。以前に Firebase AI Logic を設定した場合は、App Check を明示的に適用してください。ローカル開発では、App Check デバッグ プロバイダを設定し、エンドユーザーにリリースする前に、本番環境の証明書プロバイダにアプリを登録できます。
使用回数制限付きトークンでリプレイ保護を有効にする
App Check の設定の一環として、App Check トークンが一度しか使用できないように、リプレイ保護の適用を検討してください。このオプションでは、ベースライン保護を超える強化された保護が提供され、アプリとユースケースに適した保護レベルを設定できます。
Firebase API キーの制限を設定する
Firebase API キーは、リクエストを行うときに Firebase プロジェクトとアプリを識別します。API キーの不正使用を防ぐには:
Google Cloud コンソールで「アプリケーションの制限」を設定して、キーの使用をアプリの特定のバンドル ID(Apple)、パッケージ名と SHA-1 フィンガープリント(Android)、または HTTP リファラー(ウェブ)からのリクエストのみに制限します。
各キーの「API の制限」の許可リストを確認します。
- Firebase AI Logic API(
firebasevertexai.googleapis.com)が許可リストに含まれていることを確認します。 - 許可リストに登録されている他の API が、アプリに必要な特定の Firebase サービスのみであることを確認します。制限付き Firebase キーに必要な API のリストをご覧ください。
- Firebase AI Logic API(
Firebase 関連の API は、Firebase プロジェクトまたはアプリの識別にのみ API キーを使用します。API の呼び出しの認証には使用しません。
認証済みユーザーのみにリクエストを制限する
Firebase AI Logic を介したすべてのリクエストに Firebase Authentication からの有効な認証情報が含まれるように、認証済みユーザーモードの適用を検討してください。認証されていないエンドユーザーからのリクエストは、401: unauthenticated エラーで拒否されます。
プロンプトの保護とリクエストの強化
クライアントの逆コンパイルによってプロンプト設計が公開されるのを防ぎ、悪意のあるユーザーが任意のプロンプトを実行できないようにバックエンドをロックダウンします。
サーバー プロンプト テンプレートを使用する
サーバー プロンプト テンプレートを使用して、プロンプト、システム指示、モデル構成をクラウドに安全に保存します。クライアント アプリのコードにハードコードすると、バイナリの逆コンパイルによって抽出される可能性があります。
アプリはテンプレート ID のみを参照し、動的入力変数を渡します。サーバー プロンプト テンプレートを使用すると、アプリの新しいバージョンをリリースしなくても、プロンプトを更新したり、モデルをオンデマンドで切り替えたりすることもできます。
クライアントから提供されたテンプレート変数を検証してサニタイズする
サーバー プロンプト テンプレートはプロンプト設計を保護しますが、動的変数を受け入れるテンプレートはプロンプト インジェクションの影響を受ける可能性があります。テンプレートはユーザー入力変数を最終的なプロンプトに連結するため、次のことを確認してください。
- クライアントですべてのユーザー入力を検証してサニタイズしてから、テンプレートに変数を受け渡します(文字数制限や想定される形式の適用など)。
- ユーザー入力の処理方法のガードレールを定義する明確なシステム指示をテンプレートに含めます。
テンプレート専用モードの適用
アプリのすべての機能でサーバー プロンプト テンプレートを使用するようになったら、テンプレート専用モードの適用を検討してください。適用されると、Firebase AI Logic は Gemini API(403: unauthorized)へのテンプレート化されていないすべての直接リクエストをブロックし、悪意のある行為者が任意のプロンプトを送信したり、割り当てを不正使用したりすることを防ぎます。
モニタリング、上限、課金
受信トラフィックとセキュリティの異常を可視化し、予期しない使用量の急増や費用の増大からプロジェクトを保護します。
Firebase コンソールで AI モニタリングを設定する
Firebase コンソールの AI モニタリングを設定して、リクエスト数、レイテンシ、トークン使用量、エラー率(401 認証の失敗や 403 テンプレートのみのブロックなど)などの主要な指標を可視化します。Google Cloud コンソールで個々のトレースを検査することもできます。
レート制限を設定して割り当てを管理する
予期しない使用量の急増やウォレットの拒否攻撃からプロジェクトを保護します。
- ユーザーごとのレート制限を設定(デフォルトは 100 RPM)して、個々のクライアント インスタンスが過剰な割り当てを消費しないようにします。
- 基盤となる各 API の Google Cloud コンソールで、プロジェクトの割り当てを確認して管理します。
アラートと単価の上限で想定外の請求を回避する
Firebase プロジェクトが従量課金制の Blaze のお支払いプランに登録されている場合:
次のステップ
- 一般的な Firebase セキュリティ チェックリストを確認します。
- Firebase AI Logic の一般的な本番環境チェックリストを確認します。
- Firebase AI Logic の料金と費用管理の詳細を確認する。