Autenticação de cluster pessoal do Dataproc

Quando cria um cluster do Dataproc, pode ativar a autenticação pessoal do cluster do Dataproc para permitir que as cargas de trabalho interativas no cluster sejam executadas em segurança como a sua identidade de utilizador. Isto significa que as interações com outros Google Cloud recursos, como o Cloud Storage, são autenticadas como suas em vez da conta de serviço do cluster.

Considerações

  • Quando cria um cluster com a autenticação de cluster pessoal ativada, o cluster só pode ser usado pela sua identidade. Os outros utilizadores não vão poder executar tarefas no cluster nem aceder aos pontos finais do Component Gateway no cluster.

  • Os clusters com a autenticação de cluster pessoal ativada bloqueiam o acesso SSH e as funcionalidades do Compute Engine, como scripts de arranque, em todas as VMs no cluster.

  • Os clusters com a autenticação de cluster pessoal ativada ativam e configuram automaticamente o Kerberos no cluster para uma comunicação segura entre clusters. No entanto, todas as identidades Kerberos no cluster interagem com os recursos como o mesmo utilizador. Google Cloud

  • Os clusters com a autenticação de cluster pessoal ativada não suportam imagens personalizadas.

  • A autenticação de cluster pessoal do Dataproc não suporta fluxos de trabalho do Dataproc.

  • A autenticação pessoal de clusters do Dataproc destina-se apenas a tarefas interativas executadas por um utilizador individual (humano). As tarefas e as operações de longa duração devem configurar e usar uma identidade de conta de serviço adequada.

  • As credenciais propagadas são restritas com um limite de acesso às credenciais. O limite de acesso predefinido está limitado à leitura e escrita de objetos do Cloud Storage em contentores do Cloud Storage pertencentes ao mesmo projeto que contém o cluster. Pode definir um limite de acesso não predefinido quando enable_an_interactive_session.

  • A autenticação de clusters pessoais do Dataproc usa atributos de convidado do Compute Engine. Se a funcionalidade de atributos de hóspedes estiver desativada, a autenticação de cluster pessoal falha.

Objetivos

  • Crie um cluster do Dataproc com a autenticação de cluster pessoal do Dataproc ativada.

  • Inicie a propagação de credenciais para o cluster.

  • Use um bloco de notas do Jupyter no cluster para executar tarefas do Spark que autenticam com as suas credenciais.

Antes de começar

Crie um projeto

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Dataproc API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  5. Install the Google Cloud CLI.

  6. Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.

  7. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the Dataproc API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  11. Install the Google Cloud CLI.

  12. Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.

  13. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  14. Configure o ambiente

    Configure o ambiente a partir do Cloud Shell ou de um terminal local:

    Cloud Shell

    1. Inicie uma sessão do Cloud Shell.

    Terminal local

    1. Execute gcloud auth login para obter credenciais de utilizador válidas.

    Crie um cluster e ative uma sessão interativa

    1. Encontre o endereço de email da sua conta ativa no gcloud.

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

    2. Crie um cluster.

      gcloud dataproc clusters create CLUSTER_NAME \
          --properties=dataproc:dataproc.personal-auth.user=your-email-address \
          --enable-component-gateway \
          --optional-components=JUPYTER \
          --region=REGION
      

    3. Ative uma sessão de propagação de credenciais para o cluster começar a usar as suas credenciais pessoais quando interagir com os recursos Google Cloud.

      gcloud dataproc clusters enable-personal-auth-session \
          --region=REGION \
          CLUSTER_NAME
      

      Exemplo de saída:

      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...
      

      1. Exemplo de limite de acesso com âmbito reduzido: O exemplo seguinte ativa uma sessão de autenticação pessoal mais restritiva do que o limite de acesso de credenciais com âmbito reduzido predefinido. Restringe o acesso ao contentor de preparação do cluster do Dataproc (consulte o artigo Reduza o âmbito com limites de acesso às credenciais para mais informações).

         gcloud dataproc clusters enable-personal-auth-session \
            --project=PROJECT_ID \
            --region=REGION \
            --access-boundary=<(echo -n "{ \
         \"access_boundary\": { \
            \"accessBoundaryRules\": [{ \
               \"availableResource\": \"//storage.googleapis.com/projects/_/buckets/$(gcloud dataproc clusters describe --project=PROJECT_ID --region=REGION CLUSTER_NAME --format="value(config.configBucket)")\", \
               \"availablePermissions\": [ \
               \"inRole:roles/storage.objectViewer\", \
               \"inRole:roles/storage.objectCreator\", \
               \"inRole:roles/storage.objectAdmin\", \
               \"inRole:roles/storage.legacyBucketReader\" \
               ] \
            }] \
         } \
         }") \
            CLUSTER_NAME
        
    4. Mantenha o comando em execução e mude para um novo separador do Cloud Shell ou uma sessão de terminal. O cliente atualiza as credenciais enquanto o comando está a ser executado.

    5. Escreva Ctrl-C para terminar a sessão.

    Aceda ao Jupyter no cluster

    gcloud

    1. Obtenha detalhes do cluster.
      gcloud dataproc clusters describe CLUSTER_NAME --region=REGION
      

      O URL da interface Web do Jupyter está listado nos detalhes do cluster.

      ...
      JupyterLab: https://UUID-dot-us-central1.dataproc.googleusercontent.com/jupyter/lab/
      ...
      
    2. Copie o URL para o seu navegador local para iniciar a IU do Jupyter.
    3. Verifique se a autenticação do cluster pessoal foi bem-sucedida.
      1. Inicie um terminal do Jupyter.
      2. Execução gcloud auth list
      3. Verifique se o seu nome de utilizador é a única conta ativa.
    4. Num terminal do Jupyter, ative o Jupyter para autenticar com o Kerberos e enviar tarefas do Spark.
      kinit -kt /etc/security/keytab/dataproc.service.keytab dataproc/$(hostname -f)
      
      1. Execute klist para verificar se o Jupyter obteve um TGT válido.
    5. Num terminal do Jupyter, use a CLI gcloud para criar um ficheiro rose.txt num contentor do Cloud Storage no seu projeto.
      echo "A rose by any other name would smell as sweet" > /tmp/rose.txt
      

      gcloud storage cp /tmp/rose.txt gs://bucket-name/rose.txt
      
      1. Marque o ficheiro como privado para que apenas a sua conta de utilizador possa ler ou escrever no mesmo. O Jupyter usa as suas credenciais pessoais quando interage com o Cloud Storage.
        gcloud storage objects update gs://bucket-name/rose.txt --predefined-acl=private
        
      2. Valide o seu acesso privado.
        gcloud storage objects describe gs://$BUCKET/rose.txt
        

        acl:
    6. email: $USER entity: user-$USER role: OWNER