Autenticação de fluxos de trabalho

Este tópico descreve informações de autenticação para fluxos de trabalho. Há dois tipos de autenticação discutidos nesta página:

Controle de acesso

Para os dois tipos de autenticação, é importante entender os papéis disponíveis dos controles de acesso e de fluxo de trabalho. Os papéis contêm permissões que concedem acesso aos recursos no Google Cloud. Ao criar um aplicativo de produção, conceda a uma identidade apenas os papéis necessários para interagir com as APIs, os recursos ou as funcionalidades aplicáveis do Google Cloud.

Para mais informações sobre os papéis disponíveis de fluxos de trabalho, consulte Controle de acesso de fluxos de trabalho.

Como autenticar para fluxos de trabalho

Os fluxos de trabalho são compatíveis com os seguintes métodos de autenticação para acessar recursos de fluxos de trabalho.

Contas de serviço

As contas de serviço são recomendadas em quase todos os casos de uso, seja durante o desenvolvimento local ou em um aplicativo de produção. 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. É possível conceder a uma conta de serviço um ou mais papéis que permitam o acesso a recursos no Google Cloud, incluindo recursos de fluxos de trabalho.

Como fazer solicitações autenticadas de dentro de um fluxo de trabalho

Para enviar solicitações autenticadas, o fluxo de trabalho precisa estar associado a uma conta de serviço que recebeu um ou mais papéis de gerenciamento de identidade e acesso contendo as permissões necessárias. Também é preciso adicionar explicitamente informações de autenticação à definição do fluxo de trabalho. Por padrão, as solicitações HTTP não contêm tokens de identidade ou de acesso por motivos de segurança.

Cada fluxo de trabalho criado é associado a uma conta de serviço 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.

Ao fazer solicitações para outros serviços do Google Cloud, o fluxo de trabalho precisa estar associado a uma conta de serviço que tenha as permissões corretas para acessar os recursos solicitados.

Para fazer uma solicitação autenticada em um fluxo de trabalho, você pode usar OAuth 2.0 ou OpenID Connect (OIDC) dependendo do serviço que está chamando.

Use o OAuth 2.0 para se conectar com todas as APIs do Google Cloud, como a API do Compute Engine ou a API do Firestore. Qualquer API que termine com um nome de host de .googleapis.com aceita esse método de autenticação.

Use o OIDC para se conectar ao Cloud Functions ou ao Cloud Run.

Como verificar a conta de serviço associada a um fluxo de trabalho

Para verificar qual conta de serviço está associada a um fluxo de trabalho específico:

Console

  1. Acesse a página "Fluxos de trabalho" no Console do Google Cloud:
    Acessar a página "Fluxos de trabalho"

  2. Na página "Fluxos de trabalho" no console, selecione o fluxo de trabalho a ser direcionado para a página de detalhes dele.

  3. Na página Detalhes do fluxo de trabalho, selecione a guia Definição para exibir os detalhes.

  4. A guia Definição exibe a conta de serviço associada ao fluxo de trabalho.

gcloud

  1. Abra um terminal.

  2. Digite o seguinte comando:

    gcloud workflows describe MY_WORKFLOW
    

    Substitua MY_WORKFLOW pelo nome do fluxo de trabalho.

  3. O comando retorna a conta de serviço associada com a descrição completa do fluxo de trabalho:

    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: ...
    

Como fazer solicitações autenticadas para as APIs do Google

A conta de serviço de um fluxo de trabalho pode gerar tokens OAuth 2.0 que o fluxo de trabalho pode usar para se autenticar em qualquer API do Google. Quando você usa esse método de autenticação, o fluxo de trabalho é autenticado como a conta de serviço associada a ele. Para fazer uma solicitação HTTP usando o protocolo OAuth 2.0, adicione uma seção auth à seção args da definição do fluxo de trabalho, depois de especificar o URL. Neste exemplo, uma solicitação é enviada à API do Compute Engine para interromper uma VM:

- step_A:
    call: http.post
    args:
        url: https://compute.googleapis.com/compute/v1/projects/myproject1234/zones/us-central1-b/instances/myvm001/stop
        auth:
            type: OAuth2
            [scope:]

O parâmetro scope é opcional, mas pode ser usado para especificar o escopo do OAuth 2.0 para o token. Por padrão, ele está definido como https://www.googleapis.com/auth/cloud-platform.

Como fazer solicitações ao Cloud Run ou ao Cloud Functions

Ao fazer solicitações ao Cloud Run ou ao Cloud Functions, use o OIDC para autenticar.

Para fazer uma solicitação HTTP usando o OIDC, adicione uma seção auth à seção args da definição do fluxo de trabalho, depois de especificar o URL. Neste exemplo, uma solicitação é enviada para invocar um Cloud Functions:

- step_A:
    call: http.get
    args:
        url: https://us-central1-project.cloudfunctions.net/functionA
        query:
            firstNumber: 4
            secondNumber: 6
            operation: sum
        auth:
            type: OIDC
            [audience:]

O parâmetro audience é opcional, mas pode ser usado para especificar o público-alvo do OIDC do token. Por padrão, ele é definido como o mesmo valor que url.

A seguir