Roles y permisos para Cloud Run

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

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:

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

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

    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

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

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

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

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

    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

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

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

    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

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

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

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