Dataproc Granular IAM

Dataproc Granular IAM ist eine Funktion, mit der Sie Berechtigungen auf der Ebene von Clustern, Jobs, Vorgängen, Workflowvorlagen oder Autoscaling-Richtlinien gewähren können.

Beispiel: Sie können einem Nutzer eine Cluster-Betrachterrolle erteilen, die es ihm ermöglicht, einen Cluster innerhalb eines Projekts aufzurufen. Einem anderen Nutzer können Sie eine Job-Bearbeiterrolle zuweisen, mit der dieser Nutzer den Job aktualisieren, abbrechen und aufrufen kann. Unter Durch Granular IAM aktivierte SDK-Befehle finden Sie Informationen zu den spezifischen Befehlen der Google Cloud CLI, die durch jede Dataproc Granular IAM-Rolle aktiviert werden.

Dataproc Granular IAM-Rollen und -Berechtigungen

Dataproc Granular IAM kann die folgenden Rollen mit den folgenden Berechtigungen für Dataproc-Ressourcen festlegen.

Clusterrollen

Rolle Berechtigungen
Betrachter dataproc.clusters.get
Editor dataproc.clusters.get
dataproc.clusters.list
dataproc.clusters.delete
dataproc.clusters.update
dataproc.clusters.use
dataproc.clusters.start
dataproc.clusters.stop
Owner dataproc.clusters.get
dataproc.clusters.list
dataproc.clusters.delete
dataproc.clusters.update
dataproc.clusters.use
dataproc.clusters.start
dataproc.clusters.stop
dataproc.clusters.setIamPolicy
dataproc.clusters.getIamPolicy

Jobrollen

Rolle Berechtigungen
Betrachter dataproc.jobs.get
Editor dataproc.jobs.get
dataproc.jobs.cancel
dataproc.jobs.delete
dataproc.jobs.update
Owner dataproc.jobs.get
dataproc.jobs.cancel
dataproc.jobs.delete
dataproc.jobs.update
dataproc.jobs.setIamPolicy
dataproc.jobs.getIamPolicy

Vorgangsrollen

Rolle Berechtigungen
Betrachter dataproc.operations.get
Editor dataproc.jobs.get
dataproc.operations.cancel
dataproc.operations.delete
Owner dataproc.jobs.get
dataproc.operations.cancel
dataproc.operations.delete
dataproc.operations.setIamPolicy
dataproc.operations.getIamPolicy

Rollen für Workflowvorlagen

Rolle Berechtigungen
Betrachter dataproc.workflowTemplates.get
Editor dataproc.workflowTemplates.get
dataproc.workflowTemplates.delete
dataproc.workflowTemplates.update
Inhaber dataproc.workflowTemplates.get
dataproc.workflowTemplates.delete
dataproc.workflowTemplates.update
dataproc.workflowTemplates.setIamPolicy
dataproc.workflowTemplates.getIamPolicy

Rollen für Autoscaling-Richtlinien

Rolle Berechtigungen
Betrachter dataproc.autoscalingPolicies.get
Editor dataproc.autoscalingPolicies.get
dataproc.autoscalingPolicies.use
dataproc.autoscalingPolicies.delete
dataproc.autoscalingPolicies.update
Owner dataproc.autoscalingPolicies.get
dataproc.autoscalingPolicies.use
dataproc.autoscalingPolicies.delete
dataproc.autoscalingPolicies.update
dataproc.autoscalingPolicies.setIamPolicy
dataproc.autoscalingPolicies.getIamPolicy

Dataproc Granular IAM verwenden

In diesem Abschnitt wird erläutert, wie Sie Nutzern mithilfe von Dataproc Granular IAM Rollen in einer vorhandenen Dataproc-Ressource zuweisen. Weitere allgemeine Informationen zum Aktualisieren und Entfernen von IAM-Rollen (Identity and Access Management) finden Sie unter Zugriff gewähren, ändern und widerrufen.

gcloud-Befehl

  1. Rufen Sie die IAM-Richtlinie der Ressource ab und schreiben Sie sie in eine JSON-Datei (resource-type kann "Cluster", "Jobs", "Vorgänge", "Workflow-Vorlagen" oder "Autoscaling-Richtlinien" sein):
    gcloud dataproc resource-type get-iam-policy  resource-id \
        --region=region \
        --format=json > iam.json
    
  2. Der Inhalt der JSON-Datei sieht in etwa so aus:
    {
      "bindings": [
        {
          "role": "roles/editor",
          "members": [
            "user:mike@example.com",
            "group:admins@example.com",
            "domain:google.com",
            "serviceAccount:my-other-app@appspot.gserviceaccount.com"
          ]
        }
      ],
      "etag": "string"
    }
    
  3. Fügen Sie mithilfe eines Texteditors ein neues Binding-Objekt in das Array "bindings" ein, das die Nutzer und die Ressourcenzugriffsrolle für diese Nutzer definiert. Um beispielsweise dem Nutzer sean@example.com die Rolle "Betrachter" (roles/viewer) zuzuweisen, würden Sie das obige Beispiel ändern, um ein neues Binding-Objekt hinzuzufügen (unten fett dargestellt). Hinweis: Achten Sie darauf, den etag-Wert zurückzugeben, den Sie von gcloud dataproc resource-type get-iam-policy erhalten haben (siehe etag-Dokumentation).
    {
      "bindings": [
        {
          "role": "roles/editor",
          "members": [
            "user:mike@example.com",
            "group:admins@example.com",
            "domain:google.com",
            "serviceAccount:my-other-app@appspot.gserviceaccount.com"
          ]
        },
        {
          "role": "roles/viewer",
          "members": [
            "user:sean@example.com"
          ]
        }
      ],
      "etag": "value-from-get-iam-policy"
    }
    
  4. Aktualisieren Sie die Richtlinie des Clusters mit dem neuen Bindings-Array, indem Sie den folgenden Befehl ausführen (resource-type kann „clusters“, „jobs“, „operations“, „workflow-templates“ oder „Autoscaling-policies“ sein):
    gcloud dataproc resource-type set-iam-policy resource-name \
        --region=region \
        --format=json iam.json
    
  5. Der Befehl gibt die aktualisierte Richtlinie aus:
    {
      "bindings": [
        {
          "role": "roles/editor",
          "members": [
            "user:mike@example.com",
            "group:admins@example.com",
            "domain:google.com",
            "serviceAccount:my-other-app@appspot.gserviceaccount.com"
          ]
        },
        {
          "role": "roles/viewer",
          "members": [
            "user:sean@example.com"
          ]
        }
      ],
      "etag": "string"
    }
    

REST API

  1. Senden Sie eine resource-type ("clusters" or "jobs" or "operations" or "workflowTemplates" or "autoscalingPolicies") getIamPolicy-Anfrage, um die IAM-Richtlinie für die Ressource abzurufen.

    Beispiel für eine getIamPolicy auf Clusterebene:

    GET https://dataproc.googleapis.com/v1/projects/projectName/regions/region/clusters/clusterName:getIamPolicy
    
  2. Der Inhalt der JSON-Datei sieht in etwa so aus:
    {
      "bindings": [
        {
          "role": "roles/editor",
          "members": [
            "user:mike@example.com",
            "group:admins@example.com",
            "domain:google.com",
            "serviceAccount:my-other-app@appspot.gserviceaccount.com"
          ]
        }
      ],
      "etag": "string"
    }
    
  3. Erstellen Sie mithilfe eines Texteditors das folgende JSON-Richtlinienobjekt, um das Bindings-Array einzuschließen, das Sie gerade vom Dataproc-Dienst erhalten haben. Achten Sie darauf, dass Sie den "etag"-Wert zurückgeben, den Sie in der getIamPolicy-Antwort erhalten haben (weitere Informationen finden Sie in der etag-Dokumentation). Fügen Sie jetzt ein neues Binding-Objekt in das Array "bindings" ein, durch das die Nutzer und die Cluster-Zugriffsrolle für diese Nutzer festgelegt werden. Um beispielsweise dem Nutzer sean@example.com die Rolle "Betrachter" (roles/viewer) zuzuweisen, würden Sie das obige Beispiel ändern, um ein neues Binding-Objekt hinzuzufügen (unten in Fettschrift dargestellt).
    {
      "policy": {
        "version": "",
        "bindings": [
          {
            "role": "roles/editor",
            "members": [
              "user:mike@example.com",
              "group:admins@example.com",
              "domain:google.com",
              "serviceAccount:my-other-app@appspot.gserviceaccount.com"
            ]
          },
          {
            "role": "roles/viewer",
            "members": [
              "user:sean@example.com"
            ]
          }
        ],
        "etag": "value-from-getIamPolicy"
      }
    }
    
  4. Legen Sie die aktualisierte Richtlinie für die Ressource fest, indem Sie eine setIamPolicy-Anfrage ausgeben.

    Beispiel für setIamPolicy-Anfrage auf Clusterebene:

    POST https://dataproc.googleapis.com/v1/projects/projectName/regions/region/clusters/clusterName:setIamPolicy
    
    Request body
    {
      "policy": {
        "version": "",
        "bindings": [
          {
            "role": "roles/editor",
            "members": [
              "user:mike@example.com",
              "group:admins@example.com",
              "domain:google.com",
              "serviceAccount:my-other-app@appspot.gserviceaccount.com"
            ]
          },
          {
            "role": "roles/viewer",
            "members": [
              "user:sean@example.com"
            ]
          }
        ],
        "etag": "value-from-getIamPolicy"
      }
    }
    
  5. Der Inhalt der JSON-Antwort sieht in etwa so aus:

    Antwort

    {
      "bindings": [
        {
          "role": "roles/editor",
          "members": [
            "user:mike@example.com",
            "group:admins@example.com",
            "domain:google.com",
            "serviceAccount:my-other-app@appspot.gserviceaccount.com"
          ]
        },
        {
          "role": "roles/viewer",
          "members": [
            "user:sean@example.com"
          ]
        }
      ],
      "etag": "string"
    }
    

Console

Rufen Sie in der Google Cloud Console die Seite Dataproc-Cluster auf und klicken Sie auf das Kästchen links neben dem jeweiligen Namen, um den Bereich Berechtigungen/Labels zu öffnen. Wenn das Feld nicht angezeigt wird, klicken Sie oben rechts auf Infofeld ansehen. Wählen Sie im Tab "Berechtigungen" die Rolle "Dataproc" aus, fügen Sie im Feld Hauptkonten hinzufügen eine oder mehrere Kontoadressen hinzu, und klicken Sie dann auf Hinzufügen.

Durch Granular IAM aktivierte SDK-Befehle

Die folgenden Tabellen zeigen die gcloud dataproc-Befehle, die für Dataproc-Ressourcen nach jeder Granular IAM-Rolle aktiviert sind.

Cluster

IAM-Rolle Befehl
Betrachter gcloud dataproc clusters describe cluster-name
Editor gcloud dataproc clusters describe cluster-name
gcloud dataproc clusters list
gcloud dataproc clusters delete cluster-name
gcloud dataproc clusters diagnose cluster-name
gcloud dataproc clusters update cluster-name
gcloud beta dataproc clusters start cluster-name
gcloud beta dataproc clusters stop cluster-name
Inhaber gcloud dataproc clusters describe cluster-name
gcloud dataproc clusters list
gcloud dataproc clusters delete cluster-name
gcloud dataproc clusters diagnose cluster-name
gcloud dataproc clusters update cluster-name
gcloud beta dataproc clusters start cluster-name
gcloud beta dataproc clusters stop cluster-name
gcloud dataproc clusters get-iam-policy cluster-name
gcloud dataproc clusters set-iam-policy cluster-name

Jobs

IAM-Rolle Befehl
Betrachter gcloud dataproc jobs describe job-id
Editor gcloud dataproc jobs delete job-id
gcloud dataproc jobs describe job-id
gcloud dataproc jobs kill job-id
gcloud dataproc jobs update job-id
gcloud dataproc jobs wait job-id
Owner gcloud dataproc jobs delete job-id
gcloud dataproc jobs describe job-id
gcloud dataproc jobs kill job-id
gcloud dataproc jobs update job-id
gcloud dataproc jobs wait job-id
gcloud dataproc jobs get-iam-policy job-id
gcloud dataproc jobs set-iam-policy job-id

Betrieb

IAM-Rolle Befehl
Betrachter gcloud dataproc operations describe operation-id
Editor gcloud dataproc operations delete operation-id
gcloud dataproc operations describe operation-id
gcloud dataproc operations cancel operation-id
Inhaber gcloud dataproc operations delete operation-id
gcloud dataproc operations describe operation-id
gcloud dataproc operations cancel operation-id
gcloud dataproc operations get-iam-policy operation-id
gcloud dataproc operations set-iam-policy operation-id

Workflowvorlagen

IAM-Rolle Befehl
Betrachter gcloud dataproc workflow-templates describe template-id
Editor gcloud dataproc workflow-templates delete template-id
gcloud dataproc workflow-templates describe template-id
gcloud dataproc workflow-templates remove-job template-id
gcloud dataproc workflow-templates run template-id
Owner gcloud dataproc workflow-templates delete template-id
gcloud dataproc workflow-templates describe template-id
gcloud dataproc workflow-templates remove-job template-id
gcloud dataproc workflow-templates run template-id
gcloud dataproc workflow-templates get-iam-policy template-id
gcloud dataproc workflow-templates set-iam-policy template-id

Autoscaling-Richtlinien

IAM-Rolle Befehl
Betrachter gcloud dataproc autoscaling-policies describe policy-id
Editor gcloud dataproc autoscaling-policies delete policy-id
gcloud dataproc autoscaling-policies describe policy-id
gcloud dataproc autoscaling-policies update policy-id
gcloud dataproc clusters create cluster-name --autoscaling-policy policy-id
Inhaber gcloud dataproc autoscaling-policies delete policy-id
gcloud dataproc autoscaling-policies describe policy-id
gcloud dataproc autoscaling-policies update policy-id
gcloud dataproc clusters create cluster-name --autoscaling-policy policy-id
gcloud dataproc autoscaling-policies get-iam-policy policy-id
gcloud dataproc autoscaling-policies set-iam-policy policy-id

Jobs mit Granular IAM senden

Damit ein Hauptkonto (Nutzer, Gruppe oder Dienstkonto) Jobs mit Cloud Dataproc Granular IAM an einen angegebenen Cluster übermitteln kann, müssen dem Nutzer zusätzlich zur Editor-Rolle in einem Cluster zusätzliche Berechtigungen auf Projektebene gewährt werden. Im Folgenden sind die Schritte beschrieben, wie Sie einem Hauptkonto das Senden von Jobs auf einem bestimmten Dataproc-Cluster gestatten:

  1. Erstellen Sie einen Cloud Storage-Bucket, mit dem der Cluster eine Verbindung zu Cloud Storage herstellen kann.
  2. Fügen Sie das Hauptkonto der Richtlinie auf Bucket-Ebene hinzu und wählen Sie die Rolle „Storage-Objekt-Betrachter“ für das Hauptkonto aus (siehe roles/storage.objectViewer). Diese Rolle enthält die folgenden Berechtigungen:
    1. storage.objects.get
    2. storage.objects.list
  3. Wenn Sie den Cluster erstellen, übergeben Sie den Namen des soeben erstellten Buckets mit dem Parameter --bucket an den Cluster. Weitere Informationen finden Sie unter gcloud dataproc clusters create --bucket.
  4. Legen Sie nach dem Erstellen des Clusters eine Richtlinie für den Cluster fest, der dem Hauptkonto eine Bearbeiter- oder Eigentümerrolle erteilt. Weitere Informationen finden Sie unter Dataproc Granular IAM verwenden.
  5. Erstellen Sie eine benutzerdefinierte IAM-Rolle mit den folgenden Berechtigungen:
    1. dataproc.jobs.create
    2. dataproc.jobs.get
  6. Wählen Sie das Hauptkonto auf der IAM-Seite der Google Cloud Console aus oder fügen Sie es hinzu. Wählen Sie dann die benutzerdefinierte Rolle aus, um sie auf das Hauptkonto anzuwenden.