Configura la identidad del servicio para los grupos de trabajadores

En esta página, se muestra cómo configurar y ver la identidad del servicio que controla el acceso desde los grupos de trabajadores de Cloud Run a las APIs de Google Cloud .

Un grupo de trabajadores de Cloud Run tiene una identidad de servicio que se usa como la cuenta autenticada para acceder a las APIs de Google Cloud desde el contenedor de instancias de Cloud Run. Para obtener más información sobre la identidad del servicio, consulta la guía Introducción a la identidad del servicio.

Cómo se usa la identidad del servicio

En Cloud Run, la identidad del servicio es una cuenta de servicio que es un recurso y un principal.

  • Identidad del servicio como recurso: Para conectar una cuenta de servicio como la identidad del servicio, la cuenta del implementador debe tener acceso al recurso de identidad del servicio. Algunas operaciones, como crear o actualizar un grupo de trabajadores, requieren que la cuenta del implementador tenga permisos en el recurso de identidad del servicio.
  • Identidad del servicio como principal: Para acceder a las APIs Google Cloud desde un grupo de trabajadores de Cloud Run, debes otorgar a la identidad del servicio los roles o permisos necesarios para las operaciones que deseas que realice tu grupo de trabajadores.

En la siguiente sección, se abordan los roles necesarios para otorgar a la cuenta del implementador acceso en el recurso de identidad del servicio y otorgar los roles o permisos que necesita el principal de la cuenta de servicio.

Roles requeridos

Tú o tu administrador deben otorgar roles y permisos de IAM para la cuenta del implementador y la identidad del servicio.

Haz clic para ver los roles necesarios para la cuenta del implementador

Para obtener los permisos que necesitas para conectar una cuenta de servicio como la identidad de servicio en el grupo de trabajadores, tú o tu administrador deben otorgar a tu cuenta del implementador el rol de usuario de cuenta de servicio (roles/iam.serviceAccountUser) en la cuenta de servicio que se usa como identidad del servicio.

Este rol predefinido contiene el permiso iam.serviceAccounts.actAs, que se requiere para conectar una cuenta de servicio al grupo de trabajadores. También puedes obtener este permiso si configuras roles personalizados o usas otros roles predefinidos.

Para obtener instrucciones acerca de cómo otorgar a la cuenta del implementador este rol en la identidad del servicio, consulta Permisos de implementación. Si la cuenta de servicio está en un proyecto diferente del grupo de trabajadores de Cloud Run, tú o tu administrador también deben configurar un rol de IAM para el agente de servicio de Cloud Run y configurar una política de la organización. Consulta Usa cuentas de servicio en otros proyectos para obtener más detalles.

Haz clic para ver los roles necesarios para la identidad del servicio

Para permitir que la identidad del servicio acceda a las APIs de Google Cloud desde Cloud Run, tú o tu administrador deben otorgar a la identidad del servicio los permisos o roles que requieren las operaciones que deseas realizar. Para acceder a bibliotecas cliente de Cloud específicas, consulta la documentación del servicio de Google Cloud Google Cloud .

Si un grupo de trabajadores de Cloud Run no accede a otros servicios de Google Cloud , no necesitas otorgar roles ni permisos a la identidad del servicio, y puedes usar la cuenta de servicio predeterminada que se asignó al proyecto.

Obtén recomendaciones para crear cuentas de servicio dedicadas

Cuando creas una cuenta de servicio nueva desde la Google Cloud consola, el paso opcional “Otorgar a esta cuenta de servicio acceso al proyecto” es para cualquier acceso adicional necesario. Por ejemplo, un servicio de Cloud Run puede invocar otro servicio privado de Cloud Run, o acceder a una base de datos de Cloud SQL, y ambas acciones requieren roles específicos de IAM. Consulta la documentación sobre la administración de acceso para obtener más información.

El servicio del recomendador proporciona automáticamente recomendaciones para crear cuentas de servicio dedicadas con el conjunto mínimo de permisos necesarios.

Configura la identidad del servicio

Si aún no creaste una cuenta de servicio, puedes crear una cuenta de servicio ad ministrada por el usuario en IAM o en Cloud Run.

Para configurar una identidad del servicio, usa la consola deGoogle Cloud o la CLI de gcloud:

Console

  1. En la consola de Google Cloud , ve a Cloud Run:

    Ir a Cloud Run

  2. Selecciona Grupos de trabajadores en el menú y haz clic en Implementar contenedor para configurar un grupo de trabajadores nuevo. Si quieres configurar un grupo de trabajadores existente, haz clic en el grupo de trabajadores y, luego, en Implementar y editar una nueva revisión.

  3. Si configuras un grupo de trabajadores nuevo, completa la página inicial del grupo de trabajadores y, luego, haz clic en Contenedores, volúmenes, Herramientas de redes y seguridad para expandir la página de configuración del grupo de trabajadores.

  4. Haz clic en la pestaña Seguridad.

    imagen

    • Haz clic en Crear una nueva cuenta de servicio o en el menú desplegable Cuenta de servicio y selecciona una cuenta de servicio existente, si corresponde.
  5. Haz clic en Crear o Implementar.

gcloud

Si aún no creaste una cuenta de servicio, crea una cuenta de servicio administrada por el usuario en IAM.

Puedes actualizar un grupo de trabajadores existente para configurar una cuenta de servicio con el siguiente comando:

gcloud beta run worker-pools update WORKER_POOL --service-account SERVICE_ACCOUNT

Reemplaza lo siguiente:

  • WORKER_POOL: El nombre de tu servicio.
  • SERVICE_ACCOUNT: Es la cuenta de servicio asociada con la cuenta de servicio asociada con la nueva identidad. Este valor es la dirección de correo electrónico de la cuenta de servicio, con el formato SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com, en el que SERVICE_ACCOUNT_NAME es el nombre de la cuenta de servicio y PROJECT_ID es tu ID del proyecto. También puedes configurar una cuenta de servicio durante la implementación con el siguiente comando:
gcloud beta run worker-pools deploy WORKER_POOL --image IMAGE_URL --service-account SERVICE_ACCOUNT

Reemplaza lo siguiente:

  • WORKER_POOL: Es el nombre del grupo de trabajadores.
  • IMAGE_URL: Es una referencia a la imagen del contenedor que contiene el grupo de trabajadores, como us-docker.pkg.dev/cloudrun/container/worker-pool:latest.
  • SERVICE_ACCOUNT: La cuenta de servicio asociada a la identidad nueva: Este valor es la dirección de correo electrónico de la cuenta de servicio, en el formato SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com.

Terraform

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

resource "google_cloud_run_v2_worker_pool" "default" {
  name     = "WORKER_POOL"
  location = "REGION"
  launch_stage = "BETA"

  template {
    containers {
      image = "IMAGE_URL"
    }
  }
  service_account = "SERVICE_ACCOUNT"
}

Reemplaza lo siguiente:

  • WORKER_POOL: Es el nombre del grupo de trabajadores.
  • REGION: La región Google Cloud , por ejemplo,europe-west1.
  • IMAGE_URL: Es una referencia a la imagen del contenedor que contiene el grupo de trabajadores, como us-docker.pkg.dev/cloudrun/container/worker-pool:latest.
  • SERVICE_ACCOUNT: Es la cuenta de servicio asociada con la cuenta de servicio asociada con la nueva identidad. Este valor es la dirección de correo electrónico de la cuenta de servicio, con el formato SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com, en el que SERVICE_ACCOUNT_NAME es el nombre de la cuenta de servicio y PROJECT_ID es tu ID del proyecto.

Usa cuentas de servicio en otros proyectos

Si configuras una cuenta de servicio de un proyecto de Google Cloud diferente al recurso de Cloud Run, haz lo siguiente:

  1. Tú o tu administrador deben otorgar el rol de usuario de cuenta de servicio (roles/iam.serviceAccountUser) en la cuenta de servicio que usas como identidad del servicio.

    Console

    1. Ve a la página Cuentas de servicio de la consola de Google Cloud :

      Ir a Cuentas de servicio

    2. Selecciona la dirección de correo electrónico de la cuenta de servicio que usas como identidad del servicio.

    3. Haz clic en la pestaña Permisos.

    4. Haz clic en el botón Otorgar acceso.

    5. Ingresa la dirección de correo electrónico de la cuenta del implementador que coincida con la principal a la que le otorgas el rol de administrador o desarrollador.

    6. En el menú desplegable Seleccionar un rol, selecciona el rol Cuentas de servicio > Usuario de cuenta de servicio.

    7. Haz clic en Guardar.

    gcloud

    Usa el comando gcloud iam service-accounts add-iam-policy-binding y reemplaza las variables destacadas por los valores adecuados:

    gcloud iam service-accounts add-iam-policy-binding \
        SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \
        --member="PRINCIPAL" \
        --role="roles/iam.serviceAccountUser"

    Reemplaza lo siguiente:

    • SERVICE_ACCOUNT_NAME: el nombre de la cuenta de servicio a la que conectas el recurso de Cloud Run
    • SERVICE_ACCOUNT_PROJECT_ID: Es el ID del proyecto en el que se encuentra la cuenta de servicio.
    • PRINCIPAL: La cuenta del implementador a la que agregas la vinculación, a través del 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
  2. Tú o tu administrador deben otorgar al agente de servicio del recurso de Cloud Run el rol de creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator) en la cuenta de servicio que usas como identidad del servicio. El agente de servicio sigue el formato de service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com.

    Console

    1. Ve a la página Cuentas de servicio de la consola de Google Cloud :

      Ir a Cuentas de servicio

    2. Selecciona la dirección de correo electrónico de la cuenta de servicio que usas como identidad del servicio.

    3. Haz clic en la pestaña Permisos.

    4. Haz clic en el botón Otorgar acceso.

    5. Ingresa la dirección de correo electrónico del agente de servicio. Por ejemplo: service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com

    6. En el menú desplegable Seleccionar un rol, selecciona el Cuentas de servicio > Creador de tokens de cuenta de servicio.

    7. Haz clic en Guardar.

    gcloud

    Usa 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-CLOUD_RUN_RESOURCE_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com" \
        --role="roles/iam.serviceAccountTokenCreator"

    Reemplaza lo siguiente:

    • SERVICE_ACCOUNT_NAME: el nombre de la cuenta de servicio a la que conectas el recurso de Cloud Run
    • SERVICE_ACCOUNT_PROJECT_ID: Es el ID del proyecto en el que se encuentra la cuenta de servicio.
    • CLOUD_RUN_RESOURCE_PROJECT_NUMBER: El número del proyecto en el que se encuentra Cloud Run

    El comando imprime la política de permisos actualizada para la cuenta de servicio administrada por el usuario.

  3. El proyecto que contiene esta cuenta de servicio requiere que la política de la organización iam.disableCrossProjectServiceAccountUsage se establezca como falsa o no se aplique a nivel de carpeta o se herede de la configuración a nivel de proyecto. El valor predeterminado es de true.

    Console

    1. Ve a la página Políticas de la organización en la consola de Google Cloud :

      Ir a Políticas de la organización

    2. En el selector de proyectos, selecciona la organización y el proyecto para los que deseas inhabilitar el uso de la cuenta de servicio entre proyectos.

    3. Selecciona la política Inhabilitar el uso de cuentas de servicio entre proyectos.

    4. Haz clic en Administrar política.

    5. En Fuente de la política, selecciona Anular la política del elemento superior.

    6. Haz clic en Agregar una regla.

    7. En Aplicación forzosa, selecciona Desactivada.

    8. Para aplicar la política, haz clic en Establecer política.

    gcloud

    En el proyecto que tiene la cuenta de servicio, asegúrate de que no se aplique la restricción de la política de la organización iam.disableCrossProjectServiceAccountUsage. Esta restricción se aplica de forma predeterminada.

    Para inhabilitar esta restricción de política de la organización, ejecuta el siguiente comando:

    gcloud resource-manager org-policies disable-enforce iam.disableCrossProjectServiceAccountUsage
        --project=SERVICE_ACCOUNT_PROJECT_ID

    Reemplaza SERVICE_ACCOUNT_PROJECT_ID por el ID del proyecto que contiene la cuenta de servicio.

Puedes aplicar membresías de roles directamente al recurso de la cuenta de servicio o heredar de niveles superiores en la jerarquía de recursos.

Visualiza la configuración de la cuenta de servicio para el grupo de trabajadores

  1. En la consola de Google Cloud , ve a Cloud Run:

    Ir a Cloud Run

  2. Haz clic en Grupos de trabajadores para ver la lista de grupos de trabajadores implementados.

  3. Haz clic en el grupo de trabajadores que deseas examinar para mostrar su panel de detalles.

  4. Haz clic en la pestaña Seguridad para mostrar la información de seguridad del grupo de trabajadores, incluidas las cuentas de servicio.

¿Qué sigue?