リクエストを認証済みユーザーのみに制限する

Firebase プロジェクトに認証済みユーザーモードを適用できます。適用した場合、Firebase AI Logic を介したすべての Gemini API リクエストは、アプリの認証済みユーザーからのリクエストである必要があります。具体的には、アプリのエンドユーザーは、アプリから Firebase AI Logic にリクエストを送信する前に、Firebase Authentication を使用して認証される必要があります。エンドユーザーが認証されていない場合、リクエストはブロックされます。

リクエストがブロックされると、レスポンスは 401: unauthenticated エラーになります。

重要な考慮事項

認証済みユーザーモードに関する次の重要な考慮事項に注意してください。

認証済みユーザーモードが適用されている場合

認証済みユーザーモードが適用されている場合は、次の点に注意してください。

  • この設定は、Firebase AI Logic のプロジェクト全体の設定です。

    • これは、プロジェクトに登録されているすべてのアプリに適用されます。
    • これは、適用されるプロジェクトにのみ適用されます。
  • この設定により、Firebase Authentication 認証情報を送信しない Firebase AI Logic を介したすべてのリクエストがブロックされます。

    • Firebase AI Logic にリクエストを送信する前に、ユーザーは Firebase Authentication を介して認証される必要があります。
    • この設定は、Firebase AI Logic を介した Gemini Developer API と Agent Platform Gemini API (formerly Vertex AI) の両方へのすべてのリクエストに適用されます。
    • この設定は、サーバー プロンプト テンプレートを使用するすべてのリクエストに適用されます。
    • この設定は、ユーザーごと、API ごと、テンプレートごとに適用することはできません。
  • この設定では、Firebase AI Logic 経由ではないプロジェクトの Gemini API リクエストはブロックされません。

  • ハイブリッド / オンデバイスを使用している場合:

    • この設定では、ユーザーが認証されていない場合、クラウドでホストされているモデルへのリクエストがブロックされます。
    • この設定では、ユーザーの認証状態に関係なく、オンデバイス モデルへのリクエストはブロックされません。
  • Gemini Live API を使用している場合:

    • この設定により、Firebase AI Logic を使用している場合、ウェブアプリでの Gemini Live API の使用がブロックされます。これは、認証済みユーザーでも同様です。これには、Firebase JS SDK を使用するウェブアプリや Flutter ウェブアプリが含まれます。
  • Firebase AI Logic REST API を使用している場合:

    • この設定により、Firebase Authentication 認証情報を送信しない推論リクエストがブロックされます。これには、templateGenerateContent や templateStreamGenerateContent などのサーバー プロンプト テンプレートのリクエストが含まれます。
    • この設定では、コントロール プレーン リクエスト(テンプレートや構成の管理など)はブロックされません。これは、これらのリクエストが IAM によって保護されているためです。
  • この設定では、countTokens(Count Tokens API)へのリクエストはブロックされません。

認証済みユーザーモードを適用する前に

認証済みユーザーモードを適用する前に、次の点に注意してください。

  • Firebase Authentication を使用していない既存のバージョンのアプリがある場合:

    • この設定により、既存のアプリ バージョンからの Firebase AI Logic 経由のリクエストがブロックされます。
    • 認証済みユーザーモードを適用する前に、すべてのアクティブなクライアントが Firebase Authentication を使用するように更新されていることを確認してください。
  • 古い Flutter プラグイン バージョンでは、リクエストとともに Firebase Authentication 認証情報を送信するために特別なインスタンス化が必要です。

    • アプリで Flutter プラグイン firebase_ai v3.11.0 以前(BoM v4.12.0 以前)を使用しており、インスタンス化時に Authentication を渡さない場合、この設定により、認証済みユーザーであっても Firebase AI Logic 経由のリクエストがブロックされます。
    • 認証済みユーザーモードを適用する前に、Flutter のすべてのアクティブなクライアントが新しいバージョンのプラグインに更新されていることを確認してください。

Firebase Authenticationを設定

Firebase Authentication のドキュメントには、サポートされている認証プロバイダの説明と実装手順が記載されています。これには、パスワード、電話番号、一般的なフェデレーション ID プロバイダ(Google、Facebook、GitHub など)の使用などが含まれます。

アプリに Firebase Authentication を実装すると、アプリは Firebase AI Logic へのリクエストごとに、認証済みユーザーの Firebase Authentication 認証情報を自動的に送信します。

一部の認証プロバイダについては、次の点に注意してください。

  • カスタム認証: Firebase AI Logic へのリクエストとともに送信する署名付き認証トークンを取得する必要があります。詳細については、カスタム認証をご覧ください。

  • 匿名またはメール / パスワード認証方法: これらのユーザーは認証済みユーザーとみなされるため、Firebase AI Logic へのリクエストはブロックされません。

    匿名認証とメール / パスワード認証では、ユーザーがアプリにアクセスして Firebase Authentication 認証情報を作成する必要がありますが、デフォルトではユーザーの本人確認が不要なため、堅牢な認証形式ではありません(特に有料リソースを保護する場合)。アプリでこれらの認証方法のデフォルト実装を使用している場合、認証済みユーザーモードを適用しても、保護が不十分になる可能性があります。Firebase App Check が適用されていることも確認してください。

認証済みユーザーモードの設定を管理する

認証済みユーザーモードの設定は、Firebase コンソールで管理します。

必要な IAM 権限とロール

認証済みユーザーモードの設定を管理するには、firebasevertexai.configs.update 権限が必要です。この権限は、オーナー、編集者、Firebase 管理者、Firebase AI Logic 管理者の IAM ロールにデフォルトで含まれています。

認証済みユーザーモードの適用

Firebase プロジェクトで認証済みユーザーモードを適用する方法は次のとおりです。

  1. まだ確認していない場合は、このガイドの前半にある認証済みユーザーモードの重要な考慮事項を確認してください。

  2. まだ設定していない場合は、アプリに Firebase Authentication を設定します(このガイドで前述したとおり)。

  3. 認証済みユーザーモードの適用:

    1. Firebase コンソールで、[AI サービス] > [AI ロジック] > [設定] タブに移動します。

    2. [認証済みユーザーモード] で、[認証済みユーザーモードを適用する] の切り替えを [適用済み] にスライドします。

    3. 確認ダイアログを確認し、[確認] をクリックします。

認証済みユーザーモードの適用を停止する

認証済みユーザーモードの適用を停止する場合は、次の点に注意してください。

  • Firebase Authentication 認証情報を送信しない Firebase AI Logic 経由のリクエストは許可されます。
  • これは Firebase AI Logic のプロジェクト全体の設定です。

Firebase プロジェクトで認証済みユーザーモードの適用を停止する方法は次のとおりです。

  1. Firebase コンソールで、[AI サービス] > [AI ロジック] > [設定] タブに移動します。

  2. [認証済みユーザーモード] で、[認証済みユーザーモードを適用する] をオフにします。

  3. 確認ダイアログを確認し、[確認] をクリックします。