Conceder uma permissão de fluxo de trabalho para acessar recursos do Google Cloud

Os fluxos de trabalho usam contas de serviço para conceder aos fluxos de trabalho acesso aos recursos do Google Cloud. As contas de serviço são contas especiais que servem como identidade de uma pessoa, como uma função, um aplicativo ou uma VM. Eles oferecem uma forma de autenticar essas pessoas. Uma conta de serviço, ou principal, pode ser considerada uma identidade e um recurso.

  • Ao pensar em uma conta de serviço como uma identidade, é possível conceder um papel a uma conta de serviço, permitindo que ela acesse um recurso (como um fluxo de trabalho).

  • Ao pensar em uma conta de serviço como um recurso, é possível conceder papéis a outros usuários para acessar ou gerenciar essa conta de serviço.

Uma conta de serviço é identificada pelo endereço de e-mail dela, que é exclusivo.

Para mais informações sobre como configurar a autenticação em um aplicativo de produção, consulte Como autenticar como uma conta de serviço.

Conta padrão de serviço

Todo fluxo de trabalho é associado a uma conta de serviço do Identity and Access Management (IAM) no momento em que o fluxo de trabalho é criado. Se você não especificar uma conta de serviço durante a criação do fluxo de trabalho, o fluxo de trabalho usará a conta de serviço padrão do Compute Engine como identidade. É possível verificar a conta de serviço associada de um fluxo de trabalho. Neste documento, consulte Verificar a conta de serviço associada a um fluxo de trabalho.

Recomendamos o uso da conta de serviço padrão somente para teste e desenvolvimento.

Permissões da conta de serviço

Como as contas de serviço são identidades, é possível permitir que uma conta de serviço acesse recursos em seu projeto ao conceder a ela um papel, assim como você faria para qualquer outro principal. Por exemplo, se quiser permitir que o fluxo de trabalho envie registros para o Cloud Logging, verifique se a conta de serviço que executa o fluxo de trabalho recebeu um papel que inclua a permissão logging.logEntries.create (por exemplo, o papel Logs Writer).

A conta de serviço do fluxo de trabalho não exige o papel workflows.invoker, a menos que o fluxo de trabalho se invoque ou outros fluxos de trabalho (ou seja, crie novas execuções de fluxo de trabalho). Para mais informações, consulte Invocar fluxos de trabalho.

Para mais informações sobre como conceder papéis aos participantes, incluindo contas de serviço, consulte Como conceder, alterar e revogar acesso.

Como anexar contas de serviço a recursos

Para criar um recurso e anexar uma conta de serviço, você precisa de permissões para criar esse recurso e personificar a conta de serviço que será anexada ao recurso. A permissão para representar a conta de serviço e acessar indiretamente todos os recursos que a conta de serviço pode acessar é fornecida por qualquer papel que inclua a permissão iam.serviceAccounts.actAs.

Para mais informações, consulte Como gerenciar a representação de uma conta de serviço.

Invocar o Cloud Functions (segunda geração)

No Cloud Functions (segunda geração), as permissões de invocação estão disponíveis ao gerenciar o serviço subjacente do Cloud Run. Se o fluxo de trabalho invocar um serviço do Cloud Functions (segunda geração), não será necessário conceder à conta de serviço do autor da chamada o papel Invocador do Cloud Functions (roles/cloudfunctions.invoker). Em vez disso, você precisa conceder o papel Invocador do Cloud Run (roles/run.invoker).

Para mais informações, consulte Diferenças no Cloud Functions (segunda geração).

Verificar a conta de serviço associada a um fluxo de trabalho

É possível verificar qual conta de serviço está associada a um fluxo de trabalho específico.

Console

  1. No Console do Google Cloud, acesse a página Fluxos de trabalho:
    Acessar o Workflows

  2. Na página Fluxos de trabalho, clique no nome do fluxo de trabalho.

  3. Na página Detalhes do fluxo de trabalho, clique na guia Detalhes.

    A conta de serviço associada ao fluxo de trabalho é exibida.

gcloud

  1. Abra um terminal.

  2. Digite este comando:

    gcloud workflows describe MY_WORKFLOW
    

    Substitua MY_WORKFLOW pelo nome do fluxo de trabalho.

    Uma descrição completa do fluxo de trabalho, incluindo a conta de serviço associada, é retornada. Exemplo:

    createTime: '2020-06-05T23:45:34.154213774Z'
    name: projects/myProject/locations/us-central1/workflows/myWorkflow
    serviceAccount: projects/my-project/serviceAccounts/012345678901-compute@developer.gserviceaccount.com
    sourceContents: [...]

A seguir