Crie e execute tarefas como um utilizador não raiz

Este documento descreve como criar e executar uma tarefa em lote como um utilizador não principal.

Por predefinição, o Batch executa os runnables como utilizador root. Se quiser que o Batch execute ficheiros executáveis como um utilizador sem acesso root, por exemplo, para executar uma aplicação que não permita utilizadores com acesso root ou para cumprir os requisitos de segurança, crie uma tarefa do Batch que use o início de sessão do SO. Quando ativa o Início de sessão do SO num trabalho em lote, o Início de sessão do SO configura uma conta de utilizador para si nas VMs em que o seu trabalho é executado. Em seguida, todos os executáveis na tarefa são executados pela sua conta de utilizador na VM em vez de pelo utilizador root.

Antes de começar

  1. Se nunca usou o Batch, reveja o artigo Comece a usar o Batch e ative o Batch concluindo os pré-requisitos para projetos e utilizadores.
  2. Se ainda não o fez, ative a API OS Login executando o seguinte comando:

    gcloud services enable oslogin.googleapis.com
    
  3. Para receber as autorizações de que precisa para criar e executar uma tarefa como utilizador não raiz, peça ao seu administrador que lhe conceda as seguintes funções de IAM:

    Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

    Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

Crie uma tarefa que seja executada como um utilizador não root

Crie uma tarefa em lote que execute ficheiros executáveis através da sua própria conta de utilizador fazendo o seguinte:

Use a CLI Google Cloud ou a API REST para criar uma tarefa que inclua o campo runAsNonRoot definido como true no corpo principal do ficheiro JSON:

"runAsNonRoot": true

Por exemplo, uma tarefa que executa ficheiros executáveis como um utilizador não raiz teria um ficheiro 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"
    }
}

O que se segue?