Auf dieser Seite wird beschrieben, wie Sie mit Dienstkonten Anwendungen, die auf VM-Instanzen ausgeführt werden, die Authentifizierung bei Google Cloud APIs ermöglichen und den Zugriff auf Ressourcen autorisieren können.
Damit Sie Dienstkonten für die Authentifizierung verwenden können, müssen Sie zuerst dafür sorgen, dass Ihre VM für die Verwendung eines Dienstkontos konfiguriert ist. Dazu müssen Sie eines der folgenden Verfahren ausführen:
- Informationen zum Einrichten von Dienstkonten während der VM-Erstellung finden Sie unter VM erstellen, die ein nutzerverwaltetes Dienstkonto verwendet.
- Informationen zum Einrichten eines Dienstkontos auf einer vorhandenen VM finden Sie unter Angehängtes Dienstkonto ändern.
Hinweise
- Lesen Sie den Leitfaden zu Dienstkonten.
-
Richten Sie die Authentifizierung ein, falls Sie dies noch nicht getan haben.
Bei der Authentifizierung wird Ihre Identität für den Zugriff auf Google Cloud-Dienste und APIs überprüft.
Zur Ausführung von Code oder Beispielen aus einer lokalen Entwicklungsumgebung können Sie sich bei Compute Engine authentifizieren. Wählen Sie dazu eine der folgenden Optionen aus:
Wenn Sie die Python Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
Weitere Informationen unter Set up authentication for a local development environment.
Übersicht
Nachdem Sie eine VM-Instanz für die Ausführung mit einem Dienstkonto eingerichtet haben, kann eine auf der VM-Instanz ausgeführte Anwendung eine der folgenden Authentifizierungsmethoden verwenden:
- Für die meisten Anwendungen können Sie eine der folgenden Optionen auswählen:
- Für Anwendungen, die ein OAuth2-Zugriffstoken benötigen, müssen Sie Zugriffstokens direkt über den Metadatenserver anfordern und verwenden.
Anwendungen mithilfe der Anmeldedaten des Dienstkontos authentifizieren
Nachdem Sie festgelegt haben, dass eine Instanz als Dienstkonto ausgeführt werden soll, können Sie die Anmeldedaten des Dienstkontos zum Authentifizieren von Anwendungen verwenden, die in dieser Instanz ausgeführt werden.
Anwendungen mit einer Clientbibliothek authentifizieren
Clientbibliotheken können Standardanmeldedaten für Anwendungen zum Authentifizieren bei Google APIs verwenden und Anforderungen an diese APIs senden. Mit Standardanmeldedaten für Anwendungen können Anwendungen Anmeldedaten aus mehreren Quellen erhalten, sodass Sie Ihre Anwendung lokal testen und danach einer Compute Engine-Instanz bereitstellen können, ohne den Anwendungscode ändern zu müssen.
Informationen zum Einrichten von Standardanmeldedaten für Anwendungen finden Sie unter Anmeldedaten für Standardanmeldedaten für Anwendungen bereitstellen.
In diesem Beispiel wird die Python-Clientbibliothek verwendet, um eine Anfrage zum Auflisten der Buckets in einem Projekt zu authentifizieren und an die Cloud Storage API zu senden. In diesem Beispiel wird das folgende Verfahren angewendet:
- Rufen Sie die erforderlichen Anmeldedaten zur Authentifizierung für die Cloud Storage API ab und initialisieren Sie den Cloud Storage-Dienst mit der Methode
build()
und den Anmeldedaten. - Listen Sie Buckets in Cloud Storage auf.
Sie können dieses Beispiel auf einer Instanz ausführen, die die Berechtigung zum Verwalten von Buckets in Cloud Storage hat.
Anwendungen direkt mit Zugriffstoken authentifizieren
Bei den meisten Anwendungen können Sie sich mit den Standardanmeldedaten für Anwendungen authentifizieren. Dabei werden Anmeldedaten gesucht und Tokens für Sie verwaltet. Wenn Sie für Ihre Anwendung jedoch ein OAuth2-Zugriffstoken angeben müssen, können Sie in Compute Engine ein Zugriffstoken von seinem Metadatenserver zur Verwendung in Ihrer Anwendung abrufen.
Es gibt verschiedene Möglichkeiten, wie Sie Zugriffstokens zur Authentifizierung Ihrer Anwendungen erhalten und verwenden können. Zum Beispiel können Sie curl
verwenden, um eine einfache Anfrage zu erstellen, oder für mehr Flexibilität eine Programmiersprache wie Python nutzen.
cURL
So verwenden Sie curl
, um ein Zugriffstoken anzufordern und eine Anfrage an eine API zu senden:
Rufen Sie in der Instanz, in der Ihre Anwendung ausgeführt wird, ein Zugriffstoken vom Metadatenserver ab. Führen Sie dazu folgenden Befehl aus:
$ curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" \ -H "Metadata-Flavor: Google"
Die Anfrage liefert eine Antwort ähnlich wie hier:
{ "access_token":"ya29.AHES6ZRN3-HlhAPya30GnW_bHSb_QtAS08i85nHq39HE3C2LTrCARA", "expires_in":3599, "token_type":"Bearer" }
Bei API-Anfragen müssen Sie den Wert
access_token
und nicht die gesamte Antwort angeben. Wenn Sie den jq-Befehlszeilen-JSON-Prozessor installiert haben, können Sie mit dem folgenden Befehl den Zugriffstokenwert aus der Antwort extrahieren:$ ACCESS_TOKEN=`curl \ "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" \ -H "Metadata-Flavor: Google" | jq -r '.access_token'`
Kopieren Sie den Wert des Attributs
access_token
aus der Antwort und verwenden Sie ihn, um Anfragen an die API zu senden. Die folgende Anfrage gibt beispielsweise eine Liste der Instanzen aus einer bestimmten Zone in Ihrem Projekt zurück:$ curl https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances \ -H "Authorization":"Bearer ACCESS_TOKEN"
Ersetzen Sie Folgendes:
PROJECT_ID
: die Projekt-ID für diese Anfrage.ZONE
: die Zone, aus der VMs aufgelistet werden sollen.ACCESS_TOKEN
: der Zugriffstokenwert, den Sie im vorherigen Schritt erhalten haben.
Weitere Informationen zu den Parametern, die Sie in Ihrer Anfrage festlegen können, finden Sie in der Dokumentation Systemparameter.
Python
Dieses Beispiel zeigt, wie Sie ein Token anfordern, um in einer Python-Anwendung Zugriff auf die Cloud Storage API zu erhalten. In diesem Beispiel wird das folgende Verfahren angewendet:
- Fordern Sie ein Zugriffstoken aus dem Metadatenserver an.
- Extrahieren Sie das Zugriffstoken aus der Antwort des Servers.
- Verwenden Sie das Zugriffstoken, um eine Anfrage an Cloud Storage zu senden.
- Wenn die Anfrage erfolgreich war, druckt das Skript die Antwort.
Zugriffstoken verfallen schon nach kurzer Zeit. Der Metadatenserver behält die Zugriffstoken so lange im Cache, bis sie 5 Minuten Restzeit haben, bevor sie ablaufen. Wenn Tokens nicht im Cache gespeichert werden können, werden Anfragen, die mehr als 50 Abfragen pro Sekunde umfassen, möglicherweise auf eine bestimmte Rate beschränkt. Ihre Anwendungen müssen ein gültiges Zugriffstoken haben, damit ihre API-Aufrufe erfolgreich sind.
Tools in einer Instanz mithilfe eines Dienstkontos authentifizieren
Einige Anwendungen könnten Befehle der gcloud CLI verwenden, die standardmäßig in den meisten Compute Engine-Images enthalten ist. Die gcloud CLI erkennt automatisch das Dienstkonto einer Instanz und entsprechende Berechtigungen, die dem Dienstkonto zugewiesen wurden. Insbesondere dann, wenn Sie dem Dienstkonto die richtigen Rollen zugewiesen haben, können Sie die gcloud CLI Ihrer Instanz verwenden, ohne gcloud auth login
verwenden zu müssen.
Diese Erkennung des Dienstkontos erfolgt automatisch und gilt nur für die gcloud CLI, die in der Instanz enthalten ist. Wenn Sie neue Tools erstellen oder benutzerdefinierte Tools hinzufügen, müssen Sie die Anwendung mithilfe einer Clientbibliothek oder mithilfe von Zugriffstokens direkt in der Anwendung authentifizieren.
Wenn Sie die Vorteile einer automatischen Erkennung des Dienstkontos nutzen möchten, können Sie dem Dienstkonto die entsprechenden IAM-Rollen zuweisen und das Dienstkonto an die Instanz anhängen.
Wenn Sie zum Beispiel einem Dienstkonto die Rolle roles/storage.objectAdmin
zuweisen, kann die gcloud CLI automatisch Cloud Storage-Objekte verwalten und abrufen.
Analog kann das gcloud compute
-Tool Instanzen automatisch verwalten, wenn Sie roles/compute.instanceAdmin.v1
für das Dienstkonto aktivieren.
Nächste Schritte
- Arbeitslasten über mTLS bei anderen Arbeitslasten authentifizieren
- Dienstkonten
- Weitere Informationen zu Compute Engine-IAM-Rollen und -Berechtigungen
- Best Practices für die Arbeit mit Dienstkonten
Überzeugen Sie sich selbst
Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie einfach ein Konto, um die Leistungsfähigkeit von Compute Engine in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
Compute Engine kostenlos testen