Este documento descreve como criar e executar um job do Batch como um usuário não raiz.
Por padrão, o Batch executa os executáveis como o usuário raiz. Se você quiser que o lote 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 aos requisitos de segurança, crie um lote de trabalho que use o Login do SO. Quando você ativa o Login do SO em um job em lote, 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 de pelo usuário raiz.
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.
Se ainda não tiver feito isso, ative a API Login do SO 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 que 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 é a conta de serviço padrão do Compute Engine -
Login do SO do Compute (
roles/compute.osLogin
) ou Login de administrador do SO do Compute (roles/compute.osAdminLogin
) no projeto -
Se você pertence a 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 por meio de papéis personalizados ou de outros papéis predefinidos.
-
Editor de jobs em lote (
Criar um job que é executado como um usuário não raiz
Crie um job em lote que execute executáveis pela sua própria conta de usuário fazendo o seguinte:
Use a CLI do Google Cloud 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 ao seguinte:
{
"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.
- Conferir jobs e tarefas.
- Saiba mais sobre as opções de criação de jobs.