Erfahren Sie mehr über die Verwendung und Verwaltung von API-Schlüsseln für Firebase

Ein API-Schlüssel ist eine eindeutige Zeichenfolge, die verwendet wird, um Anfragen an Ihr Firebase-Projekt weiterzuleiten, wenn Sie mit Firebase- und Google-Diensten interagieren. Auf dieser Seite werden grundlegende Informationen zu API-Schlüsseln sowie Best Practices für die Verwendung und Verwaltung von API-Schlüsseln mit Firebase-Apps beschrieben.

Allgemeine Informationen zu API-Schlüsseln und Firebase

API-Schlüssel für Firebase unterscheiden sich von typischen API-Schlüsseln

Im Gegensatz zur typischen Verwendung von API-Schlüsseln werden API-Schlüssel für Firebase-Dienste nicht verwendet, um den Zugriff auf Back-End-Ressourcen zu steuern . Dies kann nur mit Firebase-Sicherheitsregeln (um zu steuern, welche Benutzer auf Ressourcen zugreifen können) und App Check (um zu steuern, welche Apps auf Ressourcen zugreifen können) erfolgen.

Normalerweise müssen Sie API-Schlüssel sorgfältig schützen (z. B. indem Sie einen Tresordienst verwenden oder die Schlüssel als Umgebungsvariablen festlegen); API-Schlüssel für Firebase-Dienste können jedoch in Code oder eingecheckte Konfigurationsdateien aufgenommen werden.

Obwohl API-Schlüssel für Firebase-Dienste sicher in Code aufgenommen werden können, gibt es einige spezielle Fälle, in denen Sie Limits für Ihren API-Schlüssel erzwingen sollten; wenn Sie beispielsweise Firebase ML, Firebase Authentication mit der E-Mail-/Passwort-Anmeldemethode oder eine kostenpflichtige Google Cloud-API verwenden. Weitere Informationen zu diesen Fällen finden Sie später auf dieser Seite.

API-Schlüssel erstellen

Ein Firebase-Projekt kann viele API-Schlüssel haben, aber jeder API-Schlüssel kann nur einem einzigen Firebase-Projekt zugeordnet werden.

API-Schlüssel, die automatisch von Firebase für Ihre Firebase-Apps erstellt werden

Firebase erstellt automatisch API-Schlüssel für Ihr Projekt, wenn Sie eine der folgenden Aktionen ausführen:

  • Erstellen Sie ein Firebase-Projekt > Automatisch erstellter Browser key
  • Erstellen Sie eine Firebase Apple App > Automatisch erstellter iOS key
  • Erstellen Sie eine Firebase-Android-App > Android key wird automatisch erstellt

Sie können in der Google Cloud Console auch eigene API-Keys erstellen, beispielsweise für die Entwicklung oder das Debugging . Erfahren Sie später auf dieser Seite mehr darüber, wann dies empfohlen werden könnte.

Finden Sie Ihre API-Schlüssel

Sie können alle API-Schlüssel Ihres Projekts im Bereich „ APIs & Dienste“ > „Anmeldedaten“ in der Google Cloud Console anzeigen und verwalten.

An den folgenden Stellen finden Sie auch, welcher API-Schlüssel automatisch mit einer Firebase-App abgeglichen wird . Standardmäßig verwenden alle Firebase-Apps Ihres Projekts für dieselbe Plattform (Apple vs. Android vs. Web) denselben API-Schlüssel.

  • Firebase Apple Apps – Suchen Sie den automatisch zugeordneten API-Schlüssel einer App in der Firebase-Konfigurationsdatei GoogleService-Info.plist im Feld API_KEY .

  • Firebase-Android-Apps – Suchen Sie den automatisch zugeordneten API-Schlüssel einer App in der Firebase-Konfigurationsdatei google-services.json im Feld current_key .

  • Firebase-Web-Apps – Finden Sie den automatisch zugeordneten API-Schlüssel einer App im Firebase-Konfigurationsobjekt im Feld apiKey .

Verwenden eines API-Schlüssels

API-Schlüssel werden verwendet, um Ihr Firebase-Projekt bei der Interaktion mit Firebase-/Google-Diensten zu identifizieren. Insbesondere werden sie verwendet, um API-Anforderungen für Kontingente und Abrechnung mit Ihrem Projekt zu verknüpfen. Sie sind auch nützlich für den Zugriff auf öffentliche Daten.

Beispielsweise können Sie explizit einen API-Schlüssel verwenden, indem Sie seinen Wert als Abfrageparameter an einen REST-API-Aufruf übergeben. Dieses Beispiel zeigt, wie Sie eine Anfrage an die Link-Shortener-API für dynamische Links stellen können:

POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY

Wenn Ihre App eine Firebase-API aufruft, sucht Ihre App automatisch in der Firebase-Konfigurationsdatei/im Objekt nach dem API-Schlüssel Ihres Projekts. Sie können Ihre API-Schlüssel jedoch mit einem anderen Mechanismus festlegen, einschließlich Umgebungsvariablen.

Einschränkungen auf API-Schlüssel anwenden (empfohlen)

Obwohl es nicht notwendig ist, einen API-Schlüssel für Firebase-Dienste geheim zu halten, gibt es einige spezifische Fälle (siehe unten), in denen Sie möglicherweise zusätzliche Maßnahmen ergreifen möchten, um Ihr Projekt vor Missbrauch des API-Schlüssels zu schützen.

Verschärfen Sie das Kontingent, wenn Sie die kennwortbasierte Authentifizierung verwenden

Wenn Sie die passwortbasierte Firebase-Authentifizierung verwenden und jemand Ihren API-Schlüssel erhält, kann er nicht auf die Datenbank Ihres Firebase-Projekts oder Cloud-Speicherdaten zugreifen , solange diese Daten durch Firebase-Sicherheitsregeln geschützt sind . Sie könnten jedoch Ihren API-Schlüssel verwenden, um auf die Authentifizierungsendpunkte von Firebase zuzugreifen und Authentifizierungsanfragen für Ihr Projekt zu stellen.

Um die Möglichkeit zu mindern, dass jemand einen API-Schlüssel missbraucht, um einen Brute-Force-Angriff zu versuchen, können Sie das Standardkontingent der Endpunkte identitytoolkit.googleapis.com verschärfen, um die normalen Verkehrserwartungen Ihrer App widerzuspiegeln. Beachten Sie, dass Sie möglicherweise Anmeldefehler erhalten, wenn Sie dieses Kontingent verschärfen und Ihre App plötzlich neue Benutzer gewinnt, bis Sie das Kontingent erhöhen. Sie können die API-Kontingente Ihres Projekts in der Google Cloud Console ändern.

Verwenden Sie separate, eingeschränkte API-Schlüssel für bestimmte Arten von APIs

Obwohl API-Schlüssel, die für Firebase-Dienste verwendet werden, im Allgemeinen nicht als geheim behandelt werden müssen, sollten Sie einige zusätzliche Vorsichtsmaßnahmen bei API-Schlüsseln treffen, die verwendet werden, um Zugriff auf Google Cloud-APIs zu gewähren, die Sie manuell aktiviert haben.

Wenn Sie eine Google Cloud-API (auf einer beliebigen Plattform) verwenden, die nicht automatisch von Firebase aktiviert wird (d. h. Sie haben sie selbst aktiviert), sollten Sie erwägen, separate, eingeschränkte API-Schlüssel zur Verwendung mit diesen APIs zu erstellen. Dies ist besonders wichtig, wenn die API für einen kostenpflichtigen Google Cloud-Dienst bestimmt ist.

Wenn Sie beispielsweise die Cloud Vision-APIs von Firebase ML unter iOS verwenden, sollten Sie separate API-Schlüssel erstellen , die Sie nur für den Zugriff auf die Cloud Vision-APIs verwenden.

Durch die Verwendung separater, eingeschränkter API-Schlüssel für Nicht-Firebase-APIs können Sie die Schlüssel bei Bedarf rotieren oder ersetzen und den API-Schlüsseln zusätzliche Einschränkungen hinzufügen, ohne Ihre Nutzung der Firebase-Dienste zu unterbrechen.

Verwenden Sie umgebungsspezifische API-Schlüssel (empfohlen)

Wenn Sie unterschiedliche Firebase-Projekte für unterschiedliche Umgebungen wie Staging und Produktion einrichten, ist es wichtig, dass jede App-Instanz mit dem entsprechenden Firebase-Projekt interagiert. Beispielsweise sollte Ihre Staging-App-Instanz niemals mit Ihrem Firebase-Produktionsprojekt kommunizieren. Dies bedeutet auch, dass Ihre Staging-App API-Schlüssel verwenden muss, die mit Ihrem Staging-Firebase-Projekt verknüpft sind.

Um Probleme beim Vorantreiben von Codeänderungen von der Entwicklung über das Staging in die Produktion zu reduzieren, legen Sie API-Schlüssel, anstatt sie in den Code selbst einzufügen, entweder als Umgebungsvariablen fest oder fügen Sie sie in eine Konfigurationsdatei ein.

Beachten Sie, dass Sie, wenn Sie die Firebase Local Emulator Suite zusammen mit Firebase ML für die Entwicklung verwenden, einen Nur-Debugging-API-Schlüssel erstellen und verwenden müssen. Anweisungen zum Erstellen dieser Art von Schlüsseln finden Sie in der Firebase ML-Dokumentation .

Häufig gestellte Fragen