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.
Conceda autorizações ao nível do projeto ao principal que invoca as APIs Eventarc (por exemplo, o criador do acionador do Eventarc):
- 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.
- 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.
Conceda autorizações de acionador do Eventarc à conta de serviço do acionador:
- 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.
- A função Workflows Invoker permite que o seu acionador do Eventarc inicie uma execução do fluxo de trabalho.
Conceda autorizações aos agentes de serviços Google:
- Se estiver a criar um acionador para eventos diretos do Cloud Storage, conceda a função de Publicador do Pub/Sub.
- 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.
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 valoresPRINCIPAL_TYPE
possíveis, consulte a referência de associação de políticas.
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.
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çoDISPLAY_NAME
: um nome da conta de serviço a apresentar na consola Google Cloud
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.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.
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)'
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?
Saiba mais sobre as opções de controlo de acesso no Eventarc.
Saiba como conceder uma autorização de fluxo de trabalho para aceder a Google Cloud recursos.
Saiba mais sobre as práticas recomendadas para usar contas de serviço.
Saiba como descrever um acionador e validar a respetiva conta de serviço associada.