Papéis e permissões para o Cloud Run

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

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:

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 formato user|group|serviceAccount:email ou domain:domain.

    Exemplos: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com e domain: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 formato user|group|serviceAccount:email ou domain:domain.

    Exemplos: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com e domain: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 formato user|group|serviceAccount:email ou domain:domain.

    Exemplos: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com e domain: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 formato user|group|serviceAccount:email ou domain:domain.

    Exemplos: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com e domain: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 formato user|group|serviceAccount:email ou domain:domain.

    Exemplos: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com e domain: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 formato user|group|serviceAccount:email ou domain:domain.

    Exemplos: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com e domain: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 formato user|group|serviceAccount:email ou domain:domain.

    Exemplos: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com e domain: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 formato user|group|serviceAccount:email ou domain:domain.

    Exemplos: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com e domain: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 formato user|group|serviceAccount:email ou domain:domain.

    Exemplos: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com e domain: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 formato user|group|serviceAccount:email ou domain:domain.

    Exemplos: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com e domain: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ário

    Exemplos: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com e domain: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.