Criar e executar jobs como um usuário não raiz

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

  1. 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.
  2. Se ainda não tiver feito isso, ative a API Login do SO executando o seguinte comando:

    gcloud services enable oslogin.googleapis.com
    
  3. 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:

    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.

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