Funções e autorizações para alvos de fluxos de trabalho

Este documento mostra como conceder funções e autorizações da gestão de identidade e de acesso (IAM) para suportar eventos de encaminhamento a partir do Google Cloud e de outras origens para fluxos de trabalho de destino através do Eventarc.

  1. Conceda autorizações ao nível do projeto ao principal que invoca as APIs Eventarc (por exemplo, o criador do acionador do Eventarc):

    1. A função Eventarc Admin permite-lhe ter controlo total sobre todos os recursos do Eventarc, incluindo a especificação de uma conta de serviço para o acionador quando o cria.
    2. A função utilizador da conta de serviço permite que um principal use a identidade e use uma conta de serviço. A conta de serviço está associada a um acionador do Eventarc e representa a identidade do acionador.
  2. Conceda autorizações de acionador do Eventarc à conta de serviço do acionador:

    1. A função Eventarc Event Receiver permite que o seu acionador do Eventarc receba eventos de fornecedores de eventos. Não precisa de conceder a função se estiver a encaminhar eventos diretos do Cloud Pub/Sub.
    2. A função Workflows Invoker permite que o seu acionador do Eventarc inicie uma execução do fluxo de trabalho.
  3. Conceda autorizações aos agentes de serviços Google:

    1. Se estiver a criar um acionador para eventos diretos do Cloud Storage, conceda a função de Publicador do Pub/Sub.
    2. Se ativou o agente de serviço do Cloud Pub/Sub a 8 de abril de 2021 ou antes, conceda a função Criador de tokens de conta de serviço.

Para mais informações sobre a concessão de funções de IAM, consulte o artigo Gerir acesso. Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

Conceda autorizações ao nível do projeto

Se for o criador do projeto, é-lhe atribuída a função básica de proprietário (roles/owner). Por predefinição, esta função inclui as autorizações necessárias para acesso total à maioria dosGoogle Cloud recursos. Caso contrário, as funções necessárias têm de ser concedidas por um administrador no recurso adequado ao principal adequado (também conhecido como membro).

Por exemplo, um principal pode ser uma Conta Google (para utilizadores finais) ou uma conta de serviço (para aplicações e cargas de trabalho de computação). Cada principal tem o seu próprio identificador, que é normalmente um endereço de email.

  1. A função de administrador do Eventarc (roles/eventarc.admin) permite-lhe ter controlo total sobre todos os recursos do Eventarc.

    Conceda a função no projeto:

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

    Substitua o seguinte:

    • PROJECT_ID: o ID do seu Google Cloud projeto.
    • PRINCIPAL: um identificador do criador do acionador que normalmente tem o seguinte formato: PRINCIPAL_TYPE:ID. Por exemplo, user:my-user@example.com. Para ver uma lista completa dos valores PRINCIPAL_TYPE possíveis, consulte a referência de associação de políticas.
  2. A função de utilizador da conta de serviço (roles/iam.serviceAccountUser) permite que um principal execute operações como uma conta de serviço.

    Quando cria um acionador do Eventarc ou implementa um fluxo de trabalho, precisa desta função para poder associar uma conta de serviço gerida pelo utilizador ao acionador ou ao fluxo de trabalho, e que representa a respetiva identidade. Para mais informações, consulte o artigo Funções para autenticação de contas de serviço.

    Pode conceder a função no projeto para permitir que o principal se faça passar por várias contas de serviço ou conceder a função na conta de serviço para permitir que o principal se faça passar apenas por uma conta de serviço específica.

    Conceda a função no projeto:

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

    Em alternativa, conceda a função 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 o seguinte:

    • SERVICE_ACCOUNT_PROJECT_ID: o ID do projeto Google Cloud que contém a conta de serviço.
    • SERVICE_ACCOUNT_NAME: o nome da conta de serviço. ## Conceda autorizações do acionador do Eventarc

Cada acionador do Eventarc está associado a uma conta de serviço do IAM no momento em que o acionador é criado. Pode especificar uma conta de serviço gerida pelo utilizador que o acionador usa como identidade predefinida. Se não especificar uma conta de serviço durante a criação do acionador, o acionador usa a conta de serviço predefinida do Compute Engine para a sua identidade.

Recomendamos que crie a sua própria conta de serviço gerida pelo utilizador para ter maior controlo e flexibilidade na gestão do seu acionador.

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

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

    Substitua o seguinte:

    • SERVICE_ACCOUNT_NAME: o nome da conta de serviço. Este nome é apresentado no endereço de email que identifica a conta de serviço.
    • DESCRIPTION: uma descrição opcional da conta de serviço
    • DISPLAY_NAME: um nome da conta de serviço a apresentar na consola Google Cloud
  2. Conceda a função Eventarc Event Receiver (roles/eventarc.eventReceiver) no projeto à conta de serviço associada ao acionador do Eventarc para que possa receber eventos de fornecedores de eventos.

    Tenha em atenção que não precisa de conceder a função Eventarc Event Receiver se estiver a encaminhar 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 sua conta de serviço que anotou no passo anterior.

  3. Conceda a função Workflows Invoker (roles/workflows.invoker) no projeto à conta de serviço associada ao seu acionador do Eventarc para que 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 sua conta de serviço que anotou anteriormente.

Conceda autorizações aos agentes de serviços Google

Alguns Google Cloud serviços têm agentes de serviço que permitem aos serviços aceder aos seus recursos. Se uma API exigir um agente de serviço, a Google cria o agente de serviço depois de ativar e usar a API.

  1. Se estiver a criar um acionador para eventos diretos do Cloud Storage, para suportar a publicação de mensagens num tópico, conceda a função de publicador do Pub/Sub (roles/pubsub.publisher) no projeto ao agente do 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 seu Google Cloud número do projeto. Pode encontrar o número do projeto na página Boas-vindas da Google Cloud consola ou executando o seguinte comando:

    gcloud projects describe PROJECT_ID --format='value(projectNumber)'
  2. Se ativou o agente do serviço Cloud Pub/Sub a 8 de abril de 2021 ou antes, para suportar pedidos push do Pub/Sub autenticados, conceda a função Criador de tokens de contas de serviço (roles/iam.serviceAccountTokenCreator) no projeto ao agente do serviço Pub/Sub. Caso contrário, esta função é concedida por predefinição:

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

    O que se segue?