Admite una cuenta de servicio entre proyectos

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 separados, 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 una cuenta de servicio en 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.

  1. En la consola de Google Cloud, ve a la página Políticas de la organización.

    Ir a Políticas de la organización

  2. 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.

  3. 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 varias maneras. Cada tipo de autenticación requiere que la principal tenga permisos de IAM específicos en la cuenta de servicio. Si deseas obtener más información, consulta Roles para la autenticación de cuentas de servicio.

  1. Otorga el rol de IAM 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 para 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

    1. En la consola de Google Cloud, ve a la página Cuentas de servicio.

      Ir a Cuentas de servicio

    2. Selecciona el proyecto que posee la cuenta de servicio que conectarás al activador de Eventarc.

    3. Haz clic en la dirección de correo electrónico de la cuenta de servicio que creaste antes.

    4. Haz clic en la pestaña Permisos.

    5. En la sección Principales con acceso a esta cuenta de servicio, haz clic en Otorgar acceso.

    6. 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.

    7. Haz clic en Agregar otro rol.

    8. En la lista Seleccionar un rol, filtra por Creador de tokens de cuenta de servicio y, luego, selecciona la función.

    9. 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: El ID del proyecto de Google Cloud que posee la cuenta de servicio
    • EVENTARC_PROJECT_NUMBER: El número del proyecto de Google Cloud que contiene el activador.
  2. 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 permiso iam.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 actúe en nombre de varias cuentas de servicio:

    1. En la consola de Google Cloud, ve a la página IAM.

      Ir a IAM

    2. Selecciona el proyecto que posee la cuenta de servicio.

    3. Haz clic en Otorgar acceso.

    4. En el campo Principales nuevas, ingresa la dirección de correo electrónico del principal.

    5. En la lista Seleccionar un rol, filtra por Usuario de cuenta de servicio y, luego, selecciona el rol.

    6. 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:

    1. En la consola de Google Cloud, ve a la página Cuentas de servicio.

      Ir a Cuentas de servicio

    2. Selecciona el proyecto que posee la cuenta de servicio.

    3. Haz clic en la dirección de correo electrónico de la cuenta de servicio que creaste antes.

    4. Haz clic en la pestaña Permisos.

    5. En la sección Principales con acceso a esta cuenta de servicio, haz clic en Otorgar acceso.

    6. En el campo Principales nuevas, ingresa la dirección de correo electrónico del principal.

    7. Haz clic en Agregar otro rol.

    8. En la lista Seleccionar un rol, filtra por Usuario de cuenta de servicio y, luego, selecciona el rol.

    9. 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 actúe en nombre 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: El ID del proyecto de Google Cloud que posee la cuenta de servicio
    • PRINCIPAL: un identificador para el creador del activador en el formato user|group|serviceAccount:email o domain: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

      Aquí:

      • SERVICE_ACCOUNT_PROJECT_ID es el ID del proyecto de Google Cloud que posee la cuenta de servicio
      • SERVICE_ACCOUNT_NAME es el nombre de tu 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 mediante Eventarc.

  1. Otorga los permisos adecuados según los recursos a los que debe acceder el activador de Eventarc para realizar su trabajo, y el proveedor y el destino del evento. Para obtener más información, consulta Roles y permisos de Eventarc.

  2. Crea tu activador con la cuenta de servicio entre proyectos.

¿Qué sigue?