Zugriff auf Compute Engine-Ressourcen verwalten

In diesem Leitfaden wird gezeigt, wie Sie den Grundsatz der geringsten Berechtigung anwenden. Damit gewähren Sie bestimmten Compute Engine-Ressourcen Zugriff statt einer übergeordneten Ressource wie einem Projekt, einem Ordner oder einer Organisation.

Sie gewähren Zugriff auf eine Ressource, indem Sie eine IAM-Richtlinie (Identity and Access Management) für die Ressource festlegen. Die Richtlinie bindet ein oder mehrere Mitglieder, z. B. einen Nutzer oder ein Dienstkonto, an eine oder mehrere Rollen. Jede Rolle enthält eine Reihe von Berechtigungen, mit denen das Mitglied mit der Ressource interagieren kann.

Wenn Sie Zugriff auf eine übergeordnete Ressource gewähren (z. B. auf ein Projekt), erteilen Sie implizit auch Zugriff auf alle ihr untergeordneten Ressourcen, etwa auf alle VMs in diesem Projekt. Sie können den Zugriff auf Ressourcen auch beschränken. Legen Sie dazu die IAM-Richtlinien nach Möglichkeit auf untergeordneten Ebenen fest, anstatt auf Projektebene oder darüber.

Allgemeine Informationen zum Gewähren, Ändern und Aufheben des Zugriffs auf Ressourcen, die nichts mit Compute Engine zu tun haben, z. B. auf ein Google Cloud-Projekt, finden Sie in der IAM-Dokumentation unter Zugriff auf Ressourcen erteilen, ändern und entziehen.

Vorbereitung

Unterstützte Ressourcen

Compute Engine unterstützt die Zugriffssteuerung auf Ressourcenebene für die folgenden Ressourcen:

Andere Compute Engine-Ressourcen unterstützen keine Zugriffssteuerung auf Ressourcenebene. Daher müssen Sie den Zugriff auf andere Ressourcentypen auf Projekt-, Ordner- oder Organisationsebene verwalten. Informationen zu Organisationen, Ordnern oder Projekten finden Sie unter Ressourcenhierarchie.

Zugriff auf Compute Engine-Ressourcen gewähren

Bevor Sie einem Nutzer eine IAM-Rolle für eine Ressource zuweisen, sollten Sie prüfen, welche Rollen für eine bestimmte Ressource verfügbar sind. Weitere Informationen finden Sie unter Zuweisbare Rollen für Ressourcen aufrufen.

Wenn Sie Nutzern Zugriff auf bestimmte Compute Engine-Ressourcen gewähren möchten, legen Sie eine IAM-Richtlinie für die Ressource fest.

Console

  1. Rufen Sie in der Google Cloud Console die Seite der entsprechenden Ressource auf, für die Sie Berechtigungen hinzufügen möchten.
  2. Klicken Sie die Kästchen neben den Ressourcen an, die Sie aktualisieren möchten.
  3. Klicken Sie auf Infofeld anzeigen, um die Spalte mit den Berechtigungen zu maximieren.
  4. Geben Sie im Feld Mitglieder hinzufügen ein oder mehrere Mitglieder ein.
  5. Wählen Sie in der Liste Rolle auswählen eine oder mehrere Rollen aus.
  6. Klicken Sie auf Hinzufügen, um Ihre Änderungen zu speichern.

gcloud

Verwenden Sie den Unterbefehl add-iam-policy-binding der Ressource mit den Flags --member und --role, um einem Mitglied für eine Ressource eine Rolle zuzuweisen.

gcloud compute resource-type add-iam-policy-binding resource-name \
    --member='member' \
    --role='role'

Ersetzen Sie Folgendes:

  • resource-type: Der Ressourcentyp. Gültige Werte sind:
    • disks
    • images
    • instances
    • instance-templates
    • regionDisks
    • sole-tenancy node-groups
    • sole-tenancy node-templates
    • snapshots
  • resource-name: Name der Ressource. Beispiel: my_instance
  • member: Eine gültige Identität, der Sie die Rolle zuweisen möchten. Muss das Format user|group|serviceAccount:email oder domain:domain haben. Beispiel:
    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  • role: Die Rolle zum Zuweisen dieser Identität.

Wenn Sie Zugriff auf eine Ressource gewähren, die sich derzeit in der Betaphase befindet, verwenden Sie stattdessen den Befehl gcloud beta compute.

API

So ändern Sie eine IAM-Richtlinie über die API:

  1. Lesen Sie die vorhandene Richtlinie mit der entsprechenden getIamPolicy-Methode der Ressource. Mit der folgenden HTTP-Anfrage wird beispielsweise die IAM-Richtlinie einer VM gelesen:

    POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance:getIamPolicy

    Ersetzen Sie Folgendes:

    • project-id: Die Projekt-ID, zu der diese VM gehört.
    • zone: Die Zone der VM. Ersetzen Sie für regionale oder globale Ressourcen zones/zone durch regions/region oder global.
    • instance: Der Name der VM-Instanz.

    Compute Engine gibt in der Antwort die aktuelle Richtlinie zurück.

  2. Bearbeiten Sie die Richtlinie mit einem Texteditor, um Mitglieder und die zugehörigen Rollen hinzuzufügen oder zu entfernen. Beispiel: Fügen Sie der Richtlinie die folgende neue Bindung hinzu, um email@example.com die Rolle compute.admin zu gewähren.

    {
      "members": [
        "user:email@example.com"
      ],
      "role":"roles/compute.admin"
    }
    
  3. Schreiben Sie mit setIamPolicy() die aktualisierte Richtlinie:

    POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance:setIamPolicy

    Ersetzen Sie Folgendes:

    • project-id: Die Projekt-ID, zu der diese VM gehört.
    • zone: Die Zone der VM. Ersetzen Sie für regionale oder globale Ressourcen zones/zone durch regions/region oder global.
    • instance: Der Name der VM-Instanz.

    Geben Sie im Anfragetext die aktualisierte IAM-Richtlinie aus dem vorherigen Schritt an.

Zugriff auf Ressourcen widerrufen

Wenn Mitglieder keinen Zugriff mehr auf Ihre Compute Engine-Ressourcen benötigen, sollten Sie als Best Practice deren Zugriff widerrufen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite der entsprechenden Ressource auf, für die Sie Berechtigungen hinzufügen möchten.
  2. Klicken Sie die Kästchen neben den Ressourcen an, die Sie aktualisieren möchten.
  3. Klicken Sie auf Infofeld anzeigen, um die Spalte mit den Berechtigungen zu maximieren.
  4. Klicken Sie auf die Karte der Rolle für die Ressource, von der Sie Mitglieder entfernen möchten. Dadurch wird die Karte erweitert und die Mitglieder mit dieser Rolle für diese Ressource werden angezeigt.
  5. Klicken Sie auf Löschen, um ein Mitglied aus dieser Rolle zu entfernen.

gcloud

Verwenden Sie zum Entfernen einer Rolle von einem Mitglied für eine Ressource den Unterbefehl remove-iam-policy-binding der Ressource mit den Flags --member und --role.

gcloud compute resource-type remove-iam-policy-binding resource-name \
    --member='member' \
    --role='role'

Ersetzen Sie Folgendes:

  • resource-type: Die Art der Ressource. Gültige Werte sind:
    • disks
    • images
    • instances
    • instance-templates
    • regionDisks
    • sole-tenancy node-groups
    • sole-tenancy node-templates
    • snapshots
  • resource-name: Der Name der Ressource. Beispiel: my_instance
  • member: Die Identität, die Sie entfernen möchten. Muss das Format user|group|serviceAccount:email oder domain:domain haben. Beispiel:
    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  • role: Die Rolle, aus der Sie die Identität entfernen möchten.

Wenn Sie Zugriff auf eine Ressource widerrufen, die sich derzeit in der Betaphase befindet, verwenden Sie stattdessen den Befehl gcloud beta compute.

API

So ändern Sie eine IAM-Richtlinie direkt über die API:

  1. Lesen Sie die vorhandene Richtlinie mit der entsprechenden getIamPolicy-Methode der Ressource. Mit der folgenden HTTP-Anfrage wird beispielsweise die IAM-Richtlinie einer VM gelesen:

    POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance:getIamPolicy

    Ersetzen Sie Folgendes:

    • project-id: Die Projekt-ID für diese VM-Instanz.
    • zone: Die Zone der VM. Ersetzen Sie für regionale oder globale Ressourcen zones/zone durch regions/region oder global.
    • instance: Der Name der VM-Instanz.

    Compute Engine gibt in der Antwort die aktuelle Richtlinie zurück.

  2. Bearbeiten Sie die Richtlinie mit einem Texteditor, um Mitglieder aus den zugehörigen Rollen zu entfernen. Entfernen Sie beispielsweise email@example.com aus der Rolle compute.admin:

    {
      "members": [
        "user:owner@example.com"
      ],
      "role":"roles/compute.admin"
    }
    
  3. Schreiben Sie mit setIamPolicy() die aktualisierte Richtlinie:

    POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance:setIamPolicy

    Ersetzen Sie Folgendes:

    • project-id: Die Projekt-ID, zu der diese VM gehört.
    • zone: Die Zone der VM. Ersetzen Sie für regionale oder globale Ressourcen zones/zone durch regions/region oder global.
    • instance: Der Name der VM-Instanz.

    Geben Sie im Anfragetext die aktualisierte IAM-Richtlinie aus dem vorherigen Schritt an.

Berechtigungen des aufrufenden Nutzers prüfen

Wenn Sie nicht wissen, welche Berechtigungen eine Identität hat, verwenden Sie die API-Methode testIamPermissions. So können Sie prüfen, welche Berechtigungen für eine Identität verfügbar sind.

Diese Methode gibt mit einer Ressourcen-URL und einer Reihe von Berechtigungen als Eingabeparameter den Berechtigungssatz des Aufrufers zurück. Sie können diese Methode für alle unterstützten Ressourcen verwenden.

testIamPermissions ist für die Verknüpfung mit Ihrer proprietären Software vorgesehen, etwa einer benutzerdefinierten grafischen Oberfläche. Wenn Sie Berechtigungen direkt über Google Cloud verwalten, sollten Sie testIamPermissions in der Regel nicht aufrufen.

Angenommen, Sie erstellen ein GUI, das auf der Compute Engine API basiert und eine Schaltfläche zum Starten einer Instanz hat. Dann können Sie compute.instances.testIamPermissions() aufrufen, um festzustellen, ob die Schaltfläche aktiviert oder deaktiviert werden soll.

So testen Sie, ob ein Nutzer bestimmte Berechtigungen für eine Ressource hat:

  1. Senden Sie eine Anfrage an die Ressource und geben Sie im Anfragetext eine Liste der Berechtigungen an, auf die geprüft werden soll.

    Beispielsweise könnten Sie auf einer Instanz nach compute.instances.start, compute.instances.stop und compute.instances.delete suchen.

    POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-name/setIamPolicy
        {
          "permissions": [
            "compute.instances.start",
            "compute.instances.stop",
            "compute.instances.delete"
           ]
        }
  2. Die Anfrage liefert die Berechtigungen, die für den Nutzer aktiviert sind.

    {
      "permissions": [
        "compute.instances.start",
        "compute.instances.stop"
      ]
    }
    

Ressourcenzugriff für mehrere Mitglieder ändern

Wenn Sie den Zugriff auf Compute Engine-Ressourcen für mehrere Mitglieder gleichzeitig ändern möchten, lesen Sie die Empfehlungen zum programmatischen Ändern einer IAM-Richtlinie.

Weitere Informationen