Cada activador de Eventarc se asocia a una cuenta de servicio de Identity and Access Management (IAM) en el momento en que se crea el activador. El activador usa la cuenta de servicio como su identidad predeterminada.
De forma predeterminada, no puedes crear una cuenta de servicio de IAM en un proyecto de Google Cloud y conectarla a un recurso en otro proyecto. Sin embargo, es posible que hayas centralizado las cuentas de servicio de tu organización en proyectos diferentes, lo que puede facilitar la administración de las cuentas de servicio. En este documento, se describen los pasos necesarios para admitir la conexión de la cuenta de servicio de un proyecto a un activador de Eventarc en otro proyecto.
Si no tienes los permisos para realizar estos pasos, pídele a un administrador que los complete.
Habilita el uso de cuentas de servicio entre proyectos
Completa los siguientes pasos en el proyecto de la cuenta de servicio.
En la consola de Google Cloud, 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.
Si deseas obtener más información, consulta Habilita cuentas de servicio para conectarlas entre proyectos.
Crea una cuenta de servicio y anota su nombre:
Otorga permisos para la autenticación de cuentas de servicio
Las principales pueden usar cuentas de servicio para autenticarse de diferentes maneras. Cada tipo de autenticación requiere que la principal tenga permisos específicos de IAM en la cuenta de servicio. Si deseas obtener más información, consulta Roles para la autenticación de cuentas de servicio.
Otorga el rol de IAM de Creador de tokens de cuenta de servicio (
roles/iam.serviceAccountTokenCreator
) al agente de servicio de Eventarc del proyecto de Google Cloud que contiene el activador. Esto permite que el agente de servicio administre el acceso entre proyectos de la cuenta de servicio. Un agente de servicio es la identidad de un servicio de Google Cloud determinado para un proyecto en particular. Para obtener más información, consulta Agentes de servicio.Console
En la consola de Google Cloud, ve a la página Cuentas de servicio.
Selecciona el proyecto que posee la cuenta de servicio que conectarás al activador de Eventarc.
Haz clic en la dirección de correo electrónico de la cuenta de servicio que creaste antes.
Haz clic en la pestaña Permisos.
En la sección Principales con acceso a esta cuenta de servicio, haz clic en
Otorgar acceso.En el campo Principales nuevas, ingresa la dirección de correo electrónico del agente de servicio de Eventarc:
service-EVENTARC_PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com
Reemplaza
EVENTARC_PROJECT_NUMBER
por el número del proyecto de Google Cloud que contiene el activador.Haz clic en Agregar otro rol.
En la lista Seleccionar un rol, filtra por Creador de tokens de cuenta de servicio y, luego, selecciona la función.
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'
Reemplaza lo siguiente:
SERVICE_ACCOUNT_NAME
: El nombre de la cuenta de servicio.SERVICE_ACCOUNT_PROJECT_ID
por el ID del proyecto de Google Cloud que es propietario de la cuenta de servicioEVENTARC_PROJECT_NUMBER
: El número del proyecto de Google Cloud que contiene el activador.
Otorga el rol Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
) de IAM para todas las principales que crean activadores, por ejemplo, el agente de servicio de Eventarc del proyecto de Google Cloud que contiene el activador. Este rol predefinido contiene el permisoiam.serviceAccounts.actAs
, que se requiere para conectar una cuenta de servicio a un recurso.Console
Otorga el rol en el proyecto para permitir que la principal use la identidad de varias cuentas de servicio:
En la consola de Google Cloud, ve a la página IAM.
Selecciona el proyecto que es propietario de la cuenta de servicio.
Haz clic en
Otorgar acceso.En el campo Principales nuevas, ingresa la dirección de correo electrónico de la principal.
En la lista Seleccionar un rol, filtra por Usuario de cuenta de servicio y, luego, selecciona el rol.
Haz clic en Guardar.
O bien, otorga el rol en la cuenta de servicio para permitir que la principal actúe en nombre de una cuenta de servicio específica:
En la consola de Google Cloud, ve a la página Cuentas de servicio.
Selecciona el proyecto que es propietario de la cuenta de servicio.
Haz clic en la dirección de correo electrónico de la cuenta de servicio que creaste antes.
Haz clic en la pestaña Permisos.
En la sección Principales con acceso a esta cuenta de servicio, haz clic en
Otorgar acceso.En el campo Principales nuevas, ingresa la dirección de correo electrónico de la principal.
Haz clic en Agregar otro rol.
En la lista Seleccionar un rol, filtra por Usuario de cuenta de servicio y, luego, selecciona el rol.
Haz clic en Guardar.
gcloud
Ejecuta el comando
gcloud projects add-iam-policy-binding
y otorga el rol en el proyecto para permitir que la principal use la identidad de varias cuentas de servicio:gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
O bien, ejecuta el comando
gcloud iam service-accounts add-iam-policy-binding
y otorga el rol en 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'
Reemplaza lo siguiente:
SERVICE_ACCOUNT_PROJECT_ID
por el ID del proyecto de Google Cloud que es propietario de la cuenta de servicioPRINCIPAL
: Es un identificador para el creador del activador en 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 completo del recurso 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 ID del proyecto de Google Cloud que es propietario de la cuenta de servicio.SERVICE_ACCOUNT_NAME
es el nombre de la cuenta de servicio.
Otorga permisos para admitir el enrutamiento de eventos
Antes de crear un activador de Eventarc, debes otorgar otros permisos de IAM para admitir eventos de enrutamiento con Eventarc.
Otorga los permisos adecuados en función de los recursos a los que el activador de Eventarc debe acceder para hacer su trabajo y el proveedor y el destino de los eventos. Para obtener más información, consulta Roles y permisos de Eventarc.
Crea tu activador con la cuenta de servicio entre proyectos.
¿Qué sigue?
- Descripción general de las cuentas de servicio
- Administra el acceso a proyectos, carpetas y organizaciones