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

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

  1. 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.
  2. Se você ainda não fez isso, ative a API OS Login 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 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 usando papéis personalizados ou outros papéis predefinidos.

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