En este documento, se muestra cómo configurar roles, permisos y marcas de Identity and Access Management (IAM) para recibir eventos de Eventarc desde Google Cloud y fuentes de terceros, y entregar los eventos a servicios de destino 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 roles 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 Google Cloud CLI, configura la marca de Cloud Run de forma adecuada cuando implementes imágenes o revisiones de contenedor 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 Control de acceso.
Tipos de eventos y roles de Eventarc
Eventarc admite activadores para los siguientes tipos de eventos:
- Eventos de Registros de auditoría de Cloud: Eventarc recibe eventos de fuentes de Google Cloud mediante Registros de auditoría de Cloud.
- Eventos directos: Eventarc recibe eventos directos, como una actualización de un bucket de Cloud Storage, desde fuentes de Google Cloud.
- Eventos de Cloud Pub/Sub: Eventarc recibe eventos de fuentes de terceros mediante notificaciones de Pub/Sub.
Invocaciones autenticadas de Cloud Run
Según el tipo de evento, otorga los permisos, las marcas y los roles de IAM adecuados para un servicio de destino de Cloud Run autenticado:
Registros de auditoría de Cloud
Sigue estos pasos para asegurarte de recibir eventos de fuentes de Google Cloud y entregar a un destino autenticado de Cloud Run:
Funciones de usuario
Otorga el rol de administrador de Eventarc (roles/eventarc.admin
) al usuario:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role='roles/eventarc.admin'
Reemplaza los siguientes valores:
PROJECT_ID
: El ID del proyecto de Google Cloud.PRINCIPAL
: La principal a la que se agregará la vinculación. Debe tener el formatouser|group|serviceAccount:email
odomain:domain
.Ejemplos:
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
odomain:example.domain.com
Otorga el rol de cuenta de servicio (roles/iam.serviceAccountUser
) al usuario:
gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com \ --member=PRINCIPAL \ --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.PRINCIPAL
: La principal a la que se agregará la vinculación. Debe tener el formatouser|group|serviceAccount:email
odomain:domain
.Ejemplos:
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
odomain:example.domain.com
Funciones de cuenta de servicio de activador
Otorga el rol de invocador de Cloud Run (roles/run.invoker
) a la cuenta de servicio del activador:
gcloud run services add-iam-policy-binding SERVICE_NAME \ --member='serviceAccount:SERVICE_ACCOUNT_USER_EMAIL' \ --role='roles/run.invoker'
Reemplaza los siguientes valores:
SERVICE_NAME
: El nombre del servicio que este activador debe invocar.SERVICE_ACCOUNT_USER_EMAIL
:La dirección de correo electrónico de la cuenta de servicio.
Otorga el rol de receptor de eventos de Eventarc (roles/eventarc.eventReceiver
) 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.
Rol de cuenta de servicio de Pub/Sub
El rol de creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator
) se otorga de forma predeterminada a la cuenta de servicio de Pub/Sub.
Importante: Si habilitaste la cuenta de servicio de Pub/Sub el 8 de abril de 2021 o antes, otorga el siguiente rol 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 autenticado de Cloud Run con el siguiente comando:
gcloud run deploy SERVICE_ACCOUNT_ID \ --image gcr.io/$(gcloud config get-value project)/SERVICE_NAME
Reemplaza los siguientes valores:
SERVICE_ACCOUNT_ID
: El ID de la cuenta de servicio.SERVICE_NAME
: El nombre del servicio de Cloud Run.
Eventos directos
Para asegurarte de recibir eventos directamente desde la fuente, como una actualización de un bucket de Cloud Storage, y entregar a un destino autenticado de Cloud Run, haz lo siguiente:
Funciones de usuario
Otorga el rol de administrador de Eventarc (roles/eventarc.admin
) al usuario:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role='roles/eventarc.admin'
Reemplaza los siguientes valores:
PROJECT_ID
: El ID del proyecto de Google Cloud.PRINCIPAL
: La principal a la que se agregará la vinculación. Debe tener el formatouser|group|serviceAccount:email
odomain:domain
.Ejemplos:
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
odomain:example.domain.com
Otorga el rol de cuenta de servicio (roles/iam.serviceAccountUser
) al usuario:
gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com \ --member=PRINCIPAL \ --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.PRINCIPAL
: La principal a la que se agregará la vinculación. Debe tener el formatouser|group|serviceAccount:email
odomain:domain
.Ejemplos:
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
odomain:example.domain.com
Rol de cuenta de servicio de Cloud Storage
Si creas un activador para un evento directo desde Cloud Storage, otorga el rol de publicador de Pub/Sub (roles/pubsub.publisher
) a la cuenta de servicio de 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'
Reemplaza PROJECT_ID
por el ID del proyecto de Google Cloud.
Funciones de cuenta de servicio de activador
Otorga el rol de invocador de Cloud Run (roles/run.invoker
) a la cuenta de servicio del activador:
gcloud run services add-iam-policy-binding SERVICE_NAME \ --member='serviceAccount:SERVICE_ACCOUNT_USER_EMAIL' \ --role='roles/run.invoker'
Reemplaza los siguientes valores:
SERVICE_NAME
: El nombre del servicio que este activador debe invocar.SERVICE_ACCOUNT_USER_EMAIL
:La dirección de correo electrónico de la cuenta de servicio.
Otorga el rol de receptor de eventos de Eventarc (roles/eventarc.eventReceiver
) 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.
Rol de cuenta de servicio de Pub/Sub
El rol de creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator
) se otorga de forma predeterminada a la cuenta de servicio de Pub/Sub.
Importante: Si habilitaste la cuenta de servicio de Pub/Sub el 8 de abril de 2021 o antes, otorga el siguiente rol 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 autenticado de Cloud Run con el siguiente comando:
gcloud run deploy SERVICE_ACCOUNT_ID \ --image gcr.io/$(gcloud config get-value project)/SERVICE_NAME
Reemplaza los siguientes valores:
SERVICE_ACCOUNT_ID
por el ID de la cuenta de servicio.SERVICE_NAME
: Nombre de servicio de Cloud Run.
Tema de 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
Otorga el rol de administrador de Eventarc (roles/eventarc.admin
) al usuario:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role='roles/eventarc.admin'
Reemplaza los siguientes valores:
PROJECT_ID
: El ID del proyecto de Google Cloud.PRINCIPAL
: La principal a la que se agregará la vinculación. Debe tener el formatouser|group|serviceAccount:email
odomain:domain
.Ejemplos:
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
odomain:example.domain.com
Otorga el rol de cuenta de servicio (roles/iam.serviceAccountUser
) al usuario:
gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com \ --member=PRINCIPAL \ --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.PRINCIPAL
: La principal a la que se agregará la vinculación. Debe tener el formatouser|group|serviceAccount:email
odomain:domain
.Ejemplos:
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
odomain:example.domain.com
Funciones de cuenta de servicio de activador
Otorga el rol de invocador de Cloud Run (roles/run.invoker
) a la cuenta de servicio del activador:
gcloud run services add-iam-policy-binding SERVICE_NAME \ --member='serviceAccount:SERVICE_ACCOUNT_USER_EMAIL' \ --role='roles/run.invoker'
Reemplaza los siguientes valores:
SERVICE_NAME
: El nombre del servicio que este activador debe invocar.SERVICE_ACCOUNT_USER_EMAIL
: La dirección de correo electrónico de la cuenta de servicio.
Rol de cuenta de servicio de Pub/Sub
El rol de creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator
) se otorga de forma predeterminada a la cuenta de servicio de Pub/Sub.
Importante: Si habilitaste la cuenta de servicio de Pub/Sub el 8 de abril de 2021 o antes, otorga el siguiente rol 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 autenticado de Cloud Run con el siguiente comando:
gcloud run deploy SERVICE_ACCOUNT_ID \ --image gcr.io/$(gcloud config get-value project)/SERVICE_NAME
Reemplaza los siguientes valores:
SERVICE_ACCOUNT_ID
: El ID de la cuenta de servicio.SERVICE_NAME
: El nombre del servicio de Cloud Run.
Invocaciones no autenticadas de Cloud Run
Según el tipo de evento, otorga los permisos, las marcas y los roles de IAM adecuados para un servicio de destino de Cloud Run no autenticado:
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
Otorga el rol de administrador de Eventarc (roles/eventarc.admin
) al usuario:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role='roles/eventarc.admin'
Reemplaza los siguientes valores:
PROJECT_ID
: El ID del proyecto de Google Cloud.PRINCIPAL
: La principal a la que se agregará la vinculación. Debe tener el formatouser|group|serviceAccount:email
odomain:domain
.Ejemplos:
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
odomain:example.domain.com
Otorga el rol de cuenta de servicio (roles/iam.serviceAccountUser
) al usuario:
gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com \ --member=PRINCIPAL \ --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.PRINCIPAL
: La principal a la que se agregará la vinculación. Debe tener el formatouser|group|serviceAccount:email
odomain:domain
.Ejemplos:
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
odomain:example.domain.com
Funciones de cuenta de servicio de activador
Otorga el rol de receptor de eventos de Eventarc (roles/eventarc.eventReceiver
) 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.
Rol de cuenta de servicio de Pub/Sub
El rol de creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator
) se otorga de forma predeterminada a la cuenta de servicio de Pub/Sub.
Importante: Si habilitaste la cuenta de servicio de Pub/Sub el 8 de abril de 2021 o antes, otorga el siguiente rol 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 no autenticado de Cloud Run con el siguiente comando:
gcloud run deploy SERVICE_ACCOUNT_ID \ --image gcr.io/$(gcloud config get-value project)/SERVICE_NAME \ --allow-unauthenticated
Reemplaza los siguientes valores:
SERVICE_ACCOUNT_ID
: El ID de la cuenta de servicio.SERVICE_NAME
: El nombre del servicio de Cloud Run.
Eventos directos
Para asegurarte de recibir eventos directamente desde la fuente, como una actualización de un bucket de Cloud Storage, y entregar a un destino no autenticado de Cloud Run, haz lo siguiente:
Funciones de usuario
Otorga el rol de administrador de Eventarc (roles/eventarc.admin
) al usuario:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role='roles/eventarc.admin'
Reemplaza los siguientes valores:
PROJECT_ID
: El ID del proyecto de Google Cloud.PRINCIPAL
: La principal a la que se agregará la vinculación. Debe tener el formatouser|group|serviceAccount:email
odomain:domain
.Ejemplos:
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
odomain:example.domain.com
Otorga el rol de cuenta de servicio (roles/iam.serviceAccountUser
) al usuario:
gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com \ --member=PRINCIPAL \ --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.PRINCIPAL
: La principal a la que se agregará la vinculación. Debe tener el formatouser|group|serviceAccount:email
odomain:domain
.Ejemplos:
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
odomain:example.domain.com
Rol de cuenta de servicio de Cloud Storage
Si creas un activador para un evento directo desde Cloud Storage, otorga el rol de publicador de Pub/Sub (roles/pubsub.publisher
) a la cuenta de servicio de 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'
Reemplaza PROJECT_ID
por el ID del proyecto de Google Cloud.
Funciones de cuenta de servicio de activador
Otorga el rol de receptor de eventos de Eventarc (roles/eventarc.eventReceiver
) 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.
Rol de cuenta de servicio de Pub/Sub
El rol de creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator
) se otorga de forma predeterminada a la cuenta de servicio de Pub/Sub.
Importante: Si habilitaste la cuenta de servicio de Pub/Sub el 8 de abril de 2021 o antes, otorga el siguiente rol 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 no autenticado de Cloud Run con el siguiente comando:
gcloud run deploy SERVICE_ACCOUNT_ID \ --image gcr.io/$(gcloud config get-value project)/SERVICE_NAME \ --allow-unauthenticated
Reemplaza los siguientes valores:
SERVICE_ACCOUNT_ID
: El ID de la cuenta de servicio.SERVICE_NAME
: El nombre del servicio de Cloud Run.
Tema de 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
Otorga el rol de administrador de Eventarc (roles/eventarc.admin
) al usuario:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --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
odomain:example.domain.com
Funciones de cuenta de servicio de activador
N/A
Rol de cuenta de servicio de Pub/Sub
El rol de creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator
) se otorga de forma predeterminada a la cuenta de servicio de Pub/Sub.
Importante: Si habilitaste la cuenta de servicio de Pub/Sub el 8 de abril de 2021 o antes, otorga el siguiente rol 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 no autenticado de Cloud Run con el siguiente comando:
gcloud run deploy SERVICE_ACCOUNT_ID \ --image gcr.io/$(gcloud config get-value project)/SERVICE_NAME \ --allow-unauthenticated
Reemplaza los siguientes valores:
SERVICE_ACCOUNT_ID
: El ID de la cuenta de servicio.SERVICE_NAME
: El nombre del servicio de Cloud Run.