Cada activador de Eventarc se asocia a una cuenta de servicio de gestión de identidades y accesos (IAM) en el momento en que se crea el activador. El activador usa la cuenta de servicio como identidad predeterminada.
De forma predeterminada, no puedes crear una cuenta de servicio de IAM en un proyectoGoogle Cloud y vincularla a un recurso de otro proyecto. Sin embargo, es posible que hayas centralizado las cuentas de servicio de tu organización en proyectos independientes, lo que puede facilitar la gestión de las cuentas de servicio. En este documento se describen los pasos necesarios para permitir que se vincule una cuenta de servicio de un proyecto a un activador de Eventarc de otro proyecto.
Si no tienes los permisos necesarios para realizar estos pasos, pide a un administrador que los complete.
Habilitar el uso de cuentas de servicio entre proyectos
Completa los siguientes pasos en el proyecto de la cuenta de servicio.
En la Google Cloud consola, ve a la página Políticas de la organización.
Si se aplica la política Inhabilitar el uso de cuentas de servicio entre proyectos, debes inhabilitarla.
Para obtener más información, consulta el artículo Habilitar la vinculación de cuentas de servicio entre proyectos.
Crea tu cuenta de servicio y anota su nombre.
Conceder permisos para la autenticación con cuenta de servicio
Las entidades pueden usar cuentas de servicio para autenticarse de varias formas. Cada tipo de autenticación requiere que la entidad tenga permisos de gestión de identidades y accesos específicos en la cuenta de servicio. Para obtener más información, consulta Roles para la autenticación de cuentas de servicio.
Asigna el rol de IAM Creador de tokens de cuenta de servicio (
roles/iam.serviceAccountTokenCreator
) al agente de servicio de Eventarc del proyecto Google Cloud que contiene el activador. De esta forma, el agente de servicio puede gestionar el acceso entre proyectos de la cuenta de servicio. Un agente de servicio es la identidad de un servicio concreto para un proyecto específico. Google Cloud Para obtener más información, consulta Agentes de servicio.Consola
En la Google Cloud consola, ve a la página Cuentas de servicio.
Selecciona el proyecto propietario de la cuenta de servicio que vas a asociar al activador de Eventarc.
Haz clic en la dirección de correo de la cuenta de servicio que has creado anteriormente.
Haz clic en la pestaña Permisos.
En la sección Principales con acceso a esta cuenta de servicio, haz clic en
Dar acceso.En el campo Principales nuevas, introduce la dirección de correo del agente de servicio de Eventarc:
service-EVENTARC_PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com
Sustituye
EVENTARC_PROJECT_NUMBER
por elGoogle Cloud número de proyecto del proyecto que contiene el activador.Haz clic en Añadir otro rol.
En la lista Selecciona un rol, busca Creador de tokens de cuenta de servicio y, a continuación, selecciona el rol.
Haz clic en Guardar.
gcloud
Ejecuta el comando
gcloud iam service-accounts add-iam-policy-binding
:gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \ --member='serviceAccount:service-EVENTARC_PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com' \ --role='roles/iam.serviceAccountTokenCreator'
Haz los cambios siguientes:
SERVICE_ACCOUNT_NAME
: el nombre de tu cuenta de servicioSERVICE_ACCOUNT_PROJECT_ID
: el Google Cloud ID de proyecto del proyecto propietario de la cuenta de servicioEVENTARC_PROJECT_NUMBER
: el Google Cloud número de proyecto del proyecto que contiene el activador.
Asigna el rol de IAM Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
) a todos los principales que creen activadores. Por ejemplo, el agente de servicio de Eventarc del proyecto Google Cloud que contiene el activador. Este rol predefinido contiene el permisoiam.serviceAccounts.actAs
, que es necesario para asociar una cuenta de servicio a un recurso.Consola
Concede el rol en el proyecto para permitir que la principal suplante la identidad de varias cuentas de servicio:
En la consola, ve a la página Gestión de identidades y accesos. Google Cloud
Selecciona el proyecto propietario de la cuenta de servicio.
Haz clic en
Conceder acceso.En el campo Nuevos principales, introduce la dirección de correo del principal.
En la lista Seleccionar un rol, busca Usuario de cuenta de servicio y, a continuación, selecciona el rol.
Haz clic en Guardar.
También puedes asignar el rol a la cuenta de servicio para permitir que el principal actúe en nombre de una cuenta de servicio específica:
En la Google Cloud consola, ve a la página Cuentas de servicio.
Selecciona el proyecto propietario de la cuenta de servicio.
Haz clic en la dirección de correo de la cuenta de servicio que has creado anteriormente.
Haz clic en la pestaña Permisos.
En la sección Principales con acceso a esta cuenta de servicio, haz clic en
Dar acceso.En el campo Nuevos principales, introduce la dirección de correo del principal.
Haz clic en Añadir otro rol.
En la lista Seleccionar un rol, busca Usuario de cuenta de servicio y, a continuación, selecciona el rol.
Haz clic en Guardar.
gcloud
Ejecuta el comando
gcloud projects add-iam-policy-binding
y asigna el rol al proyecto para permitir que la entidad suplante la identidad de varias cuentas de servicio:gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
También puedes ejecutar el comando
gcloud iam service-accounts add-iam-policy-binding
y asignar el rol a la cuenta de servicio para permitir que la principal actúe en nombre de una cuenta de servicio específica:gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_RESOURCE_NAME \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
Haz los cambios siguientes:
SERVICE_ACCOUNT_PROJECT_ID
: el Google Cloud ID de proyecto del proyecto propietario de la cuenta de servicioPRINCIPAL
: identificador del creador del activador con el formatouser|group|serviceAccount:email
odomain:domain
. Por ejemplo:user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
m
SERVICE_ACCOUNT_RESOURCE_NAME
: el nombre de recurso completo de la cuenta de servicio. Por ejemplo:projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com
Donde:
SERVICE_ACCOUNT_PROJECT_ID
es el Google Cloud ID de proyecto propietario de la cuenta de servicio.SERVICE_ACCOUNT_NAME
es el nombre de tu cuenta de servicio
Conceder permisos para admitir el enrutamiento de eventos
Antes de crear un activador de Eventarc, debes conceder otros permisos de gestión de identidades y accesos para admitir el enrutamiento de eventos mediante Eventarc.
Concede los permisos adecuados en función de los recursos a los que debe acceder el activador de Eventarc para hacer su trabajo, así como del proveedor y el destino de eventos. Para obtener más información, consulta Todos los roles y permisos.
Crea el activador con la cuenta de servicio entre proyectos.
Siguientes pasos
- Descripción general de las cuentas de servicio
- Gestionar acceso a proyectos, carpetas y organizaciones