Admitir una cuenta de servicio entre proyectos

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.

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

    Ir a Políticas de organización

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

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

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

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

      Ir a Cuentas de servicio

    2. Selecciona el proyecto propietario de la cuenta de servicio que vas a asociar al activador de Eventarc.

    3. Haz clic en la dirección de correo de la cuenta de servicio que has creado anteriormente.

    4. Haz clic en la pestaña Permisos.

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

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

    7. Haz clic en Añadir otro rol.

    8. En la lista Selecciona un rol, busca Creador de tokens de cuenta de servicio y, a continuación, selecciona el rol.

    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'

    Haz los cambios siguientes:

    • SERVICE_ACCOUNT_NAME: el nombre de tu cuenta de servicio
    • SERVICE_ACCOUNT_PROJECT_ID: el Google Cloud ID de proyecto del proyecto propietario de la cuenta de servicio
    • EVENTARC_PROJECT_NUMBER: el Google Cloud número de proyecto del proyecto que contiene el activador.
  2. 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 permiso iam.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:

    1. En la consola, ve a la página Gestión de identidades y accesos. Google Cloud

      Ir a IAM

    2. Selecciona el proyecto propietario de la cuenta de servicio.

    3. Haz clic en Conceder acceso.

    4. En el campo Nuevos principales, introduce la dirección de correo del principal.

    5. En la lista Seleccionar un rol, busca Usuario de cuenta de servicio y, a continuación, selecciona el rol.

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

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

      Ir a Cuentas de servicio

    2. Selecciona el proyecto propietario de la cuenta de servicio.

    3. Haz clic en la dirección de correo de la cuenta de servicio que has creado anteriormente.

    4. Haz clic en la pestaña Permisos.

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

    6. En el campo Nuevos principales, introduce la dirección de correo del principal.

    7. Haz clic en Añadir otro rol.

    8. En la lista Seleccionar un rol, busca Usuario de cuenta de servicio y, a continuación, selecciona el rol.

    9. 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 servicio
    • PRINCIPAL: identificador del creador del activador con 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 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.

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

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

Siguientes pasos