Introducción a la identidad del servicio

Las identidades de servicio de Cloud Run permiten que tus cargas de trabajo en ejecución llamen a las APIs deCloud de Confiance by S3NS a través de las bibliotecas cliente de Cloud con tokens de acceso administrados. Cloud Run separa el acceso en dos identidades: una cuenta de implementación para administrar recursos y una identidad de servicio para las solicitudes de entorno de ejecución a los servicios deCloud de Confiance con las bibliotecas cliente de Cloud, como Cloud Storage, Firestore, Cloud SQL, Pub/Sub y Cloud Tasks.

Este documento está dirigido a administradores, operadores y desarrolladores que administran las políticas de la organización y el acceso de los usuarios a las cargas de trabajo de Cloud Run.

Identidades de Cloud Run

Para usar Cloud Run, Cloud de Confiance requiere dos tipos de identidades con los permisos adecuados:

  • Cuenta de implementación de Cloud Run: Es la identidad (ya sea una cuenta de usuario o una cuenta de servicio) que usas para implementar y administrar un recurso de Cloud Run realizando solicitudes a la API de Cloud Run Admin.
  • Identidad del servicio de Cloud Run: Es la identidad (una cuenta de servicio) que usa la instancia de Cloud Run. Cuando el código de Cloud Run que escribiste interactúa con las bibliotecas cliente de Cloud o llama a otro servicio de Cloud Run para la comunicación de servicio a servicio, usas esta identidad para realizar solicitudes de Cloud Run a las APIs deCloud de Confiance o a otros servicios de Cloud Run.

Para acceder y realizar solicitudes a las APIs de Cloud de Confiance o comunicarse entre servicios, cada identidad debe tener los permisos adecuados otorgados a ellas en Identity and Access Management (IAM).

Llama a la API de Cloud Run Admin con la cuenta de implementación

Llamas a la API de Cloud Run Admin desde Cloud Run con la cuenta de implementación de Cloud Run. La cuenta de implementación puede ser de usuario o una cuenta de servicio y representa la cuenta que se firmó en el entorno de Cloud de Confiance by S3NS .

Cuando la cuenta de implementación usa Cloud Run, IAM verifica si la cuenta de implementación tiene los permisos necesarios para realizar la operación de Cloud Run. En el siguiente diagrama, se muestra cómo una cuenta de usuario llama a la API de Cloud Run Admin para implementar una revisión nueva desde la consola deCloud de Confiance :

Llama a la API de Cloud Run Admin desde la consola de Cloud de Confiance .
Figura 1. Un usuario usa la consola de Cloud de Confiance para implementar una revisión nueva a través del envío de una solicitud con un token de acceso a la API de Cloud Run Admin. IAM usa ese token de acceso para verificar que la cuenta de usuario esté autenticada para acceder a la API de Cloud Run Admin antes de realizar la operación.

Llama a las APIs de Cloud de Confiance con la identidad de servicio

Cuando una instancia de Cloud Run interactúa con otros servicios de Cloud Run autenticados por IAM o llama a las bibliotecas cliente de Cloud a través del código de la aplicación o de funciones integradas, como las integraciones de Cloud Run o los activadores de volúmenes de Cloud Storage, el entorno de Cloud de Confiance usa las credenciales predeterminadas de la aplicación (ADC) para detectar automáticamente si la identidad de servicio de Cloud Run está autenticada para realizar la operación de la API. La identidad del servicio de Cloud Run es una cuenta de servicio que se asignó como la identidad de la instancia de Cloud Run cuando implementas una revisión o ejecutas un trabajo.

Una cuenta de servicio que se use como cuenta de implementación solo se usará como la identidad de servicio si configuras la misma cuenta de servicio en tu configuración de Cloud Run.

En el resto de esta guía, se describe cómo un recurso de Cloud Run usa la identidad de servicio para llamar y acceder a servicios y APIs de Google. Para obtener más información sobre la configuración de identidad del servicio, consulta las páginas de configuración de identidad del servicio para servicios, trabajos y grupos de trabajadores.

Tipos de cuentas de servicio para la identidad de servicio

Cuando tu instancia de Cloud Run realiza llamadas a las APIs de Cloud de Confiance by S3NS para realizar las operaciones que necesita, Cloud Run usa automáticamente una cuenta de servicio como la identidad de servicio. Los dos tipos de cuentas de servicio que se pueden usar como identidad de servicio son las siguientes:

  • Cuenta de servicio administrada por el usuario (opción recomendada): Debes crearla manualmente. la cuenta de servicio y determinar el conjunto de permisos más mínimo necesita acceder a recursos específicos de Cloud de Confiance by S3NS . La cuenta de servicio administrada por el usuario sigue el formato SERVICE_ACCOUNT_NAME@PROJECT_ID.s3ns.iam.gserviceaccount.com.
  • Cuenta de servicio predeterminada de Compute Engine: Cloud Run proporciona automáticamente la cuenta de servicio predeterminada de Compute Engine la identidad predeterminada del servicio. La cuenta de servicio predeterminada de Compute Engine el formato de PROJECT_NUMBER-compute@developer.s3ns-system.iam.gserviceaccount.com.

Evita la cuenta de servicio predeterminada cuando configures la identidad de servicio

De forma predeterminada, la cuenta de servicio predeterminada de Compute Engine de crear. Si no especificas una cuenta de servicio cuando se crea el recurso de Cloud Run, Cloud Run usa esta cuenta de servicio.

Según la configuración de la política de la organización, es posible que a la cuenta de servicio predeterminada se le otorgue automáticamente el rol de editor en tu proyecto. Te recomendamos inhabilitar la concesión automática de roles; para ello, aplica la restricción de la política de la organización iam.automaticIamGrantsForDefaultServiceAccounts. Si creaste tu organización después del 3 de mayo de 2024, esta restricción se aplica de forma predeterminada.

Si inhabilitas la concesión automática de roles, debes decidir qué roles se deben otorgar a las cuentas de servicio predeterminadas y, luego, otorgar estos roles a ti mismo.

Si la cuenta de servicio predeterminada ya tiene el rol de editor, te recomendamos que reemplaces el rol de editor por roles menos permisivos.

Cómo funciona la identidad de servicio

Cuando tu código usa bibliotecas cliente de Cloud que realizan solicitudes a la API deCloud de Confiance , sucede lo siguiente:

  1. La biblioteca cliente solicita un token de acceso de OAuth 2.0 para la identidad del servicio desde el servidor de metadatos de la instancia.
  2. El servidor de metadatos de la instancia proporciona un token de acceso de IAM la cuenta de servicio configurada como la identidad de servicio.
  3. Se envía la solicitud a la API de Cloud de Confiance con un token de acceso de OAuth 2.0.
  4. IAM verifica la identidad del servicio a la que se hace referencia en el token de acceso para los permisos necesarios y verifica las vinculaciones de políticas antes de reenviar la llamada al extremo de API.
  5. La API de Cloud de Confiance realiza la operación.
Llama a la API de Google Cloud desde Cloud Run.
Figura 1. Cloud Run genera un token de acceso desde el servidor de metadatos, e IAM lo usa para verificar que la identidad del servicio de Cloud Run asignada se autentique para acceder a las APIs de Cloud de Confiance .

Genera un token de acceso para la solicitud de Cloud Run para llamar a las APIs de Cloud de Confiance

Si tu código de Cloud Run usa Bibliotecas cliente de Cloud, configuras servicios Identity en Cloud Run asignando una cuenta de servicio en la implementación o la ejecución. Esto permite que la biblioteca adquiera acceso token para autenticar la solicitud de tu código. Si tu código de Cloud Run se comunica con otros servicios autenticados de Cloud Run, debes agregar el token de acceso a tus solicitudes.

Para asignar una cuenta de servicio como identidad del servicio, consulta las siguientes guías:

Sin embargo, si usas tu propio código personalizado o necesitas realizar solicitudes de manera programática, puedes usar servidor de metadatos directamente para recuperar manualmente los tokens de identidad y de acceso que se describen en la en la próxima sección. Ten en cuenta que no puedes consultar este servidor directamente desde tu máquina local, ya que el servidor de metadatos solo está disponible para cargas de trabajo que se ejecutan en Cloud de Confiance.

Recupera los tokens de ID y acceso con el servidor de metadatos

Los dos tipos de tokens que puedes recuperar con el servidor de metadatos son los siguientes:

  • Tokens de acceso de OAuth 2.0, que se usan para llamar a la mayoría de las bibliotecas cliente de las APIs de Google.
  • Tokens de ID, que se usan para llamar a otros servicios de Cloud Run o para invocar cualquier servicio para validar un token de ID.

Para recuperar un token, sigue las instrucciones en la pestaña correspondiente para el tipo de token que usas:

Tokens de acceso

Por ejemplo, si deseas crear un tema de Pub/Sub, usa el método projects.topics.create.

  1. Usa el servidor de metadatos de Compute para recuperar un token de acceso:

    curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" \
        --header "Metadata-Flavor: Google"

    Este extremo muestra una respuesta JSON con un atributo access_token.

  2. En tu solicitud de protocolo HTTP, la solicitud debe autenticarse con un token de acceso en el encabezado Authorization:

    PUT https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID
    Authorization: Bearer ACCESS_TOKEN
    

    Donde:

    • PROJECT_ID es el ID del proyecto.
    • TOPIC_ID es el ID del tema.
    • ACCESS_TOKEN es el token de acceso que recuperaste en el paso anterior.

    Respuesta:

    {
        "name": "projects/PROJECT_ID/topics/TOPIC_ID"
    }
    

Tokens de ID

Usa el servidor de metadatos de Compute para recuperar un token de identidad con un público específico:

curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity?audience=AUDIENCE" \
    --header "Metadata-Flavor: Google"

En el ejemplo anterior, AUDIENCE es el JWT Audience solicitado.

Para los servicios de Cloud Run, el público debe ser la URL del servicio que invocas o un público personalizado, como un dominio personalizado, configurado para el servicio.

https://service.domain.com

Para otros recursos, es probable que sea el ID de cliente de OAuth de un recurso protegido por IAP:

1234567890.apps.googleusercontent.com

Próximos pasos