Neste documento, mostramos como definir papéis, permissões e sinalizações do Identity and Access Management (IAM) para receber eventos do Eventarc do Google Cloud e fontes de terceiros e entregar os eventos para serviços segmentados do Cloud Run autenticado ou não autenticado.
Esta página mostra como fazer o seguinte:
- Concede papéis específicos do IAM ao usuário.
- Concede papéis e permissões específicas à conta de serviço do gatilho. O Eventarc usa uma conta de serviço fornecida pelo cliente como identidade do gatilho.
- Se você ativou a conta de serviço do Pub/Sub até 8 de abril
de 2021, conceda o papel
iam.serviceAccountTokenCreator
à conta de serviço do Pub/Sub: - Se você usar a CLI do Google Cloud, defina a sinalização do Cloud Run adequadamente ao implantar imagens de contêiner ou revisões de um repositório de origem no Cloud Run.
Consulte Controle de acesso para saber mais sobre as opções de controle de acesso no Eventarc.
Tipos e funções de eventos do Eventarc
O Eventarc é compatível com gatilhos nos seguintes tipos de evento:
- Eventos de registros de auditoria do Cloud: o Eventarc recebe eventos de origens do Google Cloud usando os registros de auditoria do Cloud.
- Eventos diretos: o Eventarc recebe eventos diretos, como uma atualização de um bucket do Cloud Storage, de origens do Google Cloud.
- Eventos do Cloud Pub/Sub: o Eventarc recebe eventos de fontes de terceiros usando notificações do Pub/Sub.
Invocações autenticadas do Cloud Run
Dependendo do tipo de evento, conceda os papéis, as permissões e as sinalizações apropriadas do IAM para um serviço de destino autenticado do Cloud Run:
Registros de auditoria do Cloud
Para garantir que você receba eventos originados no Google Cloud enquanto envia para um destino autenticado do Cloud Run:
Papéis do usuário
Conceda o
papel de Administrador do Eventarc
(roles/eventarc.admin
) ao usuário:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role='roles/eventarc.admin'
Substitua os seguintes valores:
PROJECT_ID
: o ID do projeto do Google Cloud.PRINCIPAL
é o membro para quem a vinculação deve ser adicionada. Ele precisa estar no formatouser|group|serviceAccount:email
oudomain:domain
.Exemplos:
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
edomain:example.domain.com
Conceda o
papel de Conta de serviço
(roles/iam.serviceAccountUser
) ao usuário:
gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
Substitua os seguintes valores:
PROJECT_ID
: o ID do projeto do Google Cloud.SERVICE_ACCOUNT_ID
: o ID da conta de serviço.PRINCIPAL
é o membro para quem a vinculação deve ser adicionada. Ele precisa estar no formatouser|group|serviceAccount:email
oudomain:domain
.Exemplos:
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
edomain:example.domain.com
Papéis da conta de serviço do gatilho
Conceda o
papel de invocador do Cloud Run
(roles/run.invoker
) à conta de serviço
do gatilho:
gcloud run services add-iam-policy-binding SERVICE_NAME \ --member='serviceAccount:SERVICE_ACCOUNT_USER_EMAIL' \ --role='roles/run.invoker'
Substitua os seguintes valores:
SERVICE_NAME
: nome do serviço que será invocado por esse gatilho.SERVICE_ACCOUNT_USER_EMAIL
: o endereço de e-mail da conta de serviço padrão.
Conceda o
papel Receptor de eventos do Eventarc
(roles/eventarc.eventReceiver
) à conta de serviço
do gatilho:
gcloud projects add-iam-policy-binding $(gcloud config get-value project) \ --member='serviceAccount:SERVICE_ACCOUNT_USER_EMAIL' \ --role='roles/eventarc.eventReceiver'
Substitua SERVICE_ACCOUNT_USER_EMAIL
pelo endereço de e-mail da
conta de serviço.
Papel da conta de serviço do Pub/Sub
O
papel criador do token da conta de serviço
(roles/iam.serviceAccountTokenCreator
) é concedido por padrão à
conta de serviço do
Pub/Sub.
Importante: se você ativou a conta de serviço do Pub/Sub até 8 de abril de 2021, conceda o papel a seguir à conta de serviço do Pub/Sub por projeto.
export PROJECT_NUMBER="$(gcloud projects describe $(gcloud config get-value project) --format='value(projectNumber)')" gcloud projects add-iam-policy-binding $(gcloud config get-value project) \ --member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com" \ --role='roles/iam.serviceAccountTokenCreator'
Sinalização do Cloud Run
Implante o serviço de receptor de eventos no destino autenticado do Cloud Run usando o seguinte comando:
gcloud run deploy SERVICE_ACCOUNT_ID \ --image gcr.io/$(gcloud config get-value project)/SERVICE_NAME
Substitua os seguintes valores:
SERVICE_ACCOUNT_ID
: o ID da conta de serviço.SERVICE_NAME
: o nome do serviço do Cloud Run.
Eventos diretos
Para garantir que você receba eventos diretamente da origem, como uma atualização de um bucket do Cloud Storage, enquanto entrega para um destino autenticado do Cloud Run:
Papéis do usuário
Conceda o
papel de Administrador do Eventarc
(roles/eventarc.admin
) ao usuário:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role='roles/eventarc.admin'
Substitua os seguintes valores:
PROJECT_ID
: o ID do projeto do Google Cloud.PRINCIPAL
é o membro para quem a vinculação deve ser adicionada. Ele precisa estar no formatouser|group|serviceAccount:email
oudomain:domain
.Exemplos:
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
edomain:example.domain.com
Conceda o
papel de Conta de serviço
(roles/iam.serviceAccountUser
) ao usuário:
gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
Substitua os seguintes valores:
PROJECT_ID
: o ID do projeto do Google Cloud.SERVICE_ACCOUNT_ID
: o ID da conta de serviço.PRINCIPAL
é o membro para quem a vinculação deve ser adicionada. Ele precisa estar no formatouser|group|serviceAccount:email
oudomain:domain
.Exemplos:
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
edomain:example.domain.com
Papel da conta de serviço do Cloud Storage
Se você estiver criando um gatilho para um evento direto do
Cloud Storage, conceda o
papel de Editor do Pub/Sub
(roles/pubsub.publisher
)
à conta de serviço do Cloud Storage:
SERVICE_ACCOUNT="$(gsutil kms serviceaccount -p PROJECT_ID)" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:${SERVICE_ACCOUNT}" --role='roles/pubsub.publisher'
Substitua PROJECT_ID
pelo ID do projeto do Google Cloud.
Papéis da conta de serviço do gatilho
Conceda o
papel de invocador do Cloud Run
(roles/run.invoker
) à conta de serviço
do gatilho:
gcloud run services add-iam-policy-binding SERVICE_NAME \ --member='serviceAccount:SERVICE_ACCOUNT_USER_EMAIL' \ --role='roles/run.invoker'
Substitua os seguintes valores:
SERVICE_NAME
: nome do serviço que será invocado por esse gatilho.SERVICE_ACCOUNT_USER_EMAIL
: o endereço de e-mail da conta de serviço padrão.
Conceda o
papel Receptor de eventos do Eventarc
(roles/eventarc.eventReceiver
) à conta de serviço
do gatilho:
gcloud projects add-iam-policy-binding $(gcloud config get-value project) \ --member='serviceAccount:SERVICE_ACCOUNT_USER_EMAIL' \ --role='roles/eventarc.eventReceiver'
Substitua SERVICE_ACCOUNT_USER_EMAIL
pelo endereço de e-mail da
conta de serviço.
Papel da conta de serviço do Pub/Sub
O
papel criador do token da conta de serviço
(roles/iam.serviceAccountTokenCreator
) é concedido
por padrão à conta de serviço do
Pub/Sub.
Importante: se você ativou a conta de serviço do Pub/Sub até 8 de abril de 2021, conceda o papel a seguir à conta de serviço do Pub/Sub por projeto.
export PROJECT_NUMBER="$(gcloud projects describe $(gcloud config get-value project) --format='value(projectNumber)')" gcloud projects add-iam-policy-binding $(gcloud config get-value project) \ --member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com" \ --role='roles/iam.serviceAccountTokenCreator'
Sinalização do Cloud Run
Implante o serviço de receptor de eventos no destino autenticado do Cloud Run usando o seguinte comando:
gcloud run deploy SERVICE_ACCOUNT_ID \ --image gcr.io/$(gcloud config get-value project)/SERVICE_NAME
Substitua os seguintes valores:
SERVICE_ACCOUNT_ID
pelo ID da conta de serviço.SERVICE_NAME
: nome do serviço do Cloud Run
Tópico do Pub/Sub
Para garantir que você receba eventos de fontes de terceiros enquanto entrega em um destino autenticado do Cloud Run:
Papéis do usuário
Conceda o
papel de Administrador do Eventarc
(roles/eventarc.admin
) ao usuário:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role='roles/eventarc.admin'
Substitua os seguintes valores:
PROJECT_ID
: o ID do projeto do Google Cloud.PRINCIPAL
é o membro para quem a vinculação deve ser adicionada. Ele precisa estar no formatouser|group|serviceAccount:email
oudomain:domain
.Exemplos:
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
edomain:example.domain.com
Conceda o
papel de Conta de serviço
(roles/iam.serviceAccountUser
) ao usuário:
gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
Substitua os seguintes valores:
PROJECT_ID
: o ID do projeto do Google Cloud.SERVICE_ACCOUNT_ID
: o ID da conta de serviço.PRINCIPAL
é o membro para quem a vinculação deve ser adicionada. Ele precisa estar no formatouser|group|serviceAccount:email
oudomain:domain
.Exemplos:
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
edomain:example.domain.com
Papéis da conta de serviço do gatilho
Conceda o
papel de invocador do Cloud Run
(roles/run.invoker
) à conta de serviço
do gatilho:
gcloud run services add-iam-policy-binding SERVICE_NAME \ --member='serviceAccount:SERVICE_ACCOUNT_USER_EMAIL' \ --role='roles/run.invoker'
Substitua os seguintes valores:
SERVICE_NAME
: nome do serviço que será invocado por esse gatilho.SERVICE_ACCOUNT_USER_EMAIL
: o endereço de e-mail da conta de serviço padrão.
Papel da conta de serviço do Pub/Sub
O
papel criador do token da conta de serviço
(roles/iam.serviceAccountTokenCreator
) é concedido
por padrão à conta de serviço do
Pub/Sub.
Importante: se você ativou a conta de serviço do Pub/Sub até 8 de abril de 2021, conceda o papel a seguir à conta de serviço do Pub/Sub por projeto.
export PROJECT_NUMBER="$(gcloud projects describe $(gcloud config get-value project) --format='value(projectNumber)')" gcloud projects add-iam-policy-binding $(gcloud config get-value project) \ --member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com" \ --role='roles/iam.serviceAccountTokenCreator'
Sinalização do Cloud Run
Implante o serviço de receptor de eventos no destino autenticado do Cloud Run usando o seguinte comando:
gcloud run deploy SERVICE_ACCOUNT_ID \ --image gcr.io/$(gcloud config get-value project)/SERVICE_NAME
Substitua os seguintes valores:
SERVICE_ACCOUNT_ID
: o ID da conta de serviço.SERVICE_NAME
: o nome do serviço do Cloud Run.
Invocações não autenticadas do Cloud Run
Dependendo do tipo de evento, conceda os papéis, as permissões e as sinalizações apropriadas do IAM para um serviço de destino não autenticado do Cloud Run:
Registros de auditoria do Cloud
Para garantir que você receba eventos originados no Google Cloud enquanto envia para um destino não autenticado do Cloud Run:
Papéis do usuário
Conceda o
papel de Administrador do Eventarc
(roles/eventarc.admin
) ao usuário:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role='roles/eventarc.admin'
Substitua os seguintes valores:
PROJECT_ID
: o ID do projeto do Google Cloud.PRINCIPAL
é o membro para quem a vinculação deve ser adicionada. Ele precisa estar no formatouser|group|serviceAccount:email
oudomain:domain
.Exemplos:
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
edomain:example.domain.com
Conceda o
papel de Conta de serviço
(roles/iam.serviceAccountUser
) ao usuário:
gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
Substitua os seguintes valores:
PROJECT_ID
: o ID do projeto do Google Cloud.SERVICE_ACCOUNT_ID
: o ID da conta de serviço.PRINCIPAL
é o membro para quem a vinculação deve ser adicionada. Ele precisa estar no formatouser|group|serviceAccount:email
oudomain:domain
.Exemplos:
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
edomain:example.domain.com
Papéis da conta de serviço do gatilho
Conceda o
papel Receptor de eventos do Eventarc
(roles/eventarc.eventReceiver
) à conta de serviço
do gatilho:
gcloud projects add-iam-policy-binding $(gcloud config get-value project) \ --member='serviceAccount:SERVICE_ACCOUNT_USER_EMAIL' \ --role='roles/eventarc.eventReceiver'
Substitua SERVICE_ACCOUNT_USER_EMAIL
pelo endereço de e-mail da
conta de serviço.
Papel da conta de serviço do Pub/Sub
O
papel criador do token da conta de serviço
(roles/iam.serviceAccountTokenCreator
) é concedido
por padrão à conta de serviço do
Pub/Sub.
Importante: se você ativou a conta de serviço do Pub/Sub até 8 de abril de 2021, conceda o papel a seguir à conta de serviço do Pub/Sub por projeto.
export PROJECT_NUMBER="$(gcloud projects describe $(gcloud config get-value project) --format='value(projectNumber)')" gcloud projects add-iam-policy-binding $(gcloud config get-value project) \ --member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com" \ --role='roles/iam.serviceAccountTokenCreator'
Sinalização do Cloud Run
Implante o serviço de receptor de eventos no destino não autenticado do Cloud Run usando o seguinte comando:
gcloud run deploy SERVICE_ACCOUNT_ID \ --image gcr.io/$(gcloud config get-value project)/SERVICE_NAME \ --allow-unauthenticated
Substitua os seguintes valores:
SERVICE_ACCOUNT_ID
: o ID da conta de serviço.SERVICE_NAME
: o nome do serviço do Cloud Run.
Eventos diretos
Para garantir que você receba eventos diretamente da origem, como uma atualização de um bucket do Cloud Storage, enquanto entrega para um destino não autenticado do Cloud Run:
Papéis do usuário
Conceda o
papel de Administrador do Eventarc
(roles/eventarc.admin
) ao usuário:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role='roles/eventarc.admin'
Substitua os seguintes valores:
PROJECT_ID
: o ID do projeto do Google Cloud.PRINCIPAL
é o membro para quem a vinculação deve ser adicionada. Ele precisa estar no formatouser|group|serviceAccount:email
oudomain:domain
.Exemplos:
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
edomain:example.domain.com
Conceda o
papel de Conta de serviço
(roles/iam.serviceAccountUser
) ao usuário:
gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
Substitua os seguintes valores:
PROJECT_ID
: o ID do projeto do Google Cloud.SERVICE_ACCOUNT_ID
: o ID da conta de serviço.PRINCIPAL
é o membro para quem a vinculação deve ser adicionada. Ele precisa estar no formatouser|group|serviceAccount:email
oudomain:domain
.Exemplos:
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
edomain:example.domain.com
Papel da conta de serviço do Cloud Storage
Se você estiver criando um gatilho para um evento direto do
Cloud Storage, conceda o
papel de Editor do Pub/Sub
(roles/pubsub.publisher
)
à conta de serviço do Cloud Storage:
SERVICE_ACCOUNT="$(gsutil kms serviceaccount -p PROJECT_ID)" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:${SERVICE_ACCOUNT}" --role='roles/pubsub.publisher'
Substitua PROJECT_ID
pelo ID do projeto do Google Cloud.
Papéis da conta de serviço do gatilho
Conceda o
papel Receptor de eventos do Eventarc
(roles/eventarc.eventReceiver
) à conta de serviço
do gatilho:
gcloud projects add-iam-policy-binding $(gcloud config get-value project) \ --member='serviceAccount:SERVICE_ACCOUNT_USER_EMAIL' \ --role='roles/eventarc.eventReceiver'
Substitua SERVICE_ACCOUNT_USER_EMAIL
pelo endereço de e-mail da
conta de serviço.
Papel da conta de serviço do Pub/Sub
O
papel criador do token da conta de serviço
(roles/iam.serviceAccountTokenCreator
) é concedido
por padrão à conta de serviço do
Pub/Sub.
Importante: se você ativou a conta de serviço do Pub/Sub até 8 de abril de 2021, conceda o papel a seguir à conta de serviço do Pub/Sub por projeto.
export PROJECT_NUMBER="$(gcloud projects describe $(gcloud config get-value project) --format='value(projectNumber)')" gcloud projects add-iam-policy-binding $(gcloud config get-value project) \ --member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com" \ --role='roles/iam.serviceAccountTokenCreator'
Sinalização do Cloud Run
Implante o serviço de receptor de eventos no destino não autenticado do Cloud Run usando o seguinte comando:
gcloud run deploy SERVICE_ACCOUNT_ID \ --image gcr.io/$(gcloud config get-value project)/SERVICE_NAME \ --allow-unauthenticated
Substitua os seguintes valores:
SERVICE_ACCOUNT_ID
: o ID da conta de serviço.SERVICE_NAME
: o nome do serviço do Cloud Run.
Tópico do Pub/Sub
Para garantir que você receba eventos de fontes de terceiros enquanto entrega em um destino não autenticado do Cloud Run:
Papéis do usuário
Conceda o
papel de Administrador do Eventarc
(roles/eventarc.admin
) ao usuário:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role='roles/eventarc.admin'
Substitua os seguintes valores:
PROJECT_ID
: o ID do projeto do Google Cloud.USER_EMAIL
: o endereço de e-mail do usuárioExemplos:
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
edomain:example.domain.com
Papéis da conta de serviço do gatilho
N/A
Papel da conta de serviço do Pub/Sub
O
papel criador do token da conta de serviço
(roles/iam.serviceAccountTokenCreator
) é concedido
por padrão à conta de serviço do
Pub/Sub.
Importante: se você ativou a conta de serviço do Pub/Sub até 8 de abril de 2021, conceda o papel a seguir à conta de serviço do Pub/Sub por projeto.
export PROJECT_NUMBER="$(gcloud projects describe $(gcloud config get-value project) --format='value(projectNumber)')" gcloud projects add-iam-policy-binding $(gcloud config get-value project) \ --member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com" \ --role='roles/iam.serviceAccountTokenCreator'
Sinalização do Cloud Run
Implante o serviço de receptor de eventos no destino não autenticado do Cloud Run usando o seguinte comando:
gcloud run deploy SERVICE_ACCOUNT_ID \ --image gcr.io/$(gcloud config get-value project)/SERVICE_NAME \ --allow-unauthenticated
Substitua os seguintes valores:
SERVICE_ACCOUNT_ID
: o ID da conta de serviço.SERVICE_NAME
: o nome do serviço do Cloud Run.