Angehängtes Dienstkonto ändern


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 so bei Compute Engine authentifizieren.

    Wählen Sie den Tab für die Verwendung der Beispiele auf dieser Seite aus:

    Console

    Wenn Sie über die Google Cloud Console auf Google Cloud-Dienste und -APIs zugreifen, müssen Sie die Authentifizierung nicht einrichten.

    gcloud

    1. Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:

      gcloud init
    2. Legen Sie eine Standardregion und -zone fest.

    REST

    Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.

      Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:

      gcloud init

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

  • compute.instances.setServiceAccount
  • compute.instances.stop
  • compute.instances.start

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Überblick

Es wird empfohlen, Dienstkonten für Ihre VMs so zu konfigurieren:

  1. 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.
  2. Hängen Sie das Dienstkonto an Ihre VM an.
  3. 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.

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 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 Rolle roles/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.

  • Es wird empfohlen, die einfache Rolle „Bearbeiter“ für das Standarddienstkonto zu entfernen. Das Standarddienstkonto wird den Projekten standardmäßig als Projektbearbeiter hinzugefügt. Wenn Sie IAM-Rollen verwenden möchten, müssen Sie die einfache Rolle „Bearbeiter“ widerrufen.

Wenn Sie sich nicht sicher sind, ob Sie dem Standarddienstkonto IAM-Rollen zuweisen können, erstellen Sie stattdessen ein neues nutzerverwaltetes Dienstkonto.

Befolgen Sie diese Anleitungen, um dem Standarddienstkonto eine IAM-Rolle zuzuweisen:

  1. Öffnen Sie in der Google Cloud Console die Seite IAM.

    Seite „IAM“

  2. Wenn Sie dazu aufgefordert werden, wählen Sie ein Projekt.

  3. Suchen Sie nach dem Dienstkonto mit dem Namen Compute Engine-Standarddienstkonto.

  4. Maximieren Sie in der Spalte Rolle(n) das Drop-down-Menü für das Compute Engine-Standarddienstkonto.

  5. Entfernen Sie die Zugriffsrechte des Bearbeiters und speichern Sie Ihre Änderungen.

  6. Weisen Sie dann dem Dienstkonto IAM-Rollen zu.

Alle VM-Instanzen, die derzeit als Standarddienstkonto ausgeführt werden, haben nun entsprechend den IAM-Rollen, die Sie dem Konto zugewiesen haben, Zugriff auf andere Google Cloud APIs.

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

  1. Rufen Sie die Seite VM-Instanzen auf.

    Zu „VM-Instanzen“

  2. Klicken Sie auf den Namen der VM-Instanz, für die Sie das Dienstkonto ändern möchten.

  3. Wenn die VM nicht beendet ist, klicken Sie auf Beenden. Warten Sie, bis die VM vollständig beendet wurde.

  4. Klicken Sie auf Bearbeiten.

  5. Scrollen Sie nach unten bis zum Abschnitt Dienstkonto.

  6. 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.
  7. Klicken Sie auf Speichern, um die Änderungen zu speichern.

  8. Klicken Sie auf Starten/Fortsetzen, um die VM neu zu starten.

gcloud

  1. Beenden Sie die VM mit dem Befehl instances stop. Ersetzen Sie dabei VM_NAME durch den Namen Ihrer VM-Instanz:

    gcloud compute instances stop VM_NAME
    
  2. 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
    
  3. Starten Sie die VM mit dem Befehl instances start. Ersetzen Sie dabei VM_NAME durch den Namen Ihrer VM-Instanz:

    gcloud compute instances start VM_NAME
    

REST

  1. Beenden Sie die VM, indem Sie eine POST-Anfrage mit der Methode instances.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 befindet
    • ZONE: Zone, in der sich Ihre VM befindet
    • VM_NAME: Name der VM, die Sie beenden möchten
  2. Hängen Sie das Dienstkonto an, indem Sie eine POST-Anfrage an die Methode setServiceAccount 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"
      ]
    }
    
  3. Starten Sie die VM, indem Sie eine POST-Anfrage mit der Methode instances.start erstellen.

    POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/start
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: Projekt, in dem sich Ihre VM befindet
    • ZONE: Zone, in der sich Ihre VM befindet
    • VM_NAME: Name der VM, die Sie starten möchten

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

  1. Rufen Sie die Seite VM-Instanzen auf.

    Zu „VM-Instanzen“

  2. Klicken Sie auf den Namen der VM-Instanz, für die Sie das Dienstkonto ändern möchten.

  3. Wechseln Sie zum Abschnitt API und Identitätsverwaltung. In diesem Abschnitt werden das Dienstkonto und der Zugriffsbereich angezeigt, der von der VM verwendet wird.

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

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

Nächste Schritte