API-Schlüssel sind für Apps und Projekte erforderlich, für die Google Maps Platform APIs und SDKs verwendet werden. In diesem Dokument wird beschrieben, wie du API-Schlüssel für den angedachten Zweck verwendest, sie wie andere Anmeldedaten schützen kannst und welche Einschränkungen für deine Projekte geeignet sind.
Was sind API-Schlüssel?
API-Schlüssel sind projektbezogene Anmeldedaten, die zwei Zwecke erfüllen:
- Projektidentifizierung
Sie dienen zum Ermitteln von Apps oder Projekten, die die API oder das SDK aufrufen. - Projektautorisierung
Mit ihnen wird geprüft, ob der aufrufende App Zugriff auf die API oder das SDK gewährt wurde und ob die API oder das SDK im Projekt aktiviert wurde.
Wenn ein API-Schlüssel erstellt wird, ist er einem Projekt zugeordnet. Durch die Identifizierung des aufrufenden Projekts können mit einem API-Schlüssel Nutzungsinformationen mit diesem Projekt verknüpft werden. Außerdem werden so Aufrufe von anderen Projekten abgelehnt.
API-Schlüssel schützen
Du solltest die API-Schlüssel in deiner Anwendung für alle Google Maps Platform-Produkte sichern, die von deiner Anwendung verwendet werden. Du kannst API-Schlüssel sichern, indem du Einschränkungen festlegst und Best Practices implementierst, die für die Google Maps Platform APIs in deiner Anwendung geeignet sind. Wenn du ungesicherte Anmeldedaten öffentlich zugänglich machst, werden sie ggf. unbeabsichtigt genutzt, was zu unerwarteten Belastungen deines Kontos führen könnte.
Die folgenden Best Practices beschreiben Strategien zum Schutz deiner API-Schlüssel. Die geltenden Best Practices für ein einzelnes Google Maps Platform-Produkt, z. B. Maps JavaScript API, findest du im Abschnitt API-Schlüsseleinschränkungen und Best Practices.
-
API-Schlüssel einschränken Du kannst deinen API-Schlüssel am besten schützen, indem du ihn auf bestimmte IP-Adressen, Verweis-URLs oder mobile Apps sowie bestimmte APIs einschränkst, weil das die Auswirkungen eines gehackten Schlüssels erheblich reduziert.
Du kannst Anwendungs- und API-Einschränkungen für einen Schlüssel über die Console angeben. Öffne dazu die Seite „Anmeldedaten“ und erstelle dann einen neuen API-Schlüssel mit den gewünschten Einstellungen oder bearbeite die Einstellungen eines API-Schlüssels. Ausführliche Informationen findest du unter API-Schlüssel einschränken.
- Verwende unabhängige API-Schlüssel für verschiedene Apps. Dadurch wird der Bereich der einzelnen Schlüssel eingeschränkt. Wenn ein API-Schlüssel manipuliert wurde, kannst du den betroffenen Schlüssel löschen und widerrufen, ohne deine anderen API-Schlüssel aktualisieren zu müssen.
- Lösche nicht benötigte API-Schlüssel.
So löschst du einen API-Schlüssel:
- Rufe den Bereich Anmeldedaten auf.
- Wähle den API-Schlüssel aus, den du löschen möchtest.
- Klicke am oberen Seitenrand auf die Schaltfläche Löschen.
- Wenn das Pop-up Anmeldedaten löschen erscheint, klicke auf LÖSCHEN.
-
Beim nochmaligen Generieren von API-Schlüsseln solltest du vorsichtig sein. Wenn die Migration deiner Apps vom alten zum neu generierten API-Schlüssel mehr als 24 Stunden dauert, werden die nicht aktualisierten Instanzen beschädigt, da sie auf den alten Schlüssel verweisen, der 24 Stunden nach der Neuerstellung gelöscht wird.
Wenn du einen API-Schlüssel neu generierst, geschieht Folgendes:
- Ein neuer Schlüssel entsteht aus dem Neuerstellungsprozess.
- Der neue Schlüssel erhält alle Einschränkungen des alten Schlüssels.
- Ein 24-Stunden-Fenster beginnt, das die Zeitspanne bis zum Löschen des alten Schlüssels darstellt.
-
Beobachte die Nutzung deiner API auf Anomalien. Wenn du eine nicht autorisierte Verwendung feststellst, rotiere die Schlüssel und benachrichtige Google.
Bevor du einen Schlüssel rotierst, kannst du die mit dem Schlüssel verbundenen Einschränkungen beibehalten, indem du eine Kopie davon in einer Datei erstellst.
-
Verwende bei Apps, für die Maps Web Service APIs oder Static Web APIs genutzt werden, die folgenden Methoden zum Sichern deiner Apps und API-Schlüssel:
- Bette API-Schlüssel oder Signatur-Secrets nicht direkt in Code ein. Anstatt API-Schlüssel oder andere private Informationen direkt in den Code deiner Anwendung einzubetten, solltest du diese in Umgebungsvariablen einfügen oder in Dateien einbinden, die getrennt vom Quellcode deines Codes gespeichert werden – außerhalb des Quell-Repositories deiner Anwendung. Wenn du anschließend deinen Code freigibst, werden die API-Schlüssel oder Signatur-Secrets nicht in die freigegebenen Dateien aufgenommen.
- Speichere die API-Schlüssel und Signatur-Secrets nicht in der Quellstruktur der Anwendung. Wenn du API-Schlüssel oder andere private Informationen in Dateien speicherst, solltest du die Dateien außerhalb der Quellstruktur der Anwendung belassen, um sicherzustellen, dass diese Daten nicht in deinem Quellcode-Kontrollsystem enthalten sind. Das ist besonders wichtig, wenn du ein öffentliches Quellcode-Verwaltungssystem wie GitHub verwendest.
- Überprüfe deinen Code, bevor du ihn öffentlich verfügbar machst. Er sollte keine API-Schlüssel, Signatur-Secrets oder andere private Informationen mehr enthalten.
-
Verwende bei mobilen Apps, für die Web Service APIs oder Static Web APIs genutzt werden, eines der folgenden Verfahren, um API-Schlüssel oder Signatur-Secrets weiter zu schützen:
-
Verwende einen Proxyserver. Der Proxyserver stellt eine solide Quelle für die Interaktion mit der entsprechenden Google Maps Platform API bereit. Weitere Informationen zum Verwenden eines Proxyservers findest du unter Living Vicariously: Using Proxy Servers with the Google Data API Client Libraries (auf Englisch).
- Verschleiere oder verschlüssele den API-Schlüssel oder das Signatur-Secret. Dadurch wird das Kopieren von API-Schlüsseln und anderen privaten Daten direkt aus der Anwendung erschwert.
-
API-Schlüssel einschränken
API-Schlüssel sind Anmeldedaten, die einen sorgfältigen Umgang erfordern. Folge mindestens den nachfolgenden Empfehlungen, um deine Schlüssel zu sichern, und lege Einschränkungen fest, um die Auswirkungen manipulierter API-Schlüssel zu reduzieren.
Du kannst einen API-Schlüssel einschränken, indem du eine Anwendungseinschränkung oder eine oder mehrere API-Einschränkungen festlegst.
Anwendungseinschränkungen beschränken die Nutzung von API-Schlüsseln auf bestimmte Websites (IP-Adresse und Website) oder bestimmte Plattformen (Android und iOS). Du kannst maximal eine Einschränkung aus dieser Kategorie auswählen (siehe Google Maps Platform APIs nach Plattform).
API-Einschränkungen beschränken die Verwendung von API-Schlüsseln auf eine oder mehrere Google Maps Platform APIs oder SDKs. Anfragen zum Verwenden von APIs oder SDKs, die mit einem API-Schlüssel verknüpft sind, werden verarbeitet. Anfragen zum Verwenden von APIs oder SDKs, die nicht mit einem API-Schlüssel verknüpft sind, schlagen fehl. Für einen API-Schlüssel kannst du so viele API-Einschränkungen angeben, wie erforderlich. Die mit einem API-Schlüssel verknüpften APIs oder SDKs unterstützen die für diesen API-Schlüssel festgelegte Anwendungseinschränkung.
Anwendungseinschränkung für einen API-Schlüssel festlegen
- Rufe den Bereich Anmeldedaten auf.
- Wähle den API-Schlüssel aus, für den du eine Einschränkung festlegen möchtest. Die Seite mit den Eigenschaften des API-Schlüssels wird angezeigt.
- Wähle unter Schlüsseleinschränkungen die Option Anwendungseinschränkungen aus.
Wähle eine der Einschränkungstypen aus und gib die erforderlichen Informationen gemäß der Einschränkungsliste an.Einschränkungstyp Beschreibung HTTP-Verweis-URLs Lasse Anfragen von der von dir bereitgestellten Liste von Websites zu.
Gib unter den Typen eine oder mehrere HTTP-Verweis-URL-Websites an. Platzhalterzeichen sind für die Benennung ähnlicher Websites zulässig. Beispiel:
*.google.com
akzeptiert alle Websites, die aufgoogle.com
enden, wie beispielsweisehttps://developers.google.com
.IP-Adressen Lasse Anfragen von der von dir bereitgestellten Liste von Webserver-IP-Adressen zu.
Gib unter den Typen eine IPv4- oder IPv6-Adresse oder ein Subnetz in CIDR-Notation an (z. B. 192.168.0.0/22). Sobald du einen Eintrag fertiggestellt hast, wird ein neues Feld angezeigt. Dort kannst du einen weiteren Eintrag eingeben.
Android-Apps Füge den Paketnamen und den SHA1-Signaturzertifikat-Fingerabdruck hinzu, um die Nutzung auf deine Android-App einzuschränken.
Füge unter den Typen den SHA-1-Signaturzertifikat-Fingerabdruck sowie den Android-Paketnamen aus der Datei „AndroidManifest.xml“ hinzu.
iOS-Apps Lasse Anfragen von der iOS-App mit dem von dir bereitgestellten Paket-Identifikator zu.
Wähle unter den Typen den entsprechenden iOS-Paket-Identifikator aus der Liste aus.
- Klicke auf Speichern.
Die Einschränkung wird nach diesem Schritt in die API-Schlüsseldefinition aufgenommen. Wenn du nicht die erforderlichen Details angibst oder nicht auf „Speichern“ klickst, wird der API-Schlüssel nicht eingeschränkt. (Weitere Informationen findest du in der Anleitung API-Schlüssel anfordern für die spezifische API oder das jeweilige SDK.)
So legst du eine API-Einschränkung für einen API-Schlüssel fest:
- Gehe zum Bereich Anmeldedaten.
- Wähle den API-Schlüssel aus, den du einschränken möchtest.
Die Seite API-Schlüssel einschränken und umbenennen erscheint. - Gehe unter API-Einschränkungen so vor:
- Klicke auf Schlüssel einschränken.
- Klicke auf das Drop-down-Menü APIs auswählen und wähle die APIs oder SDKs aus, auf die deine Anwendung mit dem API-Schlüssel zugreifen soll. Wenn eine API oder ein SDK nicht aufgeführt ist, musst du sie aktivieren.
- Klicke auf Speichern.
Die Einschränkung wird nach diesem Schritt in die API-Schlüsseldefinition aufgenommen. Wenn du nicht die erforderlichen Details angibst oder nicht auf „Speichern“ klickst, wird der API-Schlüssel nicht eingeschränkt. (Weitere Informationen findest du in der Anleitung API-Schlüssel anfordern für die spezifische API oder das jeweilige SDK.)
API-Schlüsseleinschränkungen und Best Practices
In den folgenden Tabellen sind die entsprechenden Einschränkungen und Best Practices für API-Schlüssel für die einzelnen Google Maps Platform APIs, SDKs und Dienste aufgeführt.
Websites mit Maps JavaScript, Embed oder Static APIs
Apps und Server, für die Webdienste verwendet werden
Android-Apps
API/SDK/Dienst | Anwendungseinschränkung1 | API-Einschränkung1 | Best Practices |
---|---|---|---|
Maps SDK for Android | Android-Einschränkung | Maps SDK for Android | |
Places SDK for Android | Android-Einschränkung | Places API |
iOS-Apps
API/SDK/Dienst | Anwendungseinschränkung1 | API-Einschränkung1 | Best Practices |
---|---|---|---|
Maps SDK for iOS | iOS-Einschränkung | Maps SDK for iOS | |
Places SDK for iOS | iOS-Einschränkung | Places API |
1 Du kannst einen uneingeschränkten API-Schlüssel mit beliebigen Google Maps Platform APIs oder SDKs verwenden. Es wird jedoch dringend empfohlen, API-Schlüssel, insbesondere in folgenden Szenarien, einzuschränken:
- Die Testumgebung ist öffentlich sichtbar.
- Die Anwendung, die einen API-Schlüssel verwendet, kann in einer Produktionsumgebung genutzt werden.
2 Für mobile Anwendungen sollten das native Maps SDK for Android und das Maps SDK for iOS verwendet werden.
3 Für die Maps Static API und die Street View Static API musst du zusätzlich zu einem API-Schlüssel eine digitale Signatur angeben, um das Tageskontingent von 25.000 Kartenaufrufen zu überschreiten.
Hinweis: Für gemeinsame Secrets zum Signieren ist mindestens die gleiche Sicherheitsstufe wie bei API-Schlüsseln erforderlich, die mit Maps Web Service APIs verwendet werden.
Wenn du deine Bildanfragen dynamisch signieren musst, sollte das serverseitig erfolgen. Wenn deine Apps auf die clientseitige Eingabe zum Generieren der statischen Bilder angewiesen sind, sichere sie mit einer oder mehreren der folgenden Methoden:
Wenn du deine Anfragen signierst, prüfe außerdem, wie viele nicht signierte Anfragen du pro Tag zulassen möchtest, und passe die Kontingente für nicht signierte Anfragen entsprechend an.
4 IP-Einschränkungen können unpraktisch sein, z. B. in mobilen Anwendungen und Cloudumgebungen, die auf dynamische IP-Adressen angewiesen sind. Wenn du in diesen Fällen Maps Web Service APIs verwendest, schütze deine Apps mit einer oder mehreren der folgenden Techniken:
5 Du kannst für deine mobilen Apps das native Places SDK for Android und Places SDK for iOS verwenden.