IAM granulare Dataproc

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

IAM granulare Dataproc è una funzionalità che consente di concedere autorizzazioni a livello di cluster, job, operazioni, modelli di flusso di lavoro o criteri di scalabilità automatica.

Esempio: puoi concedere a un utente un ruolo Visualizzatore cluster, che consente all'utente di visualizzare un cluster all'interno di un progetto, e a un altro utente un ruolo Editor, che consente all'utente di aggiornare e annullare, nonché di visualizzare il job. Consulta la sezione sui comandi SDK attivati da IAM granulare per comprendere gli specifici comandi dell'interfaccia a riga di comando di Google Cloud abilitati da ogni ruolo IAM granulare di Dataproc.

Ruoli e autorizzazioni IAM granulari di Dataproc

IAM granulare Dataproc può impostare i ruoli seguenti con le autorizzazioni seguenti sulle risorse Dataproc.

Ruoli cluster

Ruolo Autorizzazioni
Visualizzatore 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
Proprietario 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

Ruoli professionali

Ruolo Autorizzazioni
Visualizzatore dataproc.jobs.get
Editor dataproc.jobs.get
dataproc.jobs.cancel
dataproc.jobs.delete
dataproc.jobs.update
Proprietario dataproc.jobs.get
dataproc.jobs.cancel
dataproc.jobs.delete
dataproc.jobs.update
dataproc.jobs.setIamPolicy
dataproc.jobs.getIamPolicy

Ruoli operazione

Ruolo Autorizzazioni
Visualizzatore dataproc.operations.get
Editor dataproc.jobs.get
dataproc.operations.cancel
dataproc.operazioni.delete
Proprietario dataproc.jobs.get
dataproc.operations.cancel
dataproc.operations.delete
dataproc.operations.setIamPolicy
dataproc.operations.getIamPolicy

Ruoli modello flusso di lavoro

Ruolo Autorizzazioni
Visualizzatore dataproc.workflowTemplates.get
Editor dataproc.workflowTemplates.get
dataproc.workflowTemplates.delete
dataproc.workflowTemplates.update
Proprietario dataproc.workflowTemplates.get
dataproc.workflowTemplates.delete
dataproc.workflowTemplates.update
dataproc.workflowTemplates.setIamPolicy
dataproc.workflowTemplates.getIamPolicy

Ruoli dei criteri di scalabilità automatica

Ruolo Autorizzazioni
Visualizzatore dataproc.autoscalingPolicies.get
Editor dataproc.autoscalingPolicies.get
dataproc.autoscalingPolicies.use
dataproc.autoscalingPolicies.delete
dataproc.autoscalingPolicies.update
Proprietario dataproc.autoscalingPolicies.get
dataproc.autoscalingPolicies.use
dataproc.autoscalingPolicies.delete
dataproc.autoscalingPolicies.update
dataproc.autoscalingPolicies.setIamPolicy
dataproc.autoscalingPolicies.getIamPolicy

Utilizzo di IAM granulare Dataproc

Questa sezione spiega come utilizzare IAM granulare di Dataproc per assegnare ruoli agli utenti in una risorsa Dataproc esistente. Per ulteriori informazioni generali sull'aggiornamento e sulla rimozione dei ruoli IAM (Gestione di identità e accessi), vedi Concessione, modifica e revoca dell'accesso.

Comando gcloud

  1. Recupera il criterio IAM della risorsa e scrivilo in un file JSON (il resource-type può essere "cluster" o "jobs&jobt" o "operazioni" o "workflow-templates&quot" o "autoscaling-policies"):
    gcloud dataproc resource-type get-iam-policy  resource-id \
        --region=region \
        --format=json > iam.json
    
  2. I contenuti del file JSON saranno simili al seguente:
    {
      "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. Utilizzando un editor di testo, aggiungi un nuovo oggetto di associazione all'array delle associazioni che definisce gli utenti e il ruolo di accesso alle risorse per tali utenti. Ad esempio, per concedere il ruolo Visualizzatore (roles/viewer) all'utente sean@example.com, devi modificare l'esempio sopra per aggiungere un nuovo oggetto di associazione (mostrato in grassetto di seguito). Nota: assicurati di restituire il valore etag che hai ricevuto da gcloud dataproc resource-type get-iam-policy (consulta la documentazione relativa ai tag).
    {
      "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. Aggiorna il criterio del cluster con la nuova matrice di associazioni eseguendo il comando seguente (resource-type può essere "clusters" o "jobs" o "operations" o "workflow-templates" o "autoscaling-policies"):
    gcloud dataproc resource-type set-iam-policy resource-name \
        --region=region \
        --format=json iam.json
    
  5. Il comando restituisce il criterio aggiornato:
    {
      "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"
    }
    

API REST

  1. Invia una richiesta getIamPolicy resource-type ("clusters" or "jobs" or "operations" or "workflowTemplates" or "autoscalingPolicies") per ottenere il criterio IAM per la risorsa.

    Esempio di getIamPolicy del cluster:

    GET https://dataproc.googleapis.com/v1/projects/projectName/regions/region/clusters/clusterName:getIamPolicy
    
  2. I contenuti del file JSON saranno simili al seguente:
    {
      "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. Utilizzando un editor di testo, crea il seguente oggetto JSON policy per includere l'array di associazioni che hai appena ricevuto dal servizio Dataproc. Assicurati di restituire il valore "etag" che hai ricevuto nella risposta getIamPolicy (consulta la documentazione di etag). Ora, aggiungi un nuovo oggetto di associazione all'array delle associazioni che definisce gli utenti e il ruolo di accesso al cluster per tali utenti. Ad esempio, per concedere il ruolo Visualizzatore (roles/viewer) all'utente sean@example.com, devi cambiare l'esempio sopra per aggiungere un nuovo oggetto di associazione (mostrato in grassetto di seguito).
    {
      "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. Imposta il criterio aggiornato sulla risorsa inviando una richiesta setIamPolicy.

    Cluster setIamPolicy Esempio:

    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. I contenuti della risposta JSON saranno simili ai seguenti:

    Risposta

    {
      "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

Vai alla pagina Cluster Dataproc nella console Google Cloud, quindi fai clic sulla casella a sinistra del nome dell'editor per aprire il riquadro Autorizzazioni/Etichette. Se il riquadro non è visualizzato, fai clic su MOSTRA PANNELLO INFORMAZIONI in alto a destra nella pagina. Nella scheda Autorizzazioni, seleziona il ruolo Dataproc, aggiungi uno o più indirizzi di account nella casella Aggiungi entità, quindi fai clic su Aggiungi.

Comandi SDK abilitati da IAM granulare

Le tabelle seguenti mostrano i comandi gcloud dataproc abilitati sulle risorse Dataproc per ciascun ruolo IAM granulare.

Cluster

Ruolo IAM Comando
Visualizzatore 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
Proprietario 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

Job

Ruolo IAM Comando
Visualizzatore 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
Proprietario 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

Operazioni

Ruolo IAM Comando
Visualizzatore 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
Proprietario 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

Modelli di flusso di lavoro

Ruolo IAM Comando
Visualizzatore 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
Proprietario 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

Criterio di scalabilità automatica

Ruolo IAM Comando
Visualizzatore 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
Proprietario 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

Inviare job con IAM granulare

Per consentire a un'entità (account utente, gruppo o servizio) di inviare job a un cluster specificato tramite IAM granulare Dataproc, oltre a concedere a un utente un ruolo Editor su un cluster, è necessario impostare autorizzazioni aggiuntive a livello di progetto. Ecco i passaggi da seguire per consentire a un'entità di inviare job su un cluster Dataproc specificato:

  1. Crea un bucket Cloud Storage che il cluster possa utilizzare per connettersi a Cloud Storage.
  2. Aggiungi l'entità al criterio a livello di bucket, selezionando il ruolo Visualizzatore oggetti Storage per l'entità (vedi roles/storage.objectViewer), che include le seguenti autorizzazioni:
    1. storage.objects.get
    2. storage.objects.list
  3. Quando crei il cluster, trasmetti il nome del bucket appena creato al tuo cluster utilizzando il parametro --bucket (vedi gcloud dataproc clusters create --bucket).
  4. Dopo la creazione del cluster, imposta un criterio nel cluster che concede al ruolo Editor o Proprietario (vedi Utilizzo di Dataproc Granular IAM).
  5. Crea un ruolo IAM personalizzato con le seguenti autorizzazioni:
    1. dataproc.jobs.create
    2. dataproc.jobs.get
  6. Seleziona o aggiungi l'entità nella pagina IAM di Google Cloud Console, quindi seleziona il ruolo personalizzato per applicarla all'entità.