Contas de serviço do Dataproc

Nesta página, descrevemos as contas de serviço e os escopos de acesso da VM, além de como eles são usados com o Dataproc.

O que são contas de serviço?

A conta de serviço é uma conta especial que pode ser usada por serviços e aplicativos executados em uma instância de máquina virtual (VM) do Compute Engine para interagir com outras APIs do Google Cloud. Os aplicativos podem usar as credenciais de conta de serviço para se autorizar em um conjunto de APIs e realizar ações na VM dentro das permissões concedidas à conta de serviço.

Contas de serviço do Dataproc

As contas de serviço a seguir recebem as permissões necessárias para executar ações do Dataproc no projeto em que o cluster está localizado.

  • Conta de serviço da VM do Dataproc: As VMs em um cluster do Dataproc usam essa conta de serviço para o Dataproc operações do plano de dados. A conta de serviço padrão do Compute Engine [project-number]-compute@developer.gserviceaccount.com é usado que a conta de serviço da VM do Dataproc, a menos que você especifique conta de serviço da VM quando você cria um cluster. Por padrão, o Compute Engine conta de serviço padrão recebe o papel Editor do projeto, que inclui permissões para criar e excluir recursos na maioria do Google Cloud serviços, incluindo as permissões necessárias para executar os dados do Dataproc operações do plano de controle.

    Contas de serviço personalizadas: se você especificar um conta de serviço personalizada ao criar um cluster, é preciso conceder à conta de serviço personalizada as permissões necessárias para operações do plano de dados do Dataproc. Você pode fazer isso atribuindo o Papel de worker do Dataproc para a conta de serviço porque esse papel inclui as permissões mínimas necessárias para dados do Dataproc operações do plano de controle. São necessários papéis adicionais para conceder permissões a outros como leitura e gravação de dados no BigQuery.

  • Conta de serviço do agente de serviço do Dataproc: o Dataproc cria essa conta de serviço com o papel Agente de serviço do Dataproc em um Dataproc projeto do usuário do Google Cloud. Este serviço não pode ser substituída por uma conta de serviço de VM personalizada quando ao criar um cluster. Essa conta de agente de serviço é usada para executar operações de plano de controle do Dataproc, como criação, atualização e exclusão de VMs do cluster (consulte Agente de serviço do Dataproc (identidade do plano de controle).

    Por padrão, o Dataproc usa o service-[project-number]@dataproc-accounts.iam.gserviceaccount.com como a conta do agente de serviço. Se essa conta de serviço não tiver permissão, O Dataproc usa Conta de agente de serviço das APIs do Google, [project-number]@cloudservices.gserviceaccount.com, para o plano de controle operations.

Rede VPS compartilhada: se o cluster usar uma rede VPC compartilhada, um Administrador de VPC compartilhada precisará conceder a ambas as contas de serviço acima o papel de Usuário de rede para o projeto host da VPC compartilhada. Veja mais informações em:

Escopos de acesso à VM do Dataproc

Os escopos de acesso da VM e os papéis do IAM funcionam juntos para limitar o acesso da VM ao Google Cloud APIs de terceiros. Por exemplo, se as VMs do cluster receberem apenas o Escopo https://www.googleapis.com/auth/storage-full, aplicativos em execução em VMs de cluster podem chamar APIs do Cloud Storage, mas não fazer solicitações ao BigQuery, mesmo que estejam sendo executadas como uma conta de serviço de VM. que recebeu um papel do BigQuery com amplas permissões.

Uma prática recomendada é conceder o escopo amplo cloud-platform (https://www.googleapis.com/auth/cloud-platform) às VMs e limitar o acesso a elas concedendo Papéis do IAM para a conta de serviço da VM.

Escopos da VM padrão do Dataproc. Se os escopos não forem especificado quando um cluster é criado (consulte gcloud dataproc cluster create --scopes), As VMs do Dataproc têm o seguinte conjunto padrão de escopos:

https://www.googleapis.com/auth/cloud-platform (clusters created with image version 2.1+).
https://www.googleapis.com/auth/bigquery
https://www.googleapis.com/auth/bigtable.admin.table
https://www.googleapis.com/auth/bigtable.data
https://www.googleapis.com/auth/cloud.useraccounts.readonly
https://www.googleapis.com/auth/devstorage.full_control
https://www.googleapis.com/auth/devstorage.read_write
https://www.googleapis.com/auth/logging.write

Se você especificar escopos ao criar um cluster, as VMs do cluster terão os escopos especificadose o seguinte conjunto mínimo de escopos obrigatórios (mesmo que você não os especifique):

https://www.googleapis.com/auth/cloud-platform (clusters created with image version 2.1+).
https://www.googleapis.com/auth/cloud.useraccounts.readonly
https://www.googleapis.com/auth/devstorage.read_write
https://www.googleapis.com/auth/logging.write

Criar um cluster com uma conta de serviço de VM personalizada

Ao criar um cluster, é possível especificar um Conta de serviço de VM que o cluster usará para operações do plano de dados do Dataproc da conta de serviço da VM padrão (não é possível alterar a conta de serviço da VM após o cluster é criada). usar uma conta de serviço de VM com papéis do IAM atribuídos. permite que você forneça ao cluster acesso detalhado aos recursos do projeto.

Etapas preliminares

  1. Crie a conta de serviço da VM personalizada no projeto em que o cluster será criado.

  2. Conceda à conta de serviço da VM personalizada o Worker do Dataproc função no projeto e quaisquer outras funções necessárias para seus trabalhos, como Leitor e gravador do BigQuery (consulte Permissões e papéis do IAM do Dataproc).

    Exemplo da CLI gcloud:

    • O exemplo de comando a seguir concede à conta de serviço da VM personalizada No projeto de cluster, o papel Worker do Dataproc para envolvidos no projeto:
    gcloud projects add-iam-policy-binding CLUSTER_PROJECT_ID \
        --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --role="roles/dataproc.worker"
     
    • Considere um papel personalizado: em vez de conceder conta o papel predefinido Worker do Dataproc, é possível conceder o à conta de serviço um papel personalizado que contém permissões do papel de worker. mas limita storage.objects.* permissões.
      • O papel personalizado precisa conceder, pelo menos, a conta de serviço da VM storage.objects.create, storage.objects.get e storage.objects.update nos objetos na Buckets temporários e de preparo do Dataproc e em buckets adicionais necessários para os jobs que serão executados na aglomerado.

Crie o cluster

  • Crie o cluster no projeto.

Comando gcloud

Usar gcloud dataproc clusters create para criar um cluster com a conta de serviço da VM personalizada.

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
    --scopes=SCOPE

Substitua:

  • CLUSTER_NAME: o nome do cluster, que precisa ser exclusivo em um projeto. O nome precisa começar com uma letra minúscula e pode conter até 51 letras minúsculas. letras, números e hifens. Ele não pode terminar com um hífen. O nome de um que o cluster excluído possa ser reutilizado.
  • REGION: a região onde o cluster vai ficar.
  • SERVICE_ACCOUNT_NAME: o nome da conta de serviço.
  • PROJECT_ID: o ID do projeto do Google Cloud que contém o Conta de serviço de VM. Este será o ID de o projeto em que o cluster será criado ou o ID de outro projeto, se você estiver criar um cluster com uma conta de serviço de VM personalizada em outro cluster.
  • SCOPE: escopos de acesso para instâncias de VM do cluster (por exemplo, https://www.googleapis.com/auth/cloud-platform).

API REST

Ao concluir GceClusterConfig como parte clusters.create solicitação de API, defina os seguintes campos:

Console

Como configurar uma conta de serviço de VM do Dataproc no console do Google Cloud. É possível definir o cloud-platform escopo de acesso no cluster VMs ao criar o cluster clicando em "Possibilita o escopo da plataforma de nuvem para este cluster" na seção Acesso ao projeto de Gerenciar segurança do Dataproc Criar um cluster no console do Google Cloud.

Criar um cluster com uma conta de serviço de VM personalizada de outro projeto

Ao criar um cluster, é possível especificar um Conta de serviço de VM que o cluster usará para operações do plano de dados do Dataproc de usar a conta de serviço de VM padrão Não é possível especificar uma conta de serviço de VM personalizada após o cluster é criada). Usar uma conta de serviço de VM personalizada com papéis do IAM atribuídos permite que você forneça ao cluster acesso detalhado aos recursos do projeto.

Etapas preliminares

  1. No projeto da conta de serviço (o projeto em que a conta de serviço da VM personalizada está localizada):

    1. Ative as contas de serviço que serão anexadas aos projetos.

    2. Ative a Dataproc API.

      Ative a API

  2. Conceda à sua conta de e-mail (o usuário que está criando o cluster) o Papel Usuário da conta de serviço no projeto da conta de serviço ou, para um controle mais granular, a conta de serviço da VM personalizada no projeto da conta de serviço.

    Para mais informações: consulte Gerenciar o acesso a projetos, pastas e organizações conceder papéis no nível do projeto e Gerenciar o acesso às contas de serviço conceder papéis no nível da conta de serviço.

    Exemplos da CLI gcloud:

    • O exemplo de comando a seguir concede ao usuário o papel de usuário da conta de serviço no nível do projeto:
    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member=USER_EMAIL \
        --role="roles/iam.serviceAccountUser"
    

    Observações: USER_EMAIL: forneça o endereço de e-mail da sua conta de usuário no formato: user:user-name@example.com.

    • O exemplo de comando a seguir concede ao usuário o papel de usuário da conta de serviço no nível da conta de serviço:
    gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \
        --member=USER_EMAIL \
        --role="roles/iam.serviceAccountUser"
    

    Observações: USER_EMAIL: forneça o endereço de e-mail da sua conta de usuário no formato: user:user-name@example.com.

  3. Conceda à conta de serviço da VM personalizada o Worker do Dataproc no projeto do cluster.

    Exemplo da CLI gcloud:

    gcloud projects add-iam-policy-binding CLUSTER_PROJECT_ID \
        --member=serviceAccount:SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \
        --role="roles/dataproc.worker"
     
  4. Conceda a conta de serviço do agente de serviço do Dataproc no projeto de cluster, o Usuário da conta de serviço e o Criador de token de conta de serviço no projeto da conta de serviço ou, para um controle mais granular, a conta de serviço da VM personalizada no projeto da conta de serviço. Ao fazer isso, permita que a conta de serviço do agente de serviço do Dataproc no projeto do cluster criar tokens para a conta de serviço personalizada da VM do Dataproc no projeto da conta de serviço;

    Para mais informações: consulte Gerenciar o acesso a projetos, pastas e organizações conceder papéis no nível do projeto e Gerenciar o acesso às contas de serviço conceder papéis no nível da conta de serviço.

    Exemplos da CLI gcloud:

    • Os seguintes exemplos de comandos concedem ao agente de serviço do Dataproc a conta de serviço no projeto de cluster, o usuário da conta de serviço e o token da conta de serviço Papéis de criador no nível do projeto:
    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
        --role="roles/iam.serviceAccountUser"
     
    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
        --role="roles/iam.serviceAccountTokenCreator"
    
    • Os seguintes exemplos de comandos concedem ao agente de serviço do Dataproc no projeto de cluster, o usuário e o serviço da conta Papéis de criador de token de conta no nível da conta de serviço da VM:
    gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \
        --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
        --role="roles/iam.serviceAccountUser"
     
    gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \
        --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
        --role="roles/iam.serviceAccountTokenCreator"
    
  5. Conceda Conta de serviço do agente de serviço de APIs do Google no projeto do cluster o criador de tokens da conta de serviço no projeto da conta de serviço ou, para um controle mais granular, a conta de serviço da VM personalizada no projeto da conta de serviço. Ao fazer isso, você concede à conta de serviço do agente de serviço de APIs do Google no cluster projetar a capacidade de criar tokens para o serviço de VM personalizado do Dataproc no projeto da conta de serviço.

    Para mais informações: consulte Gerenciar o acesso a projetos, pastas e organizações conceder papéis no nível do projeto e Gerenciar o acesso às contas de serviço conceder papéis no nível da conta de serviço.

    Exemplos da CLI gcloud:

    • O exemplo de comando a seguir concede à conta de serviço do agente de serviço de APIs do Google No projeto de cluster, o papel de Criador de token da conta de serviço para envolvidos no projeto:
    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member=serviceAccount:CLUSTER_PROJECT_NUMBER@cloudservices.gserviceaccount.com \
        --role="roles/iam.serviceAccountTokenCreator"
     
    • O exemplo de comando a seguir concede à conta de serviço do agente de serviço de APIs do Google No projeto de cluster, o papel Criador de token da conta de serviço no nível da conta de serviço da VM:
    gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \
        --member=serviceAccount:CLUSTER_PROJECT_NUMBER@cloudservices.gserviceaccount.com \
        --role="roles/iam.serviceAccountTokenCreator"
     
  6. Conceda Conta de serviço do agente de serviço do Compute Engine no projeto do cluster o criador de tokens da conta de serviço no projeto da conta de serviço ou, para um controle mais granular, a conta de serviço da VM personalizada no projeto da conta de serviço. Ao fazer isso, você concede à conta de serviço do agente de serviço do Compute Agent no cluster projetar a capacidade de criar tokens para o serviço de VM personalizado do Dataproc no projeto da conta de serviço.

    Para mais informações: consulte Gerenciar o acesso a projetos, pastas e organizações conceder papéis no nível do projeto e Gerenciar o acesso às contas de serviço conceder papéis no nível da conta de serviço.

    Exemplos da CLI gcloud:

    • O exemplo de comando a seguir concede à conta de serviço do agente de serviço do Compute Engine No projeto de cluster, o papel de Criador de token da conta de serviço para envolvidos no projeto:
    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \
        --role="roles/iam.serviceAccountTokenCreator"
     
    • O exemplo de comando a seguir concede à conta de serviço do agente de serviço do Compute Engine No projeto de cluster, o papel Criador de token da conta de serviço no nível da conta de serviço da VM:
    gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \
        --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \
        --role="roles/iam.serviceAccountTokenCreator"
     

Crie o cluster

A seguir