Neste documento, descrevemos como criar e executar um job do Batch como um usuário não raiz.
Por padrão, o Batch executa executáveis como usuário raiz. Se você quiser que o Batch execute runnables como um usuário não raiz, por exemplo, para executar um aplicativo que não permite usuários raiz ou para atender a requisitos de segurança, crie um job do Batch que use o Login do SO. Quando você ativa o Login do SO em um job do Batch, ele configura uma conta de usuário para você nas VMs em que o job é executado. Todos os executáveis no job são executados pela sua conta de usuário na VM em vez do usuário root.
Antes de começar
- Se você nunca usou o Batch, leia Começar a usar o Batch e ative o serviço concluindo os pré-requisitos para projetos e usuários.
Se você ainda não fez isso, ative a API OS Login executando o seguinte comando:
gcloud services enable oslogin.googleapis.com
-
Para receber as permissões necessárias para criar e executar um job como um usuário não raiz, peça ao administrador para conceder a você os seguintes papéis do IAM:
-
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 por padrão é a conta de serviço padrão do Compute Engine -
Login no SO do Compute (
roles/compute.osLogin
) ou Login de administrador no SO do Compute (roles/compute.osAdminLogin
) no projeto -
Se você for de uma organização diferente do projeto:
Usuário externo do login do SO do Compute (
roles/compute.osLoginExternalUser
) na organização do 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 usando papéis personalizados ou outros papéis predefinidos.
-
Editor de jobs em lote (
Criar um job que é executado como um usuário não raiz
Crie um job do Batch que execute executáveis na sua própria conta de usuário fazendo o seguinte:
Use a Google Cloud CLI ou a API REST para criar um job que inclua o campo runAsNonRoot
definido como true
no corpo principal do arquivo JSON:
"runAsNonRoot": true
Por exemplo, um job que executa executáveis como um usuário não raiz teria um arquivo de configuração JSON semelhante a este:
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello World! This is task $BATCH_TASK_INDEX executed by $(whoami)."
}
}
]
},
"taskCount": 3,
"runAsNonRoot": true
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
A seguir
- Se você tiver problemas para criar ou executar um job, consulte Solução de problemas.
- Ver jobs e tarefas.
- Saiba mais sobre outras opções de criação de jobs.