Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Autenticación de clústeres personales de Dataproc

Cuando creas un clúster de Dataproc, puedes habilitar la autenticación de clúster personal de Dataproc para permitir que las cargas de trabajo interactivas en el clúster se ejecuten de forma segura como tu identidad de usuario final. Esto significa que las interacciones con otros recursos de Google Cloud, como Cloud Storage, se autenticarán por tu cuenta en lugar de la cuenta de servicio del clúster.

Consideraciones

  • Cuando creas un clúster con la autenticación de clúster personal habilitada, tu identidad solo podrá usarla. Otros usuarios no podrán ejecutar trabajos en el clúster ni acceder a los extremos de puerta de enlace de componentes en el clúster.

  • Los clústeres con la autenticación de clúster personal habilitada bloquean el acceso SSH y las funciones de Compute Engine, como secuencias de comandos de inicio en todas las VM del clúster.

  • Los clústeres con autenticación de clúster personal habilitada habilitan y configuran automáticamente Kerberos en el clúster para una comunicación segura dentro del clúster. Sin embargo, todas las identidades de Kerberos en el clúster interactuarán con los recursos de Google Cloud que usa el mismo usuario final.

  • Actualmente, la autenticación de clústeres personales no es compatible con los flujos de trabajo de Dataproc.

  • La autenticación de clúster personal de Dataproc está destinada solo para trabajos interactivos que ejecuta un usuario individual (humano). Las operaciones y trabajos de larga duración deben configurar y usar una identidad de cuenta de servicio adecuada.

  • Las credenciales propagadas se reducen con un límite de acceso a credenciales. El límite de acceso predeterminado se limita a lectura y escritura de objetos de Cloud Storage en depósitos de Cloud Storage que son propiedad del mismo proyecto que contiene el clúster.

    Objetivos

  • Crea un clúster de Dataproc con la autenticación de clúster personal de Dataproc habilitada.

  • Iniciar la propagación de credenciales al clúster

  • Usar un notebook de Jupyter en el clúster para ejecutar trabajos de Spark que se autentiquen con tus credenciales

Antes de comenzar

Crea un proyecto

  1. Accede a tu Cuenta de Google.

    Si todavía no tienes una cuenta, regístrate para obtener una nueva.

  2. En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir a la página del selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Descubre cómo confirmar que tienes habilitada la facturación en un proyecto.

  4. Habilita la API Dataproc.

    Habilita la API

  5. Instala e inicializa el SDK de Cloud.

Configura el entorno

Configure el entorno desde Cloud Shell o una terminal local:

Cloud Shell

  1. Inicia una sesión de Cloud Shell.

Terminal local

  1. Ejecuta gcloud auth login para obtener credenciales de usuario válidas.

Crea un clúster y habilita una sesión interactiva

  1. Busca la dirección de correo electrónico de tu cuenta activa en gcloud.

    gcloud auth list --filter=status=ACTIVE --format="value(account)"
    

  2. Crea un clúster.

    gcloud dataproc clusters create  cluster-name \
        --properties=dataproc:dataproc.personal-auth.user=your-email-address \
        --enable-component-gateway \
        --optional-components=ANACONDA,JUPYTER,ZEPPELIN \
        --region=region
    

  3. Habilita una sesión de propagación de credenciales para que el clúster comience a usar tus credenciales personales cuando interactúas con recursos de Google Cloud.

    gcloud dataproc clusters enable-personal-auth-session \
        --region=region \
        cluster-name
    

    Resultado de muestra:

    Injecting initial credentials into the cluster cluster-name...done.
    Periodically refreshing credentials for cluster cluster-name. This will continue running until the command is interrupted...
    

  4. Mantén el comando en ejecución y cambia a una nueva pestaña o sesión de terminal de Cloud Shell. El cliente actualizará las credenciales mientras se ejecute el comando.

  5. Escribe Ctrl-C para finalizar la sesión.

Accede a Jupyter en el clúster

gcloud

  1. Obtén detalles del clúster
    gcloud dataproc clusters describe cluster-name --region=region
    

    La URL de la interfaz web de Jupyter se enumera en los detalles del clúster.

    ...
    JupyterLab: https://UUID-dot-us-central1.dataproc.googleusercontent.com/jupyter/lab/
    ...
    
  2. Copia la URL en tu navegador local para iniciar la IU de Jupyter.
  3. Comprueba que la autenticación de clúster personal se haya realizado correctamente.
    1. Inicia una terminal de Jupyter.
    2. Ejecuta gcloud auth list
    3. Verifica que tu nombre de usuario sea la única cuenta activa.
  4. En una terminal de Jupyter, habilita Jupyter para autenticar con Kerberos y enviar trabajos de Spark.
    kinit -kt /etc/security/keytab/dataproc.service.keytab dataproc/$(hostname -f)
    
    1. Ejecuta klist para verificar que Jupyter obtuvo un TGT válido.
  5. En una terminal de Juypter, usa gsutil para crear un archivo rose.txt en un depósito de Cloud Storage en tu proyecto.
    echo "A rose by any other name would smell as sweet" > /tmp/rose.txt
    

    gsutil cp /tmp/rose.txt gs://bucket-name/rose.txt
    
    1. Marca el archivo como privado para que solo tu cuenta de usuario pueda leer o escribir en él. Jupyter usará tus credenciales personales cuando interactúes con Cloud Storage.
      gsutil acl set private gs://bucket-name/rose.txt
      
    2. Verifica tu acceso privado.
      gsutil acl get gs://$BUCKET/rose.txt
      

      [
      {
      "email": "$USER",
      "entity": "user-$USER",
      "role": "OWNER"
      }
      ]
      

Console

  1. Haz clic en el vínculo Componenta de puerta de enlace de Jupyter para iniciar la IU de Jupyter.
  2. Comprueba que la autenticación de clúster personal se haya realizado correctamente.
    1. Cómo iniciar una terminal de Jupyter
    2. Ejecuta gcloud auth list
    3. Verifica que tu nombre de usuario sea la única cuenta activa.
  3. En una terminal de Jupyter, habilita Jupyter para autenticar con Kerberos y enviar trabajos de Spark.
    kinit -kt /etc/security/keytab/dataproc.service.keytab dataproc/$(hostname -f)
    
    1. Ejecuta klist para verificar que Jupyter obtuvo un TGT válido.
  4. En una terminal de Juypter, usa gsutil para crear un archivo rose.txt en un depósito de Cloud Storage en tu proyecto.
    echo "A rose by any other name would smell as sweet" > /tmp/rose.txt
    

    gsutil cp /tmp/rose.txt gs://bucket-name/rose.txt
    
    1. Marca el archivo como privado para que solo tu cuenta de usuario pueda leer o escribir en él. Jupyter usará tus credenciales personales cuando interactúes con Cloud Storage.
      gsutil acl set private gs://bucket-name/rose.txt
      
    2. Verifica tu acceso privado.
      gsutil acl get gs://bucket-name/rose.txt
      
      [
      {
      "email": "$USER",
      "entity": "user-$USER",
      "role": "OWNER"
      }
      ]
      

Ejecuta un trabajo de PySpark desde Jupyter

  1. Navegue a una carpeta y, luego, cree un notebook de PySpark.
  2. Ejecuta un trabajo básico de recuento de palabras en el archivo rose.txt que creaste antes.

    text_file = sc.textFile("gs://bucket-name/rose.txt")
    counts = text_file.flatMap(lambda line: line.split(" ")) \
             .map(lambda word: (word, 1)) \
             .reduceByKey(lambda a, b: a + b)
    print(counts.collect())
    

    Spark puede leer el archivo rose.txt en Cloud Storage porque se ejecuta con tus credenciales de usuario.

    También puedes verificar los Registros de auditoría del bucket de Cloud Storage a fin de verificar que el trabajo esté accediendo a Cloud Storage con tu identidad.

Limpieza

  1. Borra el clúster de Dataproc.
    gcloud dataproc clusters delete cluster-name --region=region