Best Practices für API-Schlüssel

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:

    1. Rufe den Bereich Anmeldedaten auf.
    2. Wähle den API-Schlüssel aus, den du löschen möchtest.
    3. Klicke am oberen Seitenrand auf die Schaltfläche Löschen.
    4. 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:

  • 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:

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

  1. Rufe den Bereich Anmeldedaten auf.
  2. 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.
  3. 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 auf google.com enden, wie beispielsweise https://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.

  4. 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:

  1. Gehe zum Bereich Anmeldedaten.
  2. Wähle den API-Schlüssel aus, den du einschränken möchtest.
    Die Seite API-Schlüssel einschränken und umbenennen erscheint.
  3. 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.
  4. 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

API/SDK/Dienst Anwendungseinschränkung1 API-Einschränkung1 Best Practices
Maps JavaScript API2 HTTP-Verweis-URL einschränken Maps JavaScript API
Directions-Dienst, Maps JavaScript API HTTP-Verweis-URL einschränken Directions API, Maps JavaScript API
Distanzmatrixdienst, Maps JavaScript API HTTP-Verweis-URL einschränken Distance Matrix API, Maps JavaScript API
Elevation-Dienst, Maps JavaScript API HTTP-Verweis-URL einschränken Elevation API, Maps JavaScript API
Geocoding-Dienst, Maps JavaScript API HTTP-Verweis-URL einschränken Geocoding API, Maps JavaScript API
Places Library, Maps JavaScript API HTTP-Verweis-URL einschränken Places API, Maps JavaScript API
Maps Embed API HTTP-Verweis-URL einschränken Maps Embed API
Maps Static API HTTP-Verweis-URL einschränken Maps Static API
Street View Static API HTTP-Verweis-URL einschränken Street View Static API

Apps und Server, für die Webdienste verwendet werden

API/SDK/Dienst Anwendungseinschränkung1 API-Einschränkung1 Best Practices
Directions API IP-Adressen einschränken4 Directions API
Distance Matrix API IP-Adressen einschränken4 Distance Matrix API
Elevation API IP-Adressen einschränken4 Elevation API
Geocoding API IP-Adressen einschränken4 Geocoding API
Geolocation API IP-Adressen einschränken4 Geolocation API
Places API5 IP-Adressen einschränken4 Places API
Roads API IP-Adressen einschränken4 Roads API
Time Zone API IP-Adressen einschränken4 Time Zone API

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.