Best Practices für die API-Sicherheit

Für Anwendungen und Projekte, für die die APIs und SDKs der Google Maps Platform verwendet werden, sind API-Schlüssel erforderlich. Für maximale Sicherheit und minimalen Aufwand solltest du deine API-Schlüssel gleich beim Erstellen sichern.

Das ist zwar auch möglich, nachdem sie erstellt und bereits verwendet wurden, es können je nach Verwendung des Schlüssels jedoch unterschiedliche Einschränkungen gelten. Es ist sehr kompliziert, Schlüssel in Android- und iOS-Apps zu ändern oder zu ersetzen. Sie können nämlich erst komplett ersetzt werden, wenn alle Nutzer die App aktualisiert haben. Bei JavaScript- oder Webdienstanwendungen ist das Ganze wesentlich einfacher. Das Ändern oder Ersetzen der Schlüssel muss aber trotzdem sorgfältig geplant und schnell umgesetzt werden.

Die erforderlichen Sicherheitsmaßnahmen für die einzelnen Google Maps Platform-Produkte findest du in den Tabellen im Abschnitt Weitere Informationen.

API-Schlüssel einschränken

Wenn du die API-Schlüssel zum ersten Mal erstellst, solltest du eine Anwendungseinschränkung und mindestens eine API-Einschränkung für sie festlegen.

  • Mit Anwendungseinschränkungen wird die Nutzung eines API-Schlüssels auf eine bestimmte Plattform (Android oder iOS) oder bestimmte Websites (öffentliche IP-Adresse und Website) beschränkt. Für jeden API-Schlüssel kann nur eine Art von Anwendungseinschränkung festgelegt werden.

  • Mit API-Einschränkungen wird die Verwendung von API-Schlüsseln auf eine oder mehrere Google Maps Platform APIs oder SDKs beschränkt. Es werden dann nur Nutzungsanfragen für APIs oder SDKs verarbeitet, die mit einem API-Schlüssel verknüpft sind. Pro API-Schlüssel können so viele API-Einschränkungen festgelegt werden wie nötig.

Falls du deinen API-Schlüssel beim Erstellen nicht gesichert hast, generiere zusätzliche API-Schlüssel und schränke diese ein. Aktualisiere dann deine Anwendungen mit den neuen API-Schlüsseln. Aus Sicherheitsgründen wäre ein Schlüssel pro Anwendung ideal. Du kannst eingeschränkte Schlüssel aber trotzdem für mehrere Anwendungen verwenden. Die Anwendungseinschränkungen des jeweiligen Schlüssels dürfen jedoch nicht zu Kompatibilitätsproblemen mit den Anwendungen führen, für die der Schlüssel verwendet wird.

Wenn du API-Schlüssel nach dem Erstellen einschränken möchtest, solltest du dir ansehen, wie sie genutzt werden, und dafür sorgen, dass durch die Einschränkungen keine Probleme mit vorhandenen Anwendungen auftreten.

  1. Rufe in der Google Cloud Console die Seite Messwerte auf.

  2. Wähle Filter einblenden aus.

  3. Wähle unter Gruppiert nach die Option Anmeldedaten aus. Jetzt siehst du, welche API-Schlüssel mit welchen Google-Diensten verwendet werden.

  4. Klicke auf Anmeldedaten.

  5. Hebe die Auswahl aller Anmeldedaten auf.

  6. Wähle jeden angezeigten Schlüssel aus und klicke auf OK.

  7. Wähle unter Gruppiert nach die Option API aus. Nun siehst du, welche API-Einschränkungen auf den Schlüssel angewendet werden müssen.

    Wenn du unter Gruppiert nach die Option API-Methode auswählst, lässt sich eventuell leichter ermitteln, welche Art von Anwendungseinschränkung am besten für den jeweiligen Schlüssel geeignet ist.

Anwendungseinschränkung für einen API-Schlüssel festlegen

  1. Rufe die Seite 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 einen der Einschränkungstypen aus und mache alle erforderlichen Angaben gemäß der Einschränkungsliste.

    Einschränkungstyp Beschreibung
    HTTP-Verweis-URLs Gib eine oder mehrere Verweis-URLs (Websites) an. Platzhalterzeichen sind für die Autorisierung aller Subdomains zulässig (*.google.com akzeptiert z. B. alle Websites, die auf .google.com enden).
    IP-Adressen Gib eine IPv4- oder IPv6-Adresse oder ein Subnetz in CIDR-Notation an. Bei einer Webdienstanfrage wird die externe IP-Adresse geprüft und mit der Einschränkung des API-Schlüssels abgeglichen. Verwende also die öffentliche IP-Adresse des Servers.
    Android-Apps Gib den SHA-1-Fingerabdruck des Signaturzertifikats und den Namen deines Android-Pakets aus der Datei AndroidManifest.xml an.
    iOS-Apps Wähle unter den Typen den entsprechenden iOS-Paket-Identifikator aus der Liste aus.
  4. Klicke auf Speichern.

API-Einschränkung für einen API-Schlüssel festlegen

  1. Rufe die Seite Anmeldedaten auf.

  2. Wähle den API-Schlüssel aus, den du einschränken möchtest. Die Seite API-Schlüssel einschränken und umbenennen wird geöffnet.

  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 es 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 auf der Seite API-Schlüssel abrufen der entsprechenden API bzw. des jeweiligen SDKs.

Ungenutzte API-Schlüssel löschen

Lösche einen API-Schlüssel nur, wenn er nicht in der Produktion verwendet wird. Wenn es keine erfolgreichen Anfragen dafür gibt, kann er wahrscheinlich gelöscht werden.

So löschst du einen API-Schlüssel:

  1. Rufe die Seite 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. Das Dialogfeld Anmeldedaten löschen wird eingeblendet. Wähle dort die Option Löschen aus.

    Das Löschen eines API-Schlüssels dauert einige Minuten. Danach werden Anfragen mit dem gelöschten API-Schlüssel abgelehnt.

Weitere Möglichkeiten zum Sichern deiner APIs

Vorsicht beim Neugenerieren von API-Schlüsseln

Wenn du einen API-Schlüssel neu generierst, wird ein neuer Schlüssel mit allen Einschränkungen des alten Schlüssels erstellt. Der alte API-Schlüssel wird nach 24 Stunden deaktiviert.

In dieser Zeit werden der alte und der neue Schlüssel akzeptiert, sodass du deine Anwendungen auf den neuen Schlüsseln umstellen kannst. Alle Anwendungen, die noch den alten API-Schlüssel verwenden, funktionieren nach diesen 24 Stunden jedoch nicht mehr.

  1. Rufe die Seite API-Schlüssel auf.

  2. Wähle Auf vorherigen Schlüssel zurücksetzen aus.

  3. Klicke im Dialogfeld Rückgängig machen auf Schlüssel zurücksetzen.

Bei einem Rollback wird die Version, die du zuletzt neu generiert hast, zur vorherigen Version und bleibt dann noch 24 Stunden lang aktiv. Du kannst zwischen diesen beiden Schlüsselversionen wechseln, bis du den Schlüssel wieder neu generierst.

Dabei wird nämlich die inaktive Version des Schlüssels überschrieben.

API-Nutzung überwachen

So prüfst du die Nutzung deiner API-Schlüssel:

  1. Rufe die Seite Messwerte auf.

  2. Klicke auf Filter einblenden.

  3. Wähle unter Gruppiert nach die Option API-Methode aus.

  4. Wähle unter Antwortcode die Option 2xx aus, um alle erfolgreichen Anfragen für diesen Schlüssel zu sehen.

Wenn du eine nicht autorisierte Nutzung feststellst, gehe so vor:

  1. Schränke deine Schlüssel ein.

    Wenn der Schlüssel in mehreren Anwendungen verwendet wird, stelle auf mehrere API-Schlüssel um, vorzugsweise mit separaten API-Schlüsseln für jede Anwendung.

  2. Sollte die nicht autorisierte Nutzung fortgesetzt werden, musst du die entsprechenden Schlüssel neu generieren oder löschen.

  3. Kontaktiere den Support.

Separate API-Schlüssel für jede Anwendung verwenden

Dadurch wird der Bereich der einzelnen Schlüssel eingeschränkt. Wenn ein API-Schlüssel manipuliert wurde, kannst du ihn löschen oder neu generieren, ohne etwas an deinen anderen API-Schlüsseln ändern zu müssen.

Auf mehrere API-Schlüsseln umstellen

So migrierst du von einem gemeinsamen API-Schlüssel für mehrere Anwendungen zu einem eigenen API-Schlüssel für jede Anwendung:

  1. Finde heraus, für welche Anwendungen neue Schlüssel erforderlich sind.

    • Webanwendungen lassen sich am einfachsten aktualisieren, da du den Code komplett verwaltest. Du solltest die Schlüssel all deiner webbasierten Anwendungen aktualisieren.
    • Bei mobilen Apps gestaltet sich das Ganze viel schwieriger. Sie müssen vom Nutzer aktualisiert werden, bevor die neuen Schlüssel zum Einsatz kommen können.
  2. Erstelle die neuen Schlüssel und schränke sie ein.

    • Lege sowohl eine Anwendungseinschränkung als auch mindestens eine API-Einschränkung fest.
  3. Weise den einzelnen Anwendungen die Schlüssel zu.

    • Bei Apps kann es Monate dauern, bis alle Nutzer die aktuelle Version mit dem neuen API-Schlüssel installiert haben.

Maps Web Service APIs oder Static Web APIs – Methoden zum Schutz von Anwendungen

  • API-Schlüssel und Secrets für die Signatur nicht im Quellcode der Anwendung speichern: Wenn du deine API-Schlüssel oder andere private Informationen in Umgebungsvariablen einfügst oder Dateien einschließt, die separat gespeichert sind, und dann deinen Code teilst, sind die API-Schlüssel oder Secrets nicht in den geteilten Dateien enthalten.

  • API-Schlüssel und Secrets für die Signatur nicht in der Quellstruktur der Anwendung speichern: Wenn du API-Schlüssel oder andere private Informationen in Dateien speicherst, solltest du diese Dateien außerhalb der Quellstruktur der Anwendung aufbewahren, damit die Schlüssel nicht im Verwaltungssystem deines Quellcodes enthalten sind. Das ist besonders dann wichtig, wenn du GitHub oder ein anderes öffentliches Verwaltungssystem für Quellcode verwendest.

Web Service APIs oder Static Web APIs – Methoden zum Schutz von mobilen Apps

  • Proxyserver verwenden: Der Proxyserver bietet eine solide Quelle für die Interaktion mit der entsprechenden Google Maps Platform API. Weitere Informationen zum Verwenden eines Proxyservers findest du im englischsprachigen Artikel „Living Vicariously: Using Proxy Servers with the Google Data API Client Libraries“ (/gdata/articles/proxy_setup).

  • API-Schlüssel oder Secret für die Signatur verschleiern oder verschlüsseln: Dadurch wird das Kopieren von API-Schlüsseln und anderen privaten Daten direkt aus der App erschwert.

Weitere Informationen

In diesen Tabellen findest du die jeweiligen Einschränkungen für API-Schlüssel sowie die Best Practices für die API-Sicherheit für alle APIs, SDKs und Dienste der Google Maps Platform.

Websites mit Maps JavaScript, Embed oder Static APIs

API/SDK/Dienst App-Einschränkung(1) API-Einschränkung(1) Best Practices
Maps JavaScript API(2) Einschränkung von HTTP-Verweis-URLs Maps JavaScript API
Directions-Dienst, Maps JavaScript API HTTP-Verweis-URL einschränken Directions API, Maps JavaScript API
Distance Matrix-Dienst, 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

Anwendungen und Server, für die Webdienste verwendet werden

API/SDK/Dienst App-Einschränkung(1) API-Einschränkung(1) 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 API(5) Einschränkung von IP-Adressen(4) 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 App-Einschränkung(1) API-Einschränkung(1) 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 App-Einschränkung(1) API-Einschränkung(1) 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 uneingeschränkte API-Schlüssel für alle APIs und SDKs der Google Maps Platform verwenden. Wir empfehlen dir jedoch dringend, deine API-Schlüssel einzuschränken, besonders wenn…

  • die Testumgebung öffentlich sichtbar ist oder sein wird.

  • die entsprechende Anwendung bereit für die Produktion ist.

2 Für Apps solltest du die Verwendung des nativen Maps SDK for Android bzw. Maps SDK for iOS in Betracht ziehen.

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, wenn du vorhast, das Tageskontingent von 25.000 Kartenaufrufen zu überschreiten.

Wenn du deine Anfragen signierst, musst du entscheiden, wie viele nicht signierte Anfragen du pro Tag zulassen möchtest, und deine Kontingente für nicht signierte Anfragen entsprechend anpassen.

4 Einschränkungen von IP-Adressen sind nicht immer praktikabel. Für Apps und Cloud-Umgebungen, für die dynamische IP-Adressen erforderlich sind, bieten sie sich z. B. nicht an. Wenn du in diesen Fällen Maps Web Service APIs verwendest, solltest du deine Apps mit einem Proxyserver oder einer Verschleierung sichern.

5 Für Apps bietet sich auch das native Places SDK for Android bzw. Places SDK for iOS an.