Gestión de identidades y accesos granular de Dataproc

La gestión de identidades y accesos granular de Dataproc es una función que te permite conceder permisos a nivel de clúster, tarea, operación, plantilla de flujo de trabajo o política de escalado automático.

Por ejemplo, puedes asignar a un usuario el rol Lector de clúster, que le permite ver un clúster de un proyecto, y asignar a otro usuario el rol Editor de trabajos, que le permite actualizar, cancelar y ver el trabajo. Para saber qué comandos específicos de la CLI de Google Cloud habilita cada rol de gestión de identidades y accesos granular de Dataproc, consulta Comandos del SDK habilitados por la gestión de identidades y accesos granular.

Roles y permisos de gestión de identidades y accesos granulares de Dataproc

La gestión de identidades y accesos granular de Dataproc puede definir los siguientes roles con los siguientes permisos en los recursos de Dataproc.

Roles de clúster

Rol Permisos
Lector 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
Propietario 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

Cargos

Rol Permisos
Lector dataproc.jobs.get
Editor dataproc.jobs.get
dataproc.jobs.cancel
dataproc.jobs.delete
dataproc.jobs.update
Propietario dataproc.jobs.get
dataproc.jobs.cancel
dataproc.jobs.delete
dataproc.jobs.update
dataproc.jobs.setIamPolicy
dataproc.jobs.getIamPolicy

Roles de operación

Rol Permisos
Lector dataproc.operations.get
Editor dataproc.jobs.get
dataproc.operations.cancel
dataproc.operations.delete
Propietario dataproc.jobs.get
dataproc.operations.cancel
dataproc.operations.delete
dataproc.operations.setIamPolicy
dataproc.operations.getIamPolicy

Roles de plantilla de flujo de trabajo

Rol Permisos
Lector dataproc.workflowTemplates.get
Editor dataproc.workflowTemplates.get
dataproc.workflowTemplates.delete
dataproc.workflowTemplates.update
Propietario dataproc.workflowTemplates.get
dataproc.workflowTemplates.delete
dataproc.workflowTemplates.update
dataproc.workflowTemplates.setIamPolicy
dataproc.workflowTemplates.getIamPolicy

Roles de política de autoescalado

Rol Permisos
Lector dataproc.autoscalingPolicies.get
Editor dataproc.autoscalingPolicies.get
dataproc.autoscalingPolicies.use
dataproc.autoscalingPolicies.delete
dataproc.autoscalingPolicies.update
Propietario dataproc.autoscalingPolicies.get
dataproc.autoscalingPolicies.use
dataproc.autoscalingPolicies.delete
dataproc.autoscalingPolicies.update
dataproc.autoscalingPolicies.setIamPolicy
dataproc.autoscalingPolicies.getIamPolicy

Usar la gestión de identidades y accesos granular de Dataproc

En esta sección se explica cómo usar IAM granular de Dataproc para asignar roles a los usuarios en un recurso de Dataproc. Para obtener más información sobre cómo actualizar y quitar roles de gestión de identidades y accesos (IAM), consulta el artículo Administra el acceso a proyectos, carpetas y organizaciones.

Comando gcloud

  1. Obtén la política de gestión de identidades y accesos del recurso y escríbela en un archivo JSON (resource-type puede ser "clusters", "jobs", "operations", "workflow-templates" o "autoscaling-policies"):
    gcloud dataproc resource-type get-iam-policy  resource-id \
        --region=region \
        --format=json > iam.json
    
  2. El contenido del archivo JSON será similar al siguiente:
    {
      "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. Con un editor de texto, añade un nuevo objeto de enlace al array de enlaces que define los usuarios y el rol de acceso al recurso de esos usuarios. Por ejemplo, para asignar el rol Lector (roles/viewer) al usuario sean@example.com, cambiarías el ejemplo anterior para añadir un nuevo objeto de enlace (que se muestra en negrita en el siguiente ejemplo). Nota: Asegúrate de devolver el valor etag que has recibido de gcloud dataproc resource-type get-iam-policy. Consulta la documentación de etag.
    {
      "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. Actualiza la política del clúster con la nueva matriz de enlaces ejecutando el siguiente comando (resource-type puede ser "clusters", "jobs", "operations", "workflow-templates" o "autoscaling-policies"):
    gcloud dataproc resource-type set-iam-policy resource-name \
        --region=region \
        --format=json iam.json
    
  5. El comando muestra la política actualizada:
    {
      "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. Envía una solicitud resource-type ("clusters" or "jobs" or "operations" or "workflowTemplates" or "autoscalingPolicies") getIamPolicy para obtener la política de gestión de identidades y accesos del recurso.

    Ejemplo de getIamPolicy de clúster:

    GET https://dataproc.googleapis.com/v1/projects/projectName/regions/region/clusters/clusterName:getIamPolicy
    
  2. El contenido del archivo JSON será similar al siguiente:
    {
      "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. Con un editor de texto, crea el siguiente objeto policy JSON para incluir la matriz de enlaces que acabas de recibir del servicio Dataproc. Asegúrate de devolver el valor "etag" que has recibido en la respuesta getIamPolicy (consulta la documentación de etag). Ahora, añade un nuevo objeto de enlace al array de enlaces que define los usuarios y el rol de acceso al clúster de esos usuarios. Por ejemplo, para conceder el rol Lector (roles/viewer) al usuario sean@example.com, cambiarías el ejemplo anterior para añadir un nuevo objeto de enlace (que se muestra en negrita más abajo).
    {
      "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. Define la política actualizada en el recurso enviando una setIamPolicy solicitud.

    Clúster setIamPolicy Ejemplo:

    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. El contenido de la respuesta JSON será similar al siguiente:

    Respuesta

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

Consola

Ve a la página Clústeres de Dataproc de la consola de Google Cloud y, a continuación, haz clic en la casilla situada a la izquierda del nombre del clúster para abrir el panel Permisos/Etiquetas (si el panel no se muestra, haz clic en MOSTRAR PANEL DE INFORMACIÓN en la parte superior derecha de la página). En la pestaña Permisos, selecciona el rol de Dataproc, añade una o varias direcciones de cuenta en el cuadro Añadir principales y, a continuación, haz clic en Añadir.

Comandos del SDK habilitados por la gestión de identidades y accesos granular

En esta sección se describen los comandos gcloud dataproc habilitados en los recursos de Dataproc por cada rol de gestión de identidades y accesos granular.

Clústeres

Rol de IAM Comando
Lector 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
Propietario 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

Empleo

Rol de IAM Comando
Lector 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
Propietario 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

Operaciones

Rol de IAM Comando
Lector 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
Propietario 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

Plantillas de flujo de trabajo

Rol de IAM Comando
Lector 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
Propietario 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

Políticas de autoescalado

Rol de IAM Comando
Lector 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
Propietario 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

Enviar tareas con gestión de identidades y accesos granular

Para permitir que una entidad (usuario, grupo o cuenta de servicio) envíe trabajos a un clúster específico mediante la gestión de identidades y accesos granular de Dataproc, además de conceder a un usuario el rol Editor en un clúster, se deben definir permisos adicionales a nivel de proyecto. Estos son los pasos que debes seguir para permitir que una entidad envíe trabajos en un clúster de Dataproc específico:

  1. Crea un segmento de Cloud Storage que tu clúster pueda usar para conectarse a Cloud Storage.
  2. Añade la cuenta principal a la política a nivel de cubo y selecciona el rol Lector de objetos de Storage para la cuenta principal (consulta roles/storage.objectViewer), que incluye los siguientes permisos:
    1. storage.objects.get
    2. storage.objects.list
  3. Cuando crees el clúster, pásale el nombre del segmento que acabas de crear con el parámetro --bucket (consulta gcloud dataproc clusters create --bucket).
  4. Una vez creado el clúster, define una política en él que conceda al principal el rol de editor o propietario (consulta Usar la gestión de identidades y accesos granular de Dataproc).
  5. Crea un rol personalizado de gestión de identidades y accesos con los siguientes permisos:
    1. dataproc.jobs.create
    2. dataproc.jobs.get
  6. Selecciona o añade el principal en la página IAM de la Google Cloud consola y, a continuación, selecciona el rol personalizado para aplicarlo al principal.