Este documento mostra como conceder funções e autorizações da gestão de identidade e de acesso (IAM) para suportar eventos de encaminhamento através do Eventarc a partir doGoogle Cloud e de outras origens para destinos do GKE, incluindo os pontos finais públicos de serviços privados e públicos executados num cluster do GKE.
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 Subscritor do Pub/Sub permite que o seu acionador do Eventarc consuma mensagens do Pub/Sub e anexe subscrições a um tópico.
- A função Monitoring Metric Writer permite que o encaminhador de eventos do Eventarc escreva métricas através do Cloud Monitoring e de outros sistemas que fornecem métricas.
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, precisa desta função para poder associar uma conta de serviço gerida pelo utilizador ao acionador 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 Subscritor do Pub/Sub (
roles/pubsub.subscriber
) no projeto à conta de serviço associada ao seu acionador do Eventarc para que possa consumir mensagens do Pub/Sub e anexar subscrições a um tópico.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/pubsub.subscriber
Substitua
SERVICE_ACCOUNT_NAME
pelo nome da sua conta de serviço que anotou anteriormente.Conceda a função de escritor de métricas de monitorização (
roles/monitoring.metricWriter
) no projeto à conta de serviço associada ao seu acionador do Eventarc para que o encaminhador de eventos do Eventarc possa escrever métricas através do Cloud Monitoring e de outros sistemas que fornecem métricas.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.metricWriter
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 criar políticas de IAM para o GKE.
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.