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äteattestierungsanbieter, der eines oder beides der Folgenden überprüft:

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

Diese Attestierung wird an jede Anfrage angehängt, die Ihre App mit einem Firebase AI Logic-SDK stellt. Wenn Sie die App Check-Erzwingung aktivieren, werden Anfragen von Clients ohne gültigen Nachweis 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 Drittanbieter für die Gerätebestätigung oder Ihre eigenen Bestätigungstechniken verwendet.

  2. (Empfohlen) Bereiten Sie sich auf den bevorstehenden erweiterten Schutz von App Check vor (bekannt als Schutz vor Wiederholungsangriffen).

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

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

Wir empfehlen, die neuesten SDK-Versionen zu verwenden. Achten Sie jedoch darauf, dass Sie mindestens eine der folgenden Versionen verwenden, um Tokens mit eingeschränkter Nutzung zu aktivieren:
Apple-Plattformen: V12.2.0 und höher | Android BoM: V34.14.0 und höher (App Check: V19.1.0 und höher) | Web: V12.14.0 und höher | Flutter: V4.15.0 und höher (App Check: V4.10.0 und höher) | Unity: V13.12.0 und höher

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.

In Zukunft 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 Schutz vor Replay-Angriffen aktiviert ist, wird der Schutz auf folgende Weise verbessert:

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

  • 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 Schutz vor Replay-Angriffen empfehlen wir, dass Sie beim Einrichten von App Check die Verwendung von Tokens mit eingeschränkter Nutzung aktivieren. Wenn der Schutz vor Replay-Angriffen 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) haben als Sitzungstokens.

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

Wenn der Schutz vor Replay-Angriffen 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

    
    // ...
    
    // 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,
    );
    
    // ...
    
    

    Einheit

    // ...
    
    // During instantiation, enable usage of limited-use tokens
    var ai = FirebaseAI.GetInstance(
      useLimitedUseAppCheckTokens: true
    );
    
    // ...
    

Informationen zur Integration von Firebase AI Logic in App Check

Wenn Sie die Firebase AI Logic-SDKs verwenden möchten, 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, über das die Firebase App Check-Bestätigung bevor die Anfrage an das Backend Ihres ausgewählten Gemini API-Anbieters und die APIs für den Zugriff auf die Gemini- und Imagen-Modelle weitergeleitet werden darf.