Controlar o acesso a uma vaga usando uma conta de serviço personalizada

Neste documento, explicamos como especificar a conta de serviço de um job em lote, o que influencia os recursos e aplicativos que as VMs de um job podem acessar. Se você não especificar uma conta de serviço personalizada, os jobs usarão a conta de serviço padrão do Compute Engine, que é automaticamente anexada a todas as VMs em um projeto por padrão. Portanto, o uso de uma conta de serviço personalizada fornece maior controle no gerenciamento das permissões de um job e é uma prática recomendada para limitar o privilégio.

Antes de começar

Criar um job que usa uma conta de serviço personalizada

Antes de criar um job que use uma conta de serviço personalizada, verifique se a conta de serviço que você planeja usar tem as permissões necessárias para criar jobs em lote para seu projeto. Para mais informações, consulte Ativar Batch para um projeto.

Para criar um job que use uma conta de serviço personalizada, selecione um dos seguintes métodos:

  • Especifique a conta de serviço personalizada na definição do job, conforme mostrado nesta seção.
  • Use um modelo de instância do Compute Engine e especifique a conta de serviço personalizada no modelo de instância e na definição do job.

Nesta seção, fornecemos um exemplo de como criar um job que usa uma conta de serviço personalizada. É possível criar um job que use uma conta de serviço personalizada por meio da CLI gcloud ou da API Batch.

gcloud

Para criar um job que use uma conta de serviço personalizada usando a CLI gcloud, use o comando gcloud batch jobs submit e especifique a conta de serviço personalizada no arquivo de configuração do job.

Por exemplo, para criar um job de script que use uma conta de serviço personalizada:

  1. Crie um arquivo JSON no diretório atual chamado hello-world-service-account.json com o seguinte conteúdo:

    {
        "taskGroups": [
            {
                "taskSpec": {
                    "runnables": [
                        {
                            "script": {
                                "text": "echo Hello World! This is task $BATCH_TASK_INDEX."
                            }
                        }
                    ]
                }
            }
        ],
        "allocationPolicy": {
            "serviceAccount": {
                "email": "SERVICE_ACCOUNT_EMAIL"
            }
        }
    }
    

    em que SERVICE_ACCOUNT_EMAIL é o endereço de e-mail da sua conta de serviço. Se o campo serviceAccount não for especificado, o valor será definido como a conta de serviço padrão do Compute Engine.

  2. Execute este comando:

    gcloud batch jobs submit example-service-account-job \
      --location us-central1 \
      --config hello-world-service-account.json
    

API

Para criar um job que use uma conta de serviço personalizada usando a API em lote, use o método jobs.create e especifique sua conta de serviço personalizada no campo allocationPolicy.

Por exemplo, para criar um job de script que use uma conta de serviço personalizada, faça a seguinte solicitação:

POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/jobs?job_id=example-service-account-job

{
    "taskGroups": [
        {
            "taskSpec": {
                "runnables": [
                    {
                        "script": {
                            "text": "echo Hello World! This is task $BATCH_TASK_INDEX."
                        }
                    }
                ]
            }
        }
    ],
    "allocationPolicy": {
        "serviceAccount": {
            "email": "SERVICE_ACCOUNT_EMAIL"
        }
    }
}

Substitua:

A seguir