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.
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
im FeldGoogleService-Info.plist API_KEY
.Firebase-Android-Apps – Suchen Sie den automatisch abgeglichenen API-Schlüssel einer App in der Firebase-Konfigurationsdatei
im Feldgoogle-services.json 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.
In dieser Anleitung wird beschrieben, wie Sie einen separaten, eingeschränkten API-Schlüssel für eine gefälschte API namens Super Service API
erstellen.
Schritt 1: Konfigurieren Sie Ihre vorhandenen API-Schlüssel, um den Zugriff auf Super Service API
zu verhindern
Öffnen Sie die Seite „Anmeldeinformationen“ der Google Cloud Console. Wenn Sie dazu aufgefordert werden, wählen Sie Ihr Projekt aus.
Öffnen Sie für jeden vorhandenen API-Schlüssel in der Liste die Bearbeitungsansicht.
Wählen Sie im Abschnitt API-Einschränkungen die Option Schlüssel einschränken aus und fügen Sie dann alle APIs zur Liste hinzu, auf die der API-Schlüssel Zugriff haben soll. Stellen Sie sicher, dass Sie nicht die API angeben, für die Sie einen separaten API-Schlüssel erstellen (in diesem Beispiel
Super Service API
).Wenn Sie die API-Einschränkungen eines API-Schlüssels konfigurieren, deklarieren Sie explizit die APIs, auf die der Schlüssel Zugriff hat. Wenn im Abschnitt „API-Einschränkungen“ die Option „Schlüssel nicht einschränken“ ausgewählt ist, kann standardmäßig ein API-Schlüssel verwendet werden, um auf jede API zuzugreifen, die für das Projekt aktiviert ist.
Jetzt gewähren Ihre vorhandenen API-Schlüssel keinen Zugriff auf die Super Service API
, aber jeder Schlüssel funktioniert weiterhin für alle APIs, die Sie zu seiner API-Einschränkungsliste hinzugefügt haben.
Schritt 2: Erstellen und verwenden Sie einen neuen API-Schlüssel für den Zugriff auf die Super Service API
Kehren Sie zur Seite „Anmeldeinformationen“ zurück. Stellen Sie sicher, dass Ihr Firebase-Projekt noch ausgewählt ist.
Klicken Sie auf Anmeldeinformationen erstellen > API-Schlüssel . Notieren Sie sich den neuen API-Schlüssel und klicken Sie dann auf Schlüssel einschränken .
Wählen Sie im Abschnitt API-Einschränkungen die Option Schlüssel einschränken aus und fügen Sie dann nur die
Super Service API
zur Liste hinzu.Dieser neue API-Schlüssel gewährt nur Zugriff auf die
Super Service API
.Konfigurieren Sie Ihre App und Dienste für die Verwendung des neuen API-Schlüssels.
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
Sie können eine der folgenden Optionen verwenden, um zu bestimmen, welcher API-Schlüssel Ihrer Firebase-App zugeordnet ist:
Firebase-Konsole
Gehen Sie zu den Projekteinstellungen scrollen Sie dann nach unten zur Karte „Ihre Apps“ .
Wählen Sie die gewünschte App aus.
Rufen Sie die Firebase-Konfigurationsdatei/das Firebase-Konfigurationsobjekt für die gewünschte App ab und suchen Sie dann deren API-Schlüssel:
Apple : Laden Sie
GoogleService-Info.plist
herunter und suchen Sie dann das FeldAPI_KEY
Android : Laden Sie
google-services.json
herunter, suchen Sie die Konfiguration für die gewünschte App (suchen Sie nach dem Paketnamen) und suchen Sie dann das Feldcurrent_key
Web : Wählen Sie die Option „Config“ und suchen Sie dann das Feld
apiKey
.
Firebase-CLI
Rufen Sie die Firebase-Konfigurationsdatei/das Firebase-Konfigurationsobjekt für die gewünschte App ab, indem Sie den folgenden Befehl ausführen:
firebase apps:sdkconfig PLATFORM FIREBASE_APP_ID
- PLATFORM (eine von):
IOS
|ANDROID
|WEB
- FIREBASE_APP_ID : die von Firebase zugewiesene eindeutige Kennung für Ihre Firebase-App ( finden Sie Ihre App-ID ).
- PLATFORM (eine von):
Suchen Sie in der gedruckten Firebase-Konfiguration der App nach dem API-Schlüssel:
Apple : Suchen Sie das Feld
API_KEY
Android : Suchen Sie die Konfiguration für die gewünschte App (suchen Sie nach dem Paketnamen) und suchen Sie dann das Feld
current_key
Web : Suchen Sie das
apiKey
Feld
REST-API
Rufen Sie die
apiKeyId
(die UID) des API-Schlüssels ab, indem Sie den entsprechenden Endpunkt für die gewünschte App aufrufen und dann denapiKeyId
Wert an den nächsten Schritt übergeben.- Apple : Rufen Sie
projects.iosApps.get
auf - Android : Rufen Sie
projects.androidApps.get
auf - Web : Rufen Sie
projects.webApps.get
auf
- Apple : Rufen Sie
Rufen Sie die API-Schlüsselzeichenfolge ab, indem Sie
projects.locations.keys.getKeyString
aufrufen.Bei dieser
keyString
handelt es sich um denselben Wert, der im Konfigurationsartefakt der App ( Apple | Android | Web ) zu finden ist.
Firebase Apple Apps – Jede App verfügt über eine eigene Konfigurationsdatei und es kann nur ein API-Schlüssel aufgeführt werden.
Firebase-Android-Apps – Alle Android-Apps im Firebase-Projekt sind in derselben Konfigurationsdatei aufgeführt, und für jede App kann nur ein API-Schlüssel aufgeführt sein. Für jede App in dieser Konfigurationsdatei kann jedoch ein anderer Schlüssel aufgeführt sein.
Firebase-Web-Apps – Jede App verfügt über ein eigenes Konfigurationsobjekt und es kann nur ein API-Schlüssel aufgeführt werden.
Sie können jedoch mehrere API-Schlüssel mit einer App verwenden. Sie müssen einen Mechanismus bereitstellen, damit Ihre App auf diese anderen API-Schlüssel zugreifen kann, beispielsweise über eine Umgebungsvariable. Der Mechanismus für den Zugriff auf die anderen API-Schlüssel kann einfach nicht davon abhängen, dass diese API-Schlüssel in Ihrer Firebase-Konfigurationsdatei/Ihrem Firebase-Konfigurationsobjekt aufgeführt sind.
Wenn Sie zum ersten Mal die Firebase-Konfigurationsdatei/das Firebase-Konfigurationsobjekt Ihrer App abrufen , prüft Firebase, ob in Ihrem Projekt API-Schlüssel vorhanden sind, die „Anwendungseinschränkungen“ haben, die mit der App übereinstimmen (z. B. eine passende Bundle-ID für die Apple-App).
Wenn Firebase keine passenden eingeschränkten Schlüssel findet, listet es in der Konfigurationsdatei/im Konfigurationsobjekt den iOS key
für Apple-Apps, den Android key
für Android-Apps und den Browser key
für Web-Apps auf (vorausgesetzt, dass diese Schlüssel vorhanden sind). haben keine „Anwendungseinschränkungen“, die verhindern, dass sie mit dieser App übereinstimmen).
Ja, Sie können Ihren API-Schlüssel manuell aus Ihrer Konfigurationsdatei/Ihrem Konfigurationsobjekt löschen. Sie müssen jedoch einen anderen Mechanismus bereitstellen, damit Ihre App auf einen API-Schlüssel zugreifen kann (z. B. über eine Umgebungsvariable). Andernfalls schlagen alle Aufrufe der Firebase-Dienste fehl.
Ja, Sie können eine Konfigurationsdatei/ein Konfigurationsobjekt manuell bearbeiten, um einer App einen anderen API-Schlüssel zuzuordnen.
Beachten Sie, dass beim erneuten Abrufen der Konfigurationsdatei/des Konfigurationsobjekts Ihrer App von der Konsole immer die API-Schlüssel aufgelistet werden, die Firebase automatisch dieser App zuordnet . Daher müssen Sie Ihre manuellen Änderungen bei Bedarf wiederholen.
Nein, ein API-Schlüssel identifiziert nur ein bestimmtes Projekt und kann nicht in ein anderes Projekt verschoben werden.
Hier sind einige der häufigsten Ursachen für ungültige API-Schlüssel:
Auf den API-Schlüssel werden „API-Schlüsseleinschränkungen“ angewendet, die ihn für die App, die versucht, den Schlüssel zu verwenden, nicht zuordenbar machen („Anwendungseinschränkungen“) oder für die aufgerufene API unbrauchbar machen („API-Einschränkungen“).
Der API-Schlüssel wurde aus dem Projekt in der Google Cloud Console gelöscht.
Der API-Schlüssel wurde nicht für die Projekt-ID erstellt, die in der Firebase-Konfigurationsdatei/im Firebase-Konfigurationsobjekt der App aufgeführt ist.
Eine Möglichkeit, dieses Problem zu beheben, besteht darin , die aktualisierte Version der Firebase-Konfigurationsdatei/des Firebase-Konfigurationsobjekts Ihrer App abzurufen und dann Ihre alte Konfigurationsdatei/Ihr altes Konfigurationsobjekt durch die neue aktualisierte Datei/das neue aktualisierte Objekt zu ersetzen . Bevor eine Konfigurationsdatei zum Herunterladen gesendet oder ein Konfigurationsobjekt in der Konsole angezeigt wird, prüft Firebase, ob die aufgelisteten API-Schlüssel mit der/den App(s) übereinstimmen .
Auf den von Ihrer Web-App verwendeten API-Schlüssel gelten wahrscheinlich „API-Einschränkungen“ . Stellen Sie in diesem Fall sicher, dass die Firebase Management API in der Liste der zulässigen APIs aufgeführt ist.
Wenn Sie einen API-Schlüssel löschen, der von einer App verwendet wird, schlagen API-Aufrufe von dieser App fehl. Möglicherweise erhalten Sie Berichte, E-Mails oder Fehlermeldungen, dass Sie versuchen, einen ungültigen API-Schlüssel zu verwenden.
Das Löschen eines API-Schlüssels ist dauerhaft und kann nicht rückgängig gemacht werden.