Firebase App Check implementieren, um APIs vor nicht autorisierten Clients zu schützen

Wenn Sie eine API direkt über eine mobile App oder Web-App aufrufen (z. B. die APIs, die den Zugriff auf generative KI-Modelle ermöglichen), ist die API anfällig für Missbrauch durch nicht autorisierte Clients. Um diese APIs zu schützen, können Sie Firebase App Check verwenden, um zu prüfen, ob alle eingehenden API-Aufrufe von Ihrer tatsächlichen App stammen.

Firebase AI Logic bietet ein Proxy-Gateway, mit dem Sie Firebase App Check einbinden und die von Ihren Mobil- und Web-Apps aufgerufenen APIs für generative KI-Modelle schützen können. Wenn Sie App Check mit den Firebase AI Logic-SDKs verwenden, werden alle unsere Konfigurationen unterstützt:

  • Schützt beide „Gemini API“-Anbieter: Gemini Developer API und Vertex AI Gemini API.

  • Schützt alle unterstützten Modelle, sowohl Gemini- als auch Imagen-Modelle.

Allgemeine Zusammenfassung der Funktionsweise von App Check

Mit App Check verwenden Geräte, auf denen Ihre App ausgeführt wird, einen App- oder Gerätebestätigungsanbieter, der eines oder beides der Folgenden überprüft:

  • Anfragen stammen von Ihrer authentischen App
  • Anfragen stammen von einem authentischen, nicht manipulierten Gerät.

Diese Bestätigung wird an jede Anfrage angehängt, die Ihre App mit einem Firebase AI Logic-SDK stellt. Wenn Sie die Erzwingung von App Check aktivieren, werden Anfragen von Clients ohne gültigen Attest abgelehnt. Das gilt auch für Anfragen, die von einer App oder Plattform stammen, die Sie nicht autorisiert haben.

Wir empfehlen, dass Sie bei der Einrichtung von App Check die Vorbereitung auf den bevorstehenden erweiterten Schutz (Replay-Schutz) berücksichtigen.

Ausführliche Informationen zu App Check finden Sie in der Dokumentation, einschließlich der Kontingente und Limits.

Verfügbare Anbieter und Implementierungsanleitung

Die App Check-Dokumentation enthält Beschreibungen von Attestierungsanbietern sowie Implementierungsanleitungen.

  1. Wählen Sie einen Standardanbieter aus und folgen Sie der Implementierungsanleitung unter den folgenden Links:

    Wenn keiner der Standardanbieter Ihren Anforderungen entspricht, können Sie einen benutzerdefinierten Anbieter implementieren, der entweder einen Attestierungsanbieter eines Drittanbieters oder Ihre eigenen Attestierungstechniken verwendet.

  2. (Empfohlen) Vorbereiten auf den bevorstehenden erweiterten Schutz von App Check (als Wiederholungsschutz bezeichnet).

  3. (Erforderlich) Bevor Sie Ihre App für echte Nutzer veröffentlichen, müssen Sie die Durchsetzung von App Check aktivieren.

Spezielle Instanziierung für Flutter erforderlich

Klicken Sie auf Ihren Gemini API-Anbieter, um anbieterspezifische Inhalte und Code auf dieser Seite aufzurufen.

Wenn Sie App Check mit Firebase AI Logic in Flutter-Apps verwenden, müssen Sie App Check bei der Instanziierung explizit übergeben, wie hier gezeigt:

// ...

final ai = await FirebaseAI.googleAI(
  appCheck: FirebaseAppCheck.instance, // for Flutter, pass in App Check explicitly
);

// ...

Auf bevorstehende Verbesserungen des Schutzes vorbereiten

Die Verwendung von Tokens mit eingeschränkter Nutzung ist derzeit nur für Apple-Plattformen (Version 12.2.0 und höher), Android (Version 17.2.0 und höher, Materialliste Version 34.2.0 und höher) und das Web (Version 12.3.0 und höher) verfügbar.
Die Unterstützung für andere Plattformen wird in den nächsten Wochen eingeführt.

Standardmäßig verwendet App Check Sitzungstokens mit einer konfigurierbaren Gültigkeitsdauer (Time-to-Live, TTL) zwischen 30 Minuten und 7 Tagen. Diese Sitzungstokens werden vom App Check SDK im Cache gespeichert und zusammen mit Anfragen aus Ihrer App gesendet.

Zukünftig wird App Check die Option hinzufügen, Replay-Schutz für Firebase AI Logic zu aktivieren (ähnlich der Unterstützung, die App Check bereits für einige andere Ressourcen bietet). Wenn der Replay-Schutz aktiviert ist, wird der Schutz auf folgende Weise verbessert:

  • App Check lässt nur Anfragen zu, wenn sie von einer speziellen Art von Token begleitet werden, einem Token mit eingeschränkter Nutzung.

  • Nachdem das Token mit eingeschränkter Nutzung verifiziert wurde, wird es verwendet, damit es nur einmal verwendet werden kann. So werden Replay-Angriffe verhindert.

Zur Vorbereitung auf den Replay-Schutz empfehlen wir, die Verwendung von Tokens mit eingeschränkter Nutzung zu aktivieren, wenn Sie App Check einrichten. Wenn der Replay-Schutz verfügbar ist, können Sie ihn so früher aktivieren, da mehr Nutzer Versionen Ihrer App verwenden, die Tokens mit eingeschränkter Nutzung senden.

Beachten Sie Folgendes, wenn Sie die Verwendung von Tokens mit eingeschränkter Nutzung in Ihrer App jetzt aktivieren (während der Replay-Schutz nicht verfügbar ist):

  • App Check blockiert nicht die Verwendung von gültigen Sitzungstokens.

  • Genau wie Sitzungstokens werden Tokens mit begrenzter Verwendung vom App Check SDK im Cache gespeichert und mit Anfragen gesendet. Diese Tokens mit eingeschränkter Nutzung bieten etwas mehr Schutz als die standardmäßigen Sitzungstokens, da sie eine kürzere TTL (nur 5 Minuten und nicht anpassbar) als Sitzungstokens haben.

  • Obwohl Tokens mit eingeschränkter Nutzung 5 Minuten lang gültig sind, wird vom SDK für jede Anfrage ein neues Token generiert. Dieser Vorgang kann die Latenz Ihrer Anfrage erhöhen.

Wenn der Replay-Schutz jedoch in Zukunft für Firebase AI Logic verfügbar ist und Sie ihn aktivieren, ist die Verwendung von Sitzungstokens und die Wiederverwendung von Tokens mit eingeschränkter Nutzung nicht möglich. Die zusätzliche Latenz, die durch das Generieren eines neuen Tokens für jede Anfrage entsteht, bleibt bestehen.

Verwendung von Tokens mit eingeschränkter Nutzung aktivieren

Klicken Sie auf Ihren Gemini API-Anbieter, um anbieterspezifische Inhalte und Code auf dieser Seite aufzurufen.

So aktivieren Sie die Verwendung von Tokens mit eingeschränkter Nutzung:

  1. Implementieren Sie App Check und sorgen Sie dafür, dass Sie die Erzwingung von App Check für Ihre App aktiviert haben.

  2. Aktivieren Sie in Ihrer App bei der Instanziierung die Verwendung von Tokens mit eingeschränkter Nutzung, indem Sie den Parameter useLimitedUseAppCheckTokens auf true festlegen:

    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

    Die Verwendung von Tokens mit eingeschränkter Nutzung mit Flutter-Apps wird in der kommenden Version unterstützt. Schauen Sie später noch einmal vorbei!

    Einheit

    Die Verwendung von Tokens mit eingeschränkter Nutzung mit Unity-Spielen wird in einer zukünftigen Version unterstützt. Schauen Sie später noch einmal vorbei!

Informationen zur Integration von Firebase AI Logic in App Check

Damit Sie die Firebase AI Logic-SDKs verwenden können, muss die Firebase AI Logic-API (firebasevertexai.googleapis.com) in Ihrem Firebase-Projekt aktiviert sein. Das liegt daran, dass Anfragen, die von den Firebase AI Logic-SDKs gestellt werden, zuerst an den Firebase AI Logic-Server gesendet werden, der als Proxy-Gateway fungiert. Dort findet die Firebase App Check-Bestätigung bevor die Anfrage an das Backend des von Ihnen ausgewählten Gemini API-Anbieters und die APIs für den Zugriff auf die Gemini- und Imagen-Modelle weitergeleitet wird.