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

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 APIVertex AI Gemini API の両方に対するすべてのリクエストに適用されます。
    • この設定は、サーバー プロンプト テンプレートを使用するすべてのリクエストに適用されます。
    • この設定は、ユーザーごと、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 認証情報を送信しない推論リクエストをブロックします。これには、templateGenerateContenttemplateStreamGenerateContent などのサーバー プロンプト テンプレートのリクエストが含まれます。
    • この設定は、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. 確認ダイアログを確認し、[確認] をクリックします。