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

Ein API-Schlüssel ist eine eindeutige Zeichenfolge, die zum Weiterleiten von Anfragen an Ihr Firebase-Projekt bei der Interaktion mit Firebase- und Google-Diensten verwendet wird. 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 zur Steuerung des Zugriffs auf Backend-Ressourcen verwendet . Dies ist 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) möglich.

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 problemlos in Code oder eingecheckte Konfigurationsdateien eingebunden werden.

Obwohl API-Schlüssel für Firebase-Dienste sicher in den Code eingebunden werden können, gibt es einige spezielle Fälle , in denen Sie Grenzwerte 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. Erfahren Sie später auf dieser Seite mehr über diese Fälle.

API-Schlüssel erstellen

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

Von Firebase automatisch erstellte API-Schlüssel für Ihre Firebase-Apps

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

  • Erstellen Sie ein Firebase-Projekt > Browser key automatisch erstellt
  • Erstellen Sie eine Firebase-App für Apple > iOS key automatisch erstellt
  • Erstellen Sie eine Firebase-Android-App > Android key automatisch erstellt

Sie können in der Google Cloud Console auch eigene API-Schlüssel erstellen, beispielsweise für die Entwicklung oder das Debuggen . 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 > Anmeldeinformationen in der Google Cloud Console anzeigen und verwalten.

An den folgenden Stellen können Sie auch herausfinden, welcher API-Schlüssel automatisch einer Firebase-App zugeordnet 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 abgeglichenen API-Schlüssel einer App in der Firebase-Konfigurationsdatei GoogleService-Info.plist im Feld API_KEY .

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

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

Verwendung 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-Anfragen 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 einen API-Schlüssel explizit 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 von Dynamic 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 Firebase-Konfigurationsobjekt nach dem API-Schlüssel Ihres Projekts. Sie können Ihre API-Schlüssel jedoch mit einem anderen Mechanismus festlegen, einschließlich Umgebungsvariablen.

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

Obwohl es nicht notwendig ist, einen API-Schlüssel für Firebase-Dienste als Geheimnis zu behandeln, gibt es bestimmte 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.

Erhöhen Sie das Kontingent, wenn Sie die passwortbasierte Authentifizierung verwenden

Wenn Sie die passwortbasierte Firebase-Authentifizierung verwenden und jemand an Ihren API-Schlüssel gelangt, kann er nicht auf die Datenbank- oder Cloud-Speicherdaten Ihres Firebase-Projekts 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 der Möglichkeit vorzubeugen, dass jemand einen API-Schlüssel für einen Brute-Force-Angriff missbraucht, können Sie das Standardkontingent der Endpunkte identitytoolkit.googleapis.com “ verschärfen, um die normalen Datenverkehrserwartungen Ihrer App widerzuspiegeln. Beachten Sie, dass es zu Anmeldefehlern kommen kann, wenn Sie dieses Kontingent verschärfen und Ihre App plötzlich mehr Nutzer erhält, 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 API-Typen

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

Wenn Sie eine Google Cloud API (auf einer beliebigen Plattform) verwenden, die nicht automatisch von Firebase aktiviert wird (das heißt, Sie haben sie selbst aktiviert), sollten Sie die Erstellung separater, eingeschränkter API-Schlüssel für die Verwendung mit diesen APIs in Betracht ziehen. 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.

Umgebungsspezifische API-Schlüssel verwenden (empfohlen)

Wenn Sie verschiedene Firebase-Projekte für unterschiedliche Umgebungen einrichten, beispielsweise für Staging und Produktion, 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 bei der Förderung von Codeänderungen von der Entwicklung über das Staging bis zur Produktion zu reduzieren, sollten Sie API-Schlüssel entweder als Umgebungsvariablen festlegen oder in eine Konfigurationsdatei aufnehmen, anstatt sie in den Code selbst aufzunehmen.

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

FAQs