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.
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
im FeldGoogleService-Info.plist API_KEY
.Firebase-Android-Apps – Suchen Sie den automatisch zugeordneten API-Schlüssel einer App in der Firebase-Konfigurationsdatei
im Feldgoogle-services.json 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.
Diese Anweisungen beschreiben, 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 die Super Service API
zu verbieten
Öffnen Sie die Anmeldedatenseite 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 einschließen, 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, geben Sie explizit die APIs an, auf die der Schlüssel Zugriff hat. Wenn im Abschnitt API - Einschränkungen Schlüssel nicht einschränken ausgewählt ist, kann ein API-Schlüssel standardmäßig 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 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 Anmeldedaten 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.
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
Sie können eine der folgenden Optionen verwenden, um festzustellen, welcher API-Schlüssel Ihrer Firebase-App zugeordnet ist:
Firebase-Konsole
Gehen Sie zu Projekteinstellungen und scrollen Sie dann nach unten zur Karte Ihre Apps .
Wählen Sie die gewünschte App aus.
Rufen Sie die Firebase-Konfigurationsdatei/das Objekt für die gewünschte App ab und suchen Sie dann ihren API-Schlüssel:
Apple : Laden
GoogleService-Info.plist
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 ihrem 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 Objekt für die gewünschte App ab, indem Sie den folgenden Befehl ausführen:
firebase apps:sdkconfig PLATFORM FIREBASE_APP_ID
- PLATFORM (eines von):
IOS
|ANDROID
|WEB
- FIREBASE_APP_ID : die von Firebase zugewiesene eindeutige Kennung für Ihre Firebase-App ( finden Sie Ihre App-ID )
- PLATFORM (eines von):
Suchen Sie in der gedruckten Firebase-Konfiguration der App nach dem API-Schlüssel:
Apple : Suchen Sie das
API_KEY
-FeldAndroid : Suchen Sie die Konfiguration für die gewünschte App (suchen Sie nach ihrem 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 :
projects.iosApps.get
aufrufen - Android :
projects.androidApps.get
aufrufen - Web : Rufen Sie
projects.webApps.get
- Apple :
Rufen Sie die API-Schlüsselzeichenfolge ab, indem Sie
projects.locations.keys.getKeyString
aufrufen.Dieser
keyString
ist derselbe Wert, der im Konfigurationsartefakt der App ( Apple | Android | Web ) zu finden ist.
Firebase Apple Apps – Jede App hat ihre eigene Konfigurationsdatei und es kann nur ein API-Schlüssel aufgelistet 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 hat ihr eigenes Konfigurationsobjekt und es kann nur ein API-Schlüssel aufgelistet werden.
Sie können jedoch mehrere API-Schlüssel mit einer App verwenden. Sie müssen einen Mechanismus für Ihre App bereitstellen, um auf diese anderen API-Schlüssel zuzugreifen, z. B. ü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 Objekt aufgeführt sind.
Wenn Sie zum ersten Mal die Firebase-Konfigurationsdatei/das Objekt Ihrer App abrufen , prüft Firebase, ob es in Ihrem Projekt vorhandene API-Schlüssel mit „Anwendungseinschränkungen“ gibt, die mit der App übereinstimmen (z. B. eine übereinstimmende Bundle-ID für die Apple-App).
Wenn Firebase keine übereinstimmenden eingeschränkten Schlüssel findet, listet es in der Konfigurationsdatei/dem Objekt den iOS key
für Apple-Apps, den Android key
für Android-Apps und den Browser key
für Web-Apps auf (vorausgesetzt, diese Schlüssel existieren und haben keine "Anwendungseinschränkungen", die sie daran hindern, mit dieser App übereinzustimmen).
Ja, Sie können Ihren API-Schlüssel manuell aus Ihrer Konfigurationsdatei/Ihrem Objekt löschen. Sie müssen jedoch einen anderen Mechanismus für Ihre App bereitstellen, um auf einen API-Schlüssel zuzugreifen (z. B. über eine Umgebungsvariable). Andernfalls schlagen alle Aufrufe von Firebase-Diensten fehl.
Ja, Sie können eine Konfigurationsdatei/ein Objekt manuell bearbeiten, um einer App einen anderen API-Schlüssel zuzuordnen.
Beachten Sie, dass beim erneuten Abrufen der Konfigurationsdatei/des Objekts Ihrer App von der Konsole immer die API-Schlüssel aufgelistet werden, die Firebase automatisch mit dieser App abgleicht . Daher müssen Sie Ihre manuellen Bearbeitungen nach 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 sind „API-Schlüsseleinschränkungen“ angewendet, die ihn nicht mit der App abgleichen, die versucht, den Schlüssel zu verwenden („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 Objekt der App aufgeführt ist.
Eine Möglichkeit, dieses Problem zu beheben, besteht darin , die aktualisierte Version der Firebase-Konfigurationsdatei/des Firebase-Objekts Ihrer App abzurufen und dann Ihre alte Konfigurationsdatei/Ihr altes Objekt durch die neue aktualisierte Datei/das neue aktualisierte Objekt zu ersetzen . Vor dem Senden einer Konfigurationsdatei zum Herunterladen oder Anzeigen eines Konfigurationsobjekts in der Konsole prüft Firebase, ob die aufgelisteten API-Schlüssel mit der/ den App(s) übereinstimmen .
Auf den von Ihrer Webanwendung verwendeten API-Schlüssel sind wahrscheinlich „API-Einschränkungen“ angewendet. Stellen Sie in diesem Fall sicher, dass sich die Firebase Management API in der Liste der zulässigen APIs befindet.
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.