API-Schlüssel identifizieren Ihre Anwendung oder Website gegenüber Google Cloud. API-Schlüsseleinschränkungen sorgen dafür, dass nur Ihre Apps und Websites Ihre Schlüssel verwenden können. Aus Sicherheitsgründen empfehlen wir, Einschränkungen hinzuzufügen, die Folgendes angeben:
- Welche Clients oder Websites Ihre API-Schlüssel verwenden dürfen.
- Die Google Cloud APIs, die Ihre Anwendung mit Ihren API-Schlüsseln aufrufen kann.
Wenn ein Client einen eingeschränkten API-Schlüssel verwendet, um eine Anfrage zu senden, die die API-Schlüsseleinschränkungen nicht erfüllt, schlägt die Anfrage fehl. Wenn für einen API-Schlüssel beispielsweise HTTP-Anfragen von einer bestimmten Domain erforderlich sind, eine HTTP-Anfrage jedoch von einer anderen Domain empfangen wird, wird die Anfrage mit einem Fehler abgelehnt.
Sie können Einschränkungen hinzufügen, wenn Sie einen API-Schlüssel mit der Methode CreateKey erstellen. Alternativ können Sie die Einschränkungen auch nach dem Erstellen des Schlüssels mit der Methode UpdateKey hinzufügen. Auf dieser Seite werden die Einschränkungen beschrieben, die Sie einem API-Schlüssel hinzufügen können, und es wird gezeigt, wie Sie diese Einschränkungen hinzufügen.
Hinweise
Auf der Seite werden curl und die Google Cloud CLI verwendet, um Anfragen an die API Keys API zu senden. Weitere Informationen zur Einrichtung für Tests mit der API finden Sie unter Erste Schritte mit der API Keys API.
Clienteinschränkungen hinzufügen
Client-Einschränkungen geben an, welche Websites, IP-Adressen oder Apps einen API-Schlüssel verwenden dürfen. Sie fügen Clienteinschränkungen basierend auf dem Typ des Clients hinzu, der Ihre API aufruft. Sie können einen der folgenden Client-Einschränkungstypen angeben:
browserKeyRestrictions: Die HTTP-Referrer-URLs (Websites), die den Schlüssel verwenden dürfen.serverKeyRestrictions: Die IP-Adressen von Aufrufern, die den Schlüssel verwenden dürfen.androidKeyRestrictions: Die Android-Apps, die den Schlüssel verwenden dürfen.iosKeyRestrictions: Die iOS-Apps, die den Schlüssel verwenden dürfen.
Browsereinschränkungen hinzufügen
Das folgende Beispiel zeigt, wie die Methode UpdateKey aufgerufen wird, um den HTTP-Referrer auf www.example.com zu beschränken:
gcurl https://apikeys.googleapis.com/v2/projects/PROJECT_NUMBER/locations/global/keys/KEY_ID?updateMask=restrictions \
--request PATCH \
--data '{
"restrictions" : {
"browserKeyRestrictions": {
"allowedReferrers": "www.example.com"
}
},
"etag": "ETAG"
}'
Wenn die Antwort von operations.get "done": true enthält, enthält response die aktualisierte Key mit den Einschränkungen.
Im folgenden Beispiel wird gezeigt, wie Sie einen neuen API-Schlüssel erstellen, der nur HTTP-Anfragen von einer Liste bestimmter URLs zulässt.
gcurl https://apikeys.googleapis.com/v2/projects/PROJECT_NUMBER/locations/global/keys \
--request POST \
--data '{
"displayName" : "API key with browser restrictions",
"restrictions" : {
"browserKeyRestrictions": {
"allowedReferrers": ["www.example.com", "www.example-2.com"]
}
}
}'
Die folgende Tabelle enthält einige Beispielszenarien und Browsereinschränkungen:
| Szenario | Einschränkungen |
|---|---|
| Eine beliebige URL auf Ihrer Website zulassen | Sie müssen zwei URLs in der Liste allowedReferers festlegen.
|
| Bestimmte URL zulassen | Fügen Sie eine URL mit einem genauen Pfad hinzu. Beispiel:www.example.com/pathwww.example.com/path/path
|
| Eine beliebige URL in einer einzelnen Subdomain oder einer Grunddomain zulassen | Sie müssen zwei URLs in der Liste „allowedReferers“ festlegen, um eine gesamte Domain zuzulassen.
|
Servereinschränkungen hinzufügen
Sie können eine oder mehrere IP-Adressen der Aufrufer angeben, z. B. Webserver oder Cronjobs, die Ihren API-Schlüssel verwenden dürfen. Sie können die IP-Adressen in einem der folgenden Formate angeben:
- IPv4 (
198.51.100.1) - IPv6 (
2001:db8::1) - Ein Subnetz mit CIDR-Notation (
198.51.100.0/24,2001:db8::/64)
Im folgenden Beispiel wird gezeigt, wie Sie einen API-Schlüssel mit einer Liste von allowedIps erstellen:
gcurl https://apikeys.googleapis.com/v2/projects/PROJECT_NUMBER/locations/global/keys \
--request POST \
--data '{
"displayName" : "API key with server restrictions with IPv4, IPv6 and CIDR",
"restrictions" : {
"serverKeyRestrictions": {
"allowedIps": ["198.51.100.1","198.51.100.0/24","2001:db8::1","2001:db8::/64"]
}
}
}'
Android-Einschränkungen hinzufügen
Sie können die Verwendung eines API-Schlüssels auf Ihre Android-Apps beschränken. Wenn Sie einen API-Schlüssel erstellen oder aktualisieren, geben Sie für jede App den Paketnamen und den 20 Byte langen SHA1-Fingerabdruck an.
Angenommen, Sie haben das keytool-Dienstprogramm ausgeführt und es hat den folgenden Fingerabdruck erstellt:
Certificate fingerprint: SHA1: DA:39:A3:EE:5E:6B:4B:0D:32:55:BF:EF:95:60:18:90:AF:D8:07:09
Das folgende Beispiel zeigt, wie Sie einen API-Schlüssel mit dem Fingerabdruck und dem Paketnamen für androidKeyRestrictions erstellen:
gcurl https://apikeys.googleapis.com/v2/projects/PROJECT_NUMBER/locations/global/keys \
--request POST \
--data '{
"displayName" : "API key with Android restrictions",
"restrictions" : {
"androidKeyRestrictions": {
"allowedApplications": [
{
"sha1Fingerprint": "DA:39:A3:EE:5E:6B:4B:0D:32:55:BF:EF:95:60:18:90:AF:D8:07:09",
"packageName": "com.example.my.app"
}
]
}
}
}'
iOS-Einschränkungen hinzufügen
Sie können die Nutzung eines API-Schlüssels auf Ihre iOS-Apps beschränken, indem Sie die Bundle-ID der einzelnen Apps angeben, wenn Sie einen Schlüssel erstellen oder aktualisieren. Im folgenden Beispiel wird gezeigt, wie Sie iosKeyRestrictions beim Erstellen eines API-Schlüssels festlegen:
gcurl https://apikeys.googleapis.com/v2/projects/PROJECT_NUMBER/locations/global/keys \
--request POST \
--data '{
"displayName" : "API key with iOS restrictions",
"restrictions" : {
"iosKeyRestrictions": {
"allowedBundleIds": ["com.example.my.app1", "com.example.my.app2"]
}
}
}'
API-Einschränkungen hinzufügen
Mit API-Einschränkungen können Sie angeben, welche Google Cloud APIs mit dem API-Schlüssel aufgerufen werden können. Wir empfehlen, allen API-Schlüsseln sowohl Client- als auch API-Einschränkungen hinzuzufügen.
Sie können in den API-Einschränkungen einen oder mehrere Dienste angeben. Im folgenden Beispiel wird gezeigt, wie Sie die Verwendung eines neuen API-Schlüssels auf die Dienste translate.googleapis.com und datastore.googleapis.com beschränken:
gcurl https://apikeys.googleapis.com/v2/projects/PROJECT_NUMBER/locations/global/keys \
--request POST \
--data '{
"restrictions": {
"api_targets": [
{
"service": "translate.googleapis.com"
},
{
"service" : "datastore.googleapis.com"
}
]
},
}'
Mit dem Befehl gcloud services list können Sie eine Liste der Dienste abrufen, die in IhremGoogle Cloud -Projekt aktiviert sind.
Zusätzlich zur Beschränkung der Verwendung des API-Schlüssels auf bestimmte Dienste können Sie optional die Methoden in jedem Dienst angeben, um den API-Schlüssel weiter einzuschränken. Das folgende Beispiel zeigt, wie der vorherige Schlüssel auf die zulässigen Methoden von translate.googleapis.com beschränkt wird:
gcurl https://apikeys.googleapis.com/v2/projects/PROJECT_NUMBER/locations/global/keys/KEY_ID?updateMask=restrictions \
--request PATCH \
--data '{
"restrictions": {
"api_targets": [
{
"service": "translate.googleapis.com"
"methods": [
"Get*",
"DetectLanguage"
]
},
{
"service" : "datastore.googleapis.com"
}
]
},
"etag": "ETAG"
}'