Este documento explica como especificar a conta de serviço de um job do lote, o que influencia os recursos e aplicativos que as VMs de um job podem acessar. Se você não especificar uma conta de serviço personalizada, os jobs vão usar a conta de serviço padrão do Compute Engine, que é anexada automaticamente a todas as VMs em um projeto por padrão. Portanto, usar uma conta de serviço personalizada oferece maior controle ao gerenciar as permissões de um job e é uma prática recomendada para limitar privilégios.
Saiba mais sobre a conta de serviço de um job.
Antes de começar
- Se você nunca usou o Batch, consulte Começar a usar o Batch e ative o Batch concluindo os pré-requisitos para projetos e usuários.
-
Para receber as permissões necessárias para controlar o acesso a jobs que usam contas de serviço personalizadas, peça ao administrador para conceder a você os seguintes papéis do IAM:
-
Para criar um job:
-
Editor de jobs em lote (
roles/batch.jobsEditor
) no projeto -
Usuário da conta de serviço (
roles/iam.serviceAccountUser
) na conta de serviço do job, que é a conta de serviço padrão do Compute Engine
-
Editor de jobs em lote (
-
Para conferir as contas de serviço:
Acessar Contas de serviço (
roles/iam.serviceAccountViewer
) no projeto
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.
-
Para criar um job:
-
Identifique a conta de serviço que você quer usar para esse job. Verifique se essa conta de serviço tem todas as permissões necessárias para executar o job.
Saiba mais sobre como visualizar contas de serviço e as permissões necessárias para a conta de serviço de um job.
Criar um job que usa uma conta de serviço personalizada
Para criar um job que usa uma conta de serviço personalizada, selecione um dos seguintes métodos:
- Especifique a conta de serviço personalizada na definição do job, conforme mostrado nesta seção.
- Use um modelo de instância do Compute Engine e especifique a conta de serviço personalizada no modelo de instância e na definição do job.
Esta seção mostra um exemplo de como criar um job que usa uma conta de serviço personalizada. É possível criar um job que usa uma conta de serviço personalizada usando a CLI gcloud, a API Batch, Java, Node.js ou Python.
gcloud
Para criar um job que usa uma conta de serviço personalizada com a
CLI gcloud, use o comando gcloud batch jobs submit
e especifique a conta de serviço personalizada no arquivo de configuração do job.
Por exemplo, para criar um job de script que usa uma conta de serviço personalizada:
Crie um arquivo JSON no diretório atual chamado
hello-world-service-account.json
com o seguinte conteúdo:{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello World! This is task $BATCH_TASK_INDEX." } } ] } } ], "allocationPolicy": { "serviceAccount": { "email": "SERVICE_ACCOUNT_EMAIL" } } }
em que
SERVICE_ACCOUNT_EMAIL
é o endereço de e-mail da sua conta de serviço. Se o camposerviceAccount
não for especificado, o valor será definido como a conta de serviço padrão do Compute Engine.Execute este comando:
gcloud batch jobs submit example-service-account-job \ --location us-central1 \ --config hello-world-service-account.json
API
Para criar um job que use uma conta de serviço personalizada com a
API Batch, use o
método jobs.create
e especifique sua conta de serviço personalizada no campo allocationPolicy
.
Por exemplo, para criar um job de script que usa uma conta de serviço personalizada, faça a seguinte solicitação:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/jobs?job_id=example-service-account-job
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello World! This is task $BATCH_TASK_INDEX."
}
}
]
}
}
],
"allocationPolicy": {
"serviceAccount": {
"email": "SERVICE_ACCOUNT_EMAIL"
}
}
}
Substitua:
PROJECT_ID
: o ID do projeto do seu projeto.SERVICE_ACCOUNT_EMAIL
: o endereço de e-mail da sua conta de serviço. Se o camposerviceAccount
não for especificado, o valor será definido como a conta de serviço padrão do Compute Engine.
Java
Node.js
Python
A seguir
- Se você tiver problemas para criar ou executar um job, consulte Solução de problemas.
- Conferir jobs e tarefas.
- Saiba mais sobre as opções de criação de jobs.