Papéis e permissões para destinos do Workflows

Neste documento, mostramos como conceder papéis e permissões do Identity and Access Management (IAM) para dar suporte ao encaminhamento de eventos do Google Cloud e de outras origens para fluxos de trabalho de destino usando o Eventarc.

  1. Conceda permissões em todo o projeto ao principal que invoca as APIs Eventarc (por exemplo, o criador de gatilhos do Eventarc):

    1. O papel de Administrador do Eventarc oferece controle total sobre todos os recursos do Eventarc, incluindo a especificação de uma conta de serviço para o gatilho quando ele é criado.
    2. O papel Usuário da conta de serviço permite que um principal represente e use uma conta de serviço. A conta de serviço está associada a um gatilho do Eventarc e representa a identidade desse gatilho.
  2. Conceda ao gatilho do Eventarc permissões com relação à conta de serviço do gatilho:

    1. O papel Receptor de eventos do Eventarc permite que o gatilho do Eventarc receba eventos de provedores de eventos. Você não precisa conceder o papel ao fazer o encaminhamento de eventos diretos do Cloud Pub/Sub.
    2. O papel de Invocador do Workflows permite que o gatilho do Eventarc inicie uma execução de fluxo de trabalho.
  3. Conceda permissões aos agentes de serviço do Google:

    1. Ao criar um gatilho para eventos diretos do Cloud Storage, conceda o papel Publicador do Pub/Sub.
    2. Se você tiver ativado o agente de serviço do Cloud Pub/Sub em 8 de abril de 2021 ou antes dessa data, conceda o papel Criador de token da conta de serviço.

Para mais informações sobre como conceder papéis, consulte Gerenciar o acesso. Também é possível receber as permissões necessárias com papéis personalizados ou outros papéis predefinidos.

Conceder permissões em todo o projeto

O criador do projeto recebe o papel básico de proprietário (roles/owner). Por padrão, esse papel inclui as permissões necessárias para o acesso total à maioria dos recursos do Google Cloud. Em outros casos, os papéis obrigatórios precisam ser concedidos por um administrador no recurso apropriado para o principal apropriado, também conhecido como membro.

Por exemplo, um principal pode ser uma Conta do Google (para usuários finais) ou uma conta de serviço (para aplicativos e cargas de trabalho de computação). Cada principal tem o próprio identificador, que normalmente é um endereço de e-mail.

  1. O papel de administrador do Eventarc (roles/eventarc.admin) oferece controle total sobre todos os recursos do Eventarc.

    Conceda o papel no projeto:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=PRINCIPAL \
        --role=roles/eventarc.admin

    Substitua:

    • PROJECT_ID: é seu ID do projeto no Google Cloud.
    • PRINCIPAL: um identificador para o criador do gatilho, que geralmente tem o seguinte formato: PRINCIPAL_TYPE:ID. Por exemplo, user:my-user@example.com. Para conferir uma lista completa dos possíveis valores de PRINCIPAL_TYPE, consulte a Referência de vinculação de políticas.
  2. O papel de usuário da conta de serviço (roles/iam.serviceAccountUser) permite que um principal execute operações como uma conta de serviço.

    Ao criar um gatilho do Eventarc ou implantar um fluxo de trabalho, você precisa desse papel para associar uma conta de serviço gerenciada pelo usuário ao gatilho ou fluxo de trabalho que represente a identidade dele. Para mais informações, consulte Papéis para a autenticação da conta de serviço.

    Conceda o papel no projeto para permitir que o principal represente várias contas de serviço ou conceda o papel na conta de serviço para permitir que ele represente apenas uma conta de serviço específica.

    Conceda o papel no projeto:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=PRINCIPAL \
        --role=roles/iam.serviceAccountUser

    Também é possível conceder o papel na conta de serviço:

    gcloud iam service-accounts add-iam-policy-binding \
        projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \
        --member=PRINCIPAL \
        --role=roles/iam.serviceAccountUser

    Substitua:

    • SERVICE_ACCOUNT_PROJECT_ID: o ID do projeto do Google Cloud que contém a conta de serviço.
    • SERVICE_ACCOUNT_NAME: o nome da conta de serviço.

Conceder permissões ao gatilho do Eventarc

Cada gatilho do Eventarc é associado a uma conta de serviço do IAM no momento da criação. É possível especificar uma conta de serviço gerenciada pelo usuário a ser usada pelo gatilho como uma identidade padrão. Se você não especificar uma conta de serviço durante a criação do gatilho, ele usará a conta de serviço padrão do Compute Engine como identidade.

Recomendamos que você crie sua própria conta de serviço gerenciada pelo usuário a fim de ter mais controle e flexibilidade ao gerenciar o gatilho.

  1. Crie uma conta de serviço e anote o nome dela:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \
        --description="DESCRIPTION" \
        --display-name="DISPLAY_NAME"

    Substitua:

    • SERVICE_ACCOUNT_NAME: o nome da conta de serviço. Esse nome aparece no endereço de e-mail que identifica a conta de serviço.
    • DESCRIPTION: uma descrição opcional do serviço.
    • DISPLAY_NAME: um nome de conta de serviço a ser exibido no Console do Google Cloud
  2. Conceda o papel Receptor de eventos do Eventarc (roles/eventarc.eventReceiver) no projeto à conta de serviço associada ao gatilho do Eventarc para que ela possa receber eventos de provedores de eventos.

    Não é necessário conceder o papel Receptor de eventos do Eventarc ao fazer o encaminhamento de eventos diretos do Cloud Pub/Sub.

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/eventarc.eventReceiver

    Substitua SERVICE_ACCOUNT_NAME pelo nome da conta de serviço que você anotou na etapa anterior.

  3. Conceda o papel de Invocador do Workflows (roles/workflows.invoker) no projeto à conta de serviço associada ao gatilho do Eventarc para que ela possa iniciar a execução do fluxo de trabalho.

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/workflows.invoker

    Substitua SERVICE_ACCOUNT_NAME pelo nome da conta de serviço que você anotou anteriormente.

Conceder permissões aos agentes de serviço do Google

Alguns serviços do Google Cloud têm agentes de serviços que permitem que os serviços acessem seus recursos. Se uma API exigir um agente de serviço, o Google criará esse agente depois que você ativar e começar a usar a API.

  1. Se você estiver criando um gatilho para eventos diretos do Cloud Storage, a fim de dar suporte à publicação de mensagens em um tópico, conceda o papel de Publicador do Pub/Sub (roles/pubsub.publisher) no projeto para o agente de serviço do Cloud Storage:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com \
        --role=roles/pubsub.publisher

    Substitua PROJECT_NUMBER pelo número do projeto do Google Cloud. Encontre o número do projeto na página Boas-vindas do console do Google Cloud ou executando o seguinte comando:

    gcloud projects describe PROJECT_ID --format='value(projectNumber)'
  2. Se você tiver ativado o agente de serviço do Cloud Pub/Sub em 8 de abril de 2021 ou antes dessa data, a fim de dar suporte a solicitações de push autenticadas do Pub/Sub, conceda o papel de criador de tokens da conta de serviço (roles/iam.serviceAccountTokenCreator) no projeto ao agente de serviço do Pub/Sub. Caso contrário, esse papel será concedido por padrão:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \
        --role=roles/iam.serviceAccountTokenCreator

A seguir