Funciones y permisos de Eventarc

En este documento, se muestra cómo configurar funciones, permisos y marcas de administración de identidades y accesos (IAM) para recibir eventos de Eventarc desde Google Cloud y fuentes de terceros, y entregar los eventos a servicios autenticados y no autenticados de Cloud Run.

Este documento te muestra cómo hacer lo siguiente:

  • Otorgar funciones de IAM específicas al usuario.
  • Otorgar funciones y permisos específicos a la cuenta de servicio del activador. Eventarc usa una cuenta de servicio proporcionada por el cliente como la identidad del activador.
  • Si habilitaste la cuenta de servicio de Pub/Sub el 8 de abril de 2021 o antes de esa fecha, otorga la función iam.serviceAccountTokenCreator a la cuenta de servicio de Pub/Sub:
  • Si eliges usar la herramienta de línea de comandos de gcloud, configura la marca de Cloud Run de forma adecuada cuando implementes imágenes de contenedor o revisiones de un repositorio de código fuente en Cloud Run.

Para obtener más información sobre las opciones de control de acceso en Eventarc, consulta la sección sobre control de acceso.

Tipos de funciones y activadores de Eventarc

Eventarc admite los siguientes tipos de activadores:

  • Activadores de registros de auditoría de Cloud: Para recibir eventos de fuentes de Google Cloud, Eventarc usa registros de auditoría de Cloud.
  • Activadores de Cloud Pub/Sub: Para recibir eventos de fuentes de terceros, Eventarc usa notificaciones de Pub/Sub.
Registros de auditoría de Cloud Pub/Sub
Invocaciones autenticadas de Cloud Run Usuario:
  • roles/eventarc.admin
  • roles/iam.serviceAccountUser
Usuario:
  • roles/eventarc.admin
  • roles/iam.serviceAccountUser
Cuenta de servicio del activador:
  • roles/run.invoker
  • roles/eventarc.eventReceiver
Cuenta de servicio del activador:
  • roles/run.invoker
Cuenta de servicio de Pub/Sub:
  • roles/iam.serviceAccountTokenCreator
Cuenta de servicio de Pub/Sub:
  • roles/iam.serviceAccountTokenCreator
Marca de Cloud Run:
  • No aplicable
Marca de Cloud Run:
  • N/A
Registros de auditoría de Cloud Pub/Sub
Invocaciones no autenticadas de Cloud Run Usuario:
  • roles/eventarc.admin
  • roles/iam.serviceAccountUser
Usuario:
  • roles/eventarc.admin
Cuenta de servicio del activador:
  • roles/eventarc.eventReceiver
Cuenta de servicio del activador:
  • N/A
Cuenta de servicio de Pub/Sub:
  • roles/iam.serviceAccountTokenCreator
Cuenta de servicio de Pub/Sub:
  • roles/iam.serviceAccountTokenCreator
Marca de Cloud Run:
  • --allow-unauthenticated
Marca de Cloud Run:
  • --allow-unauthenticated

Invocaciones autenticadas de Cloud Run

Registros de auditoría de Cloud

Sigue estos pasos para asegurarte de que recibes eventos de fuentes de Google Cloud y los entregas a un destino autenticado de Cloud Run:

Funciones de usuario

eventarc.admin

Otorga la siguiente función de IAM al usuario:

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:USER_EMAIL" \
  --role='roles/eventarc.admin'

Reemplaza los siguientes valores:

  • PROJECT_ID: El ID del proyecto de Google Cloud.
  • USER_EMAIL: La dirección de correo electrónico del usuario.

    Ejemplos: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com o domain:example.domain.com

iam.serviceAccountUser

Otorga la siguiente función de IAM al usuario:

gcloud iam service-accounts add-iam-policy-binding \
 SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com \
   --member="user:USER_EMAIL" \
   --role="roles/iam.serviceAccountUser"

Reemplaza los siguientes valores:

  • PROJECT_ID: El ID del proyecto de Google Cloud.
  • SERVICE_ACCOUNT_ID: El ID de la cuenta de servicio.
  • USER_EMAIL: La dirección de correo electrónico del usuario.

    Ejemplos: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com o domain:example.domain.com

Funciones de cuenta de servicio de activador

run.invoker

Otorga la siguiente función de IAM a la cuenta de servicio del activador:

gcloud run services add-iam-policy-binding SERVICE_ACCOUNT_NAME \
  --member='serviceAccount:SERVICE_ACCOUNT_USER_EMAIL' \
  --role='roles/run.invoker'

Reemplaza los siguientes valores:

  • SERVICE_ACCOUNT_NAME: Es el nombre de la cuenta de servicio del activador.
  • SERVICE_ACCOUNT_USER_EMAIL:La dirección de correo electrónico de la cuenta de servicio.
eventarc.eventReceiver

Otorga la siguiente función de IAM a la cuenta de servicio del activador:

gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
  --member='serviceAccount:SERVICE_ACCOUNT_USER_EMAIL' \
  --role='roles/eventarc.eventReceiver'

Reemplaza SERVICE_ACCOUNT_USER_EMAIL por la dirección de correo electrónico de la cuenta de servicio.

Función de cuenta de servicio de Pub/Sub

iam.serviceAccountTokenCreator

Esta función se otorga de forma predeterminada a la cuenta de servicio de Pub/Sub.

Importante: Si habilitaste la cuenta de servicio de Pub/Sub antes del 8 de abril de 2021, otorga la siguiente función a la cuenta de servicio de Pub/Sub por proyecto.

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'

Marca de Cloud Run

Implementa el servicio del receptor de eventos en el destino de Cloud Run autenticado con el siguiente código:

gcloud run deploy SERVICE_ACCOUNT_ID \
  --image gcr.io/$(gcloud config get-value project)/helloworld-events

Reemplaza SERVICE_ACCOUNT_ID por el ID de la cuenta de servicio.

Pub/Sub

Para asegurarte de que recibes eventos de fuentes de terceros, mientras entregas a un destino autenticado de Cloud Run, sigue estos pasos:

Funciones de usuario

eventarc.admin

Otorga la siguiente función de IAM al usuario:

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:USER_EMAIL" \
  --role='roles/eventarc.admin'

Reemplaza los siguientes valores:

  • PROJECT_ID: El ID del proyecto de Google Cloud.
  • USER_EMAIL: La dirección de correo electrónico del usuario.

    Ejemplos: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com o domain:example.domain.com

iam.serviceAccountUser

Otorga la siguiente función de IAM al usuario:

gcloud iam service-accounts add-iam-policy-binding \
  SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com \
     --member="user:USER_EMAIL" \
     --role="roles/iam.serviceAccountUser"

Reemplaza los siguientes valores:

  • PROJECT_ID: El ID del proyecto de Google Cloud.
  • SERVICE_ACCOUNT_ID: El ID de la cuenta de servicio.
  • USER_EMAIL: La dirección de correo electrónico del usuario.

    Ejemplos: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com o domain:example.domain.com

Funciones de cuenta de servicio de activador

run.invoker

Otorga la siguiente función de IAM a la cuenta de servicio del activador:

gcloud run services add-iam-policy-binding SERVICE_ACCOUNT_NAME \
  --member='serviceAccount:SERVICE_ACCOUNT_USER_EMAIL' \
  --role='roles/run.invoker'

Reemplaza los siguientes valores:

  • SERVICE_ACCOUNT_NAME: Es el nombre de la cuenta de servicio.
  • SERVICE_ACCOUNT_USER_EMAIL: La dirección de correo electrónico de la cuenta de servicio.

Función de cuenta de servicio de Pub/Sub

iam.serviceAccountTokenCreator

Esta función se otorga de forma predeterminada a la cuenta de servicio de Pub/Sub.

Importante: Si habilitaste la cuenta de servicio de Pub/Sub antes del 8 de abril de 2021, otorga la siguiente función a la cuenta de servicio de Pub/Sub por proyecto.

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'

Marca de Cloud Run

Implementa el servicio del receptor de eventos en el destino de Cloud Run autenticado con el siguiente código:

gcloud run deploy SERVICE_ACCOUNT_ID \
  --image gcr.io/$(gcloud config get-value project)/helloworld-events

Reemplaza SERVICE_ACCOUNT_ID por el ID de la cuenta de servicio.

Invocaciones no autenticadas de Cloud Run

Registros de auditoría de Cloud

Para asegurarte de que recibes eventos de fuentes de Google Cloud y entregas a un destino de Cloud Run no autenticado, haz lo siguiente:

Funciones de usuario

eventarc.admin

Otorga la siguiente función de IAM al usuario:

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:USER_EMAIL" \
  --role='roles/eventarc.admin'

Reemplaza los siguientes valores:

  • PROJECT_ID: El ID del proyecto de Google Cloud.
  • USER_EMAIL: La dirección de correo electrónico del usuario.

    Ejemplos: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com o domain:example.domain.com

iam.serviceAccountUser

Otorga la siguiente función de IAM al usuario:

gcloud iam service-accounts add-iam-policy-binding \
  SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com \
    --member="user:USER_EMAIL" \
    --role="roles/iam.serviceAccountUser"

Reemplaza los siguientes valores:

  • PROJECT_ID: El ID del proyecto de Google Cloud.
  • SERVICE_ACCOUNT_ID: El ID de la cuenta de servicio.
  • USER_EMAIL: La dirección de correo electrónico del usuario.

    Ejemplos: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com o domain:example.domain.com

Funciones de cuenta de servicio de activador

eventarc.eventReceiver

Otorga la siguiente función de IAM a la cuenta de servicio del activador:

gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
  --member='serviceAccount:SERVICE_ACCOUNT_USER_EMAIL' \
  --role='roles/eventarc.eventReceiver'

Reemplaza SERVICE_ACCOUNT_USER_EMAIL por la dirección de correo electrónico de la cuenta de servicio.

Función de cuenta de servicio de Pub/Sub

iam.serviceAccountTokenCreator

Esta función se otorga de forma predeterminada a la cuenta de servicio de Pub/Sub.

Importante: Si habilitaste la cuenta de servicio de Pub/Sub antes del 8 de abril de 2021, otorga la siguiente función a la cuenta de servicio de Pub/Sub por proyecto.

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'

Marca de Cloud Run

Implementa el servicio del receptor de eventos en el destino de Cloud Run no autenticado con el siguiente código:

gcloud run deploy SERVICE_ACCOUNT_ID \
  --image gcr.io/$(gcloud config get-value project)/helloworld-events \
  --allow-unauthenticated

Reemplaza SERVICE_ACCOUNT_ID por el ID de la cuenta de servicio.

Pub/Sub

Para asegurarte de recibir eventos de fuentes de terceros mientras entregas a un destino de Cloud Run no autenticado, sigue estos pasos:

Funciones de usuario

eventarc.admin

Otorga la siguiente función de IAM al usuario:

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:USER_EMAIL" \
  --role='roles/eventarc.admin'

Reemplaza los siguientes valores:

  • PROJECT_ID: El ID del proyecto de Google Cloud.
  • USER_EMAIL: La dirección de correo electrónico del usuario.

    Ejemplos: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com o domain:example.domain.com

Funciones de cuenta de servicio de activador

N/A

Función de cuenta de servicio de Pub/Sub

iam.serviceAccountTokenCreator

Esta función se otorga de forma predeterminada a la cuenta de servicio de Pub/Sub.

Importante: Si habilitaste la cuenta de servicio de Pub/Sub antes del 8 de abril de 2021, otorga la siguiente función a la cuenta de servicio de Pub/Sub por proyecto.

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'

Marca de Cloud Run

Implementa el servicio del receptor de eventos en el destino de Cloud Run no autenticado con el siguiente código:

gcloud run deploy SERVICE_ACCOUNT_ID \
  --image gcr.io/$(gcloud config get-value project)/helloworld-events \
  --allow-unauthenticated

Reemplaza SERVICE_ACCOUNT_ID por el ID de la cuenta de servicio.