In diesem Dokument wird erläutert, wie Sie eine vorhandene virtuelle Maschine (VM) für die Verwendung eines anderen Dienstkontos konfigurieren. Ein Dienstkonto ist eine spezielle Art von Konto, das in der Regel von einer Anwendung oder einer Computing-Arbeitslast für autorisierte API-Aufrufe verwendet wird.
Dienstkonten sind für Szenarien erforderlich, in denen eine Arbeitslast, z. B. eine benutzerdefinierte Anwendung, auf Google Cloud-Ressourcen zugreifen oder Aktionen ohne Beteiligung der Endnutzer ausführen muss. Weitere Informationen zur Verwendung von Dienstkonten finden Sie unter Best Practices für die Verwendung von Dienstkonten.
Wenn Sie über Anwendungen verfügen, die Aufrufe an Google Cloud APIs senden müssen, empfiehlt Google, dass Sie ein nutzerverwaltetes Dienstkonto an die VM anhängen, auf der die Anwendung oder die Arbeitslast ausgeführt wird. Anschließend gewähren Sie dem Dienstkonto IAM-Rollen, die dem Dienstkonto – und damit Anwendungen, die auf der VM ausgeführt werden, – Zugriff auf Google Cloud-Ressourcen gewähren.
Hinweise
-
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:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
-
compute.instances.setServiceAccount
-
compute.instances.stop
-
compute.instances.start
- Erstellen Sie ein neues nutzerverwaltetes Dienstkonto, anstatt das Compute Engine-Standarddienstkonto zu verwenden, und weisen Sie diesem Dienstkonto nur IAM-Rollen für die Ressourcen und Vorgänge zu, die es benötigt.
- Hängen Sie das Dienstkonto an Ihre VM an.
- Legen Sie den Bereich der Cloud Platform (
https://www.googleapis.com/auth/cloud-platform
) für Ihre VM fest. Dadurch kann das Dienstkonto der VM die Google Cloud APIs aufrufen, für die es berechtigt ist.- Wenn Sie das Dienstkonto mithilfe der Google Cloud Console angeben, entspricht der Zugriffsbereich der VM automatisch dem Bereich
cloud-platform
. - Wenn Sie das Dienstkonto über die Google Cloud CLI oder die Compute Engine API angeben, können Sie den Parameter
scopes
zum Festlegen des Zugriffsbereichs verwenden.
- Wenn Sie das Dienstkonto mithilfe der Google Cloud Console angeben, entspricht der Zugriffsbereich der VM automatisch dem Bereich
Wenn Sie dem Standarddienstkonto eine IAM-Rolle zuweisen, dann betrifft dies alle VMs, die als Standarddienstkonto ausgeführt werden. Wenn Sie dem Standarddienstkonto zum Beispiel die Rolle
roles/storage.objectAdmin
zuweisen, erhalten alle VMs, die als Standarddienstkonto mit den erforderlichen Zugriffsbereichen ausgeführt werden, die durch die Rolleroles/storage.objectAdmin
gewährten Berechtigungen. Auch wenn Sie den Zugriff durch das Weglassen von bestimmten Rollen einschränken, wirkt sich das auf alle VMs aus, die als Standarddienstkonto ausgeführt werden.Abhängig von der Konfiguration Ihrer Organisationsrichtlinie kann dem Standarddienstkonto für Ihr Projekt automatisch die Rolle "Bearbeiter" zugewiesen werden. Wir empfehlen dringend, die automatische Rollenzuweisung zu deaktivieren, indem Sie die Einschränkung der Organisationsrichtlinien
iam.automaticIamGrantsForDefaultServiceAccounts
erzwingen. Wenn Sie Ihre Organisation nach dem 3. Mai 2024 erstellt haben, wird diese Einschränkung standardmäßig erzwungen.Wenn Sie die automatische Rollenzuweisung deaktivieren, müssen Sie entscheiden, welche Rollen den Standarddienstkonten zugeteilt werden sollen, und diese Rollen dann selbst zuweisen.
Wenn das Standarddienstkonto bereits die Rolle „Bearbeiter“ hat, sollten Sie die Rolle „Bearbeiter“ durch weniger strikte Rollen ersetzen.Verwenden Sie zum sicheren Ändern der Rollen des Dienstkontos den Policy Simulator, um die Auswirkungen der Änderung zu sehen, und weisen Sie die entsprechenden Rollen zu und widerrufen Sie sie.
Rufen Sie die Seite VM-Instanzen auf.
Klicken Sie auf den Namen der VM-Instanz, für die Sie das Dienstkonto ändern möchten.
Wenn die VM nicht beendet ist, klicken Sie auf Beenden. Warten Sie, bis die VM vollständig beendet wurde.
Klicken Sie auf Bearbeiten.
Scrollen Sie nach unten bis zum Abschnitt Dienstkonto.
Wählen Sie aus der Drop-down-Liste das Dienstkonto aus, das der VM zugewiesen werden soll.
- Wenn Sie ein nutzerverwaltetes Dienstkonto auswählen, entspricht der Zugriffsbereich der VM standardmäßig dem empfohlenen Bereich
cloud-platform
. Wenn Sie einen anderen Bereich für Ihr nutzerverwaltetes Dienstkonto benötigen, verwenden Sie die gcloud CLI oder die Compute Engine API, um das Dienstkonto anzuhängen. - Wenn Sie das Compute Engine-Standarddienstkonto wählen, können Sie die Zugriffsbereiche in der Google Cloud Console ändern.
- Wählen Sie zum Ändern von Bereichen im Abschnitt Zugriffsbereiche die Option Zugriff der einzelnen APIs festlegen und legen Sie die entsprechenden Bereiche je nach Ihren Anforderungen fest.
- Empfohlen: Wenn Sie nicht sicher sind, welche Zugriffsbereiche benötigt werden, wählen Sie Uneingeschränkten Zugriff auf alle Cloud APIs zulassen und schränken Sie den Zugriff dann durch IAM-Rollen für das Dienstkonto ein.
- Wenn Sie ein nutzerverwaltetes Dienstkonto auswählen, entspricht der Zugriffsbereich der VM standardmäßig dem empfohlenen Bereich
Klicken Sie auf Speichern, um die Änderungen zu speichern.
Klicken Sie auf Starten/Fortsetzen, um die VM neu zu starten.
Beenden Sie die VM mit dem Befehl
instances stop
. Ersetzen Sie dabeiVM_NAME
durch den Namen Ihrer VM-Instanz:gcloud compute instances stop VM_NAME
Hängen Sie das Dienstkonto an. Verwenden Sie zum Anhängen des Dienstkontos den Befehl
instances set-service-account
und geben Sie den VM-Namen, die E-Mail-Adresse des Dienstkontos und die gewünschten Bereiche an. Weitere Informationen zum Festlegen von Zugriffsbereichen finden Sie unter Best Practices.gcloud compute instances set-service-account VM_NAME \ --service-account=SERVICE_ACCOUNT_EMAIL \ --scopes=SCOPES
Ersetzen Sie Folgendes:
SERVICE_ACCOUNT_EMAIL
: die E-Mail-Adresse des von Ihnen erstellten Dienstkontos. Beispiel:my-sa-123@my-project-123.iam.gserviceaccount.com
Informationen zum Aufrufen der E-Mail-Adresse finden Sie unter Dienstkonten auflisten.Wenn Sie das Dienstkonto von der VM entfernen möchten, verwenden Sie das Flag
--no-service-account
.VM_NAME
: der Name der VM-Instanz.SCOPES
: eine durch Kommas getrennte Liste von Bereichs-URIs oder Aliassen, die in der Beschreibung für das Flag--scopes
angegeben werden.Wenn Sie alle Bereiche für die VM entfernen möchten, verwenden Sie stattdessen das Flag
--no-scopes
.
Der folgende Befehl weist zum Beispiel einer VM namens „example-instance“ das Dienstkonto
my-sa-123@my-project-123.iam.gserviceaccount.com
zu und legt Zugriffsbereiche in der VM fest, um Schreib- und Lesezugriff auf Compute Engine und Lesezugriff auf Cloud Storage zuzulassen:gcloud compute instances set-service-account example-instance \ --service-account=my-sa-123@my-project-123.iam.gserviceaccount.com \ --scopes=compute-rw,storage-ro
Starten Sie die VM mit dem Befehl
instances start
. Ersetzen Sie dabeiVM_NAME
durch den Namen Ihrer VM-Instanz:gcloud compute instances start VM_NAME
Beenden Sie die VM, indem Sie eine
POST
-Anfrage mit der Methodeinstances.stop
stellen:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/stop
Ersetzen Sie Folgendes:
PROJECT_ID
: Projekt, in dem sich Ihre VM befindetZONE
: Zone, in der sich Ihre VM befindetVM_NAME
: Name der VM, die Sie beenden möchten
Hängen Sie das Dienstkonto an, indem Sie eine
POST
-Anfrage an die MethodesetServiceAccount
stellen:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setServiceAccount { "email": "SERVICE_ACCOUNT_EMAIL", "scopes": [ "SCOPE_URI", "SCOPE_URI", ... ] }
Ersetzen Sie Folgendes:
PROJECT_ID
: die Projekt-ID für diese Anfrage.ZONE
: die Zone, zu der die VM gehört.VM_NAME
: der Name der VM.SERVICE_ACCOUNT_EMAIL
: die E-Mail-Adresse des von Ihnen erstellten Dienstkontos. Beispiel:my-sa-123@my-project-123.iam.gserviceaccount.com
Informationen zum Aufrufen der E-Mail-Adresse finden Sie unter Dienstkonten auflisten.SCOPE_URI
: der erforderliche Bereichs-URI.
Die folgende Anfrage verwendet zum Beispiel die E-Mail-Adresse
my-sa-123@my-project-123.iam.gserviceaccount.com
für das Dienstkonto und legt als Bereiche Cloud Storage und BigQuery fest:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setServiceAccount { "email": "my-sa-123@my-project-123.iam.gserviceaccount.com", "scopes": [ "https://www.googleapis.com/auth/bigquery", "https://www.googleapis.com/auth/devstorage.read_only" ] }
Starten Sie die VM, indem Sie eine
POST
-Anfrage mit der Methodeinstances.start
erstellen.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/start
Ersetzen Sie Folgendes:
PROJECT_ID
: Projekt, in dem sich Ihre VM befindetZONE
: Zone, in der sich Ihre VM befindetVM_NAME
: Name der VM, die Sie starten möchten
Rufen Sie die Seite VM-Instanzen auf.
Klicken Sie auf den Namen der VM-Instanz, für die Sie das Dienstkonto ändern möchten.
Wechseln Sie zum Abschnitt API und Identitätsverwaltung. In diesem Abschnitt werden das Dienstkonto und der Zugriffsbereich angezeigt, der von der VM verwendet wird.
- Beschränken Sie die Berechtigungen von Dienstkonten und prüfen Sie regelmäßig, ob Ihre Dienstkontoberechtigungen aktuell sind.
- Beim Löschen von Dienstkonten ist Vorsicht geboten. Achten Sie darauf, dass das Dienstkonto, das Sie löschen möchten, nicht mehr von Ihren kritischen Anwendungen verwendet wird. Wenn Sie unsicher sind, ob ein Dienstkonto verwendet wird, empfehlen wir Ihnen, das Dienstkonto zu deaktivieren, anstatt es zu löschen. Deaktivierte Dienstkonten lassen sich wieder aktivieren, wenn sie noch benötigt werden.
- Reduzieren Sie die Sicherheitsrisiken für Ihr Dienstkonto. Weitere Informationen finden Sie unter Best Practices für die Arbeit mit Dienstkonten.
REST
Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Weitere Informationen finden Sie unter Für die Verwendung von REST authentifizieren in der Dokumentation zur Google Cloud-Authentifizierung.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Compute-Instanzadministrator (v1) (
roles/compute.instanceAdmin.v1
) auf der VM oder Ihrem Projekt zu gewähren, um die Berechtigungen zum Konfigurieren von Dienstkonten auf Ihrer VM zu erhalten. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.Diese vordefinierte Rolle enthält die Berechtigungen, die zum Konfigurieren von Dienstkonten auf Ihrer VM erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind für die Konfiguration von Dienstkonten auf Ihrer VM erforderlich:
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Übersicht
Es wird empfohlen, Dienstkonten für Ihre VMs so zu konfigurieren:
Dienstkonto einrichten
Sie können entweder ein nutzerverwaltetes Dienstkonto erstellen oder das Compute Engine-Standarddienstkonto verwenden. Ein nutzerverwaltetes Dienstkonto wird empfohlen.
Achten Sie darauf, dass für das ausgewählte Dienstkonto die erforderlichen IAM-Rollen (Identity and Access Management) zugewiesen sind.
Vom Nutzer verwaltet
Wenn Sie noch kein nutzerverwaltetes Dienstkonto haben, erstellen Sie zuerst ein Dienstkonto. Eine ausführliche Anleitung finden Sie unter Dienstkonto einrichten.
Standard
Wenn Sie mit dem Compute Engine-Standarddienstkonto vertraut sind und die Anmeldeinformationen vom Standarddienstkonto nutzen möchten, anstatt neue Dienstkonten zu erstellen, dann können Sie dem Standarddienstkonto IAM-Rollen zuweisen.
Bevor Sie dem Standarddienstkonto IAM-Rollen zuweisen, beachten Sie Folgendes:
Wenn Sie sich nicht sicher sind, ob Sie dem Standarddienstkonto IAM-Rollen zuweisen können, erstellen Sie stattdessen ein neues nutzerverwaltetes Dienstkonto.
Dienstkonto anhängen und Zugriffsbereich aktualisieren
Um das Dienstkonto und die Zugriffsbereiche einer VM zu ändern, muss die VM vorübergehend gestoppt werden.
Befindet sich das Dienstkonto in einem anderen Projekt als die VM, müssen Sie das Dienstkonto für eine Ressource in einem anderen Projekt konfigurieren.
Verwenden Sie eine der folgenden Methoden, um das Dienstkonto und die Zugriffsbereiche auf Ihrer VM zu ändern.
Console
gcloud
REST
Von einer VM verwendetes Dienstkonto ansehen
Informationen zum Ansehen aller Dienstkonten in einem Projekt finden Sie unter Dienstkonten auflisten.
Wenn Sie das Dienstkonto ermitteln müssen, das von einer VM verwendet wird, führen Sie eines der folgenden Verfahren aus:
Console
gcloud
Führen Sie den Befehl
gcloud compute instances describe
aus:gcloud compute instances describe VM_NAME \ --format json
Die Ausgabe sieht in etwa so aus:
{ ... "serviceAccounts":[ { "email":"123845678986-compute@developer.gserviceaccount.com", "scopes":[ "https://www.googleapis.com/auth/devstorage.full_control" ] } ] ... }
Wenn die VM kein Dienstkonto verwendet, erhalten Sie eine Antwort ohne das Attribut
serviceAccounts
.Metadatenserver
Fragen Sie den Metadatenserver aus der VM selbst heraus ab. Stellen Sie eine Anfrage an
http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/
:user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/" \ -H "Metadata-Flavor: Google"
Wenn Sie beim Erstellen der Instanz ein oder mehrere Dienstkonten aktiviert haben, gibt der Befehl
curl
eine Ausgabe wie diese hier zurück:123845678986-compute@developer.gserviceaccount.com/ default/
Wenn die Instanz kein Dienstkonto verwendet, erhalten Sie eine leere Antwort.
Best Practices
Nächste Schritte
Sofern nicht anders angegeben, sind die Inhalte dieser Seite unter der Creative Commons Attribution 4.0 License und Codebeispiele unter der Apache 2.0 License lizenziert. Weitere Informationen finden Sie in den Websiterichtlinien von Google Developers. Java ist eine eingetragene Marke von Oracle und/oder seinen Partnern.
Zuletzt aktualisiert: 2024-12-22 (UTC).
-