Configurar la federación de identidades de cargas de trabajo con otros proveedores de identidades

En esta guía se describe cómo usar Workload Identity Federation con otros proveedores de identidades (IdPs).

Para autenticarte en Trusted Cloud, puedes permitir que la carga de trabajo intercambie sus credenciales específicas del entorno por credenciales de corta duración Trusted Cloudmediante la federación de identidades de cargas de trabajo.

Las cargas de trabajo que se ejecutan fuera de Trusted Cloud pueden tener acceso a credenciales específicas del entorno, como las siguientes:

  • Una carga de trabajo puede obtener un token de aserción OpenID Connect (OIDC) de un proveedor de identidades (IdP).

  • Una carga de trabajo puede obtener un token de aserción SAML de un proveedor de identidades (IdP).

Usar la federación de identidades de cargas de trabajo puede ayudarte a reducir el número de credenciales que requieren rotación.

En las siguientes secciones se describe cómo puedes usar la federación de identidades de carga de trabajo con proveedores de identidades que admitan los protocolos de autenticación OpenID Connect (OIDC) o SAML.

Preparar tu proveedor de identidades externo

Solo tiene que seguir estos pasos una vez por cada proveedor de identidades.

Antes de empezar, compruebe que su proveedor de identidades externo cumpla los siguientes requisitos:

OIDC

  • El IdP es compatible con OpenID Connect 1.0.

  • El IdP tiene un URI de emisor.

  • El JWK del proveedor de identidades que se usa para verificar un token de aserción OIDC se puede proporcionar de una de las siguientes formas:

    • Endpoints de metadatos de OIDC protegidos con SSL y TLS. Las URLs de los endpoints deben empezar por https:// y los endpoints deben ser de acceso público a través de Internet. Trusted Cloudno admite los endpoints protegidos con certificados autofirmados.

      Trusted Cloud usa estos endpoints para descargar el JWK de tu proveedor de identidades y usa este conjunto de claves para validar tokens.

    • Archivos JWKS de OIDC que se suben directamente a Trusted Cloud. Si usas este método, no es necesario que el endpoint sea accesible públicamente. Los campos x5c y x5t del JWK no se admiten y deben eliminarse antes de subir el archivo.

SAML

  • El IdP es compatible con SAML 2.0.

  • El IdP proporciona un documento de metadatos del SP de SAML que describe la configuración del proveedor de servicios SAML y contiene el certificado de firma del IdP.

    Trusted Cloud usa este certificado para validar las aserciones y las respuestas de SAML.

  • Los requisitos de la clave de firma X.509 de SAML son los siguientes:

    • Una clave pública RSA encapsulada en un certificado X.509 v3.

    • Requisitos de validez de los certificados:

      • notBefore: una marca de tiempo que no sea posterior a 7 días
      • notAfter: una marca de tiempo que no sea posterior a 25 años
    • Algoritmos recomendados:

Un proveedor de grupos de identidades de carga de trabajo se puede configurar con un máximo de tres claves de firma en un momento dado. Si hay varias claves, Trusted Cloud las recorre e intenta usar cada clave no caducada para completar una solicitud de intercambio de tokens.

Como medida de seguridad recomendada, te aconsejamos que no reutilices el mismo par de claves con otros servicios.

Si tu proveedor de identidades cumple estos criterios, haz lo siguiente:

OIDC

Configura tu proveedor de identidades para que tu carga de trabajo pueda obtener tokens de ID que cumplan los siguientes criterios:

  • Los tokens se firman con el algoritmo RS256 o ES256.
  • Los tokens contienen una reclamación aud con el siguiente valor:

    https://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/WORKLOAD_PROVIDER_ID
    

    Haz los cambios siguientes:

    • PROJECT_NUMBER: el número de proyecto del Trusted Cloud proyecto que usas para crear el grupo de identidades de carga de trabajo.
    • POOL_ID: un ID de tu elección que identifica el grupo de identidades de carga de trabajo. Debe usar el mismo ID cuando cree el grupo de identidades de carga de trabajo más adelante.
    • WORKLOAD_PROVIDER_ID: un ID de tu elección que identifica al proveedor de grupos de identidades de carga de trabajo. Debes usar el mismo ID cuando crees el proveedor de grupos de identidades de carga de trabajo más adelante.

    También puedes configurar el proveedor de grupos de identidades de carga de trabajo para que espere una audiencia personalizada.

  • Los tokens contienen una reclamación exp que es futura y una reclamación iat que es pasada.

    El valor de exp debe ser superior al valor de iat en un máximo de 24 horas.

Por lo general, es mejor usar tokens de ID al realizar un intercambio de tokens, ya que reflejan la identidad del usuario. Si decides usar tokens de acceso, asegúrate de que cumplan los siguientes requisitos adicionales:

  • Los tokens de acceso tienen el formato JSON Web Token.
  • Los tokens de acceso contienen una reclamación ISSUER para que la URL ISSUER/.well-known/openid-configuration apunte al endpoint de metadatos de OIDC del IdP.

  • Para subir claves JWK locales, consulta Gestionar JWKs de OIDC.

SAML

Configura tu proveedor de identidades para que las aserciones SAML contengan elementos que cumplan los siguientes criterios:

  • Un elemento Issuer que se ha definido como el ID de entidad configurado en el proveedor de grupos de identidades de carga de trabajo. El formato de la entidad emisora debe omitirse o definirse como urn:oasis:names:tc:SAML:2.0:nameid-format:entity.
  • un elemento Subject con lo siguiente:
    • un elemento NameID.
    • exactamente un elemento SubjectConfirmation con Method definido como urn:oasis:names:tc:SAML:2.0:cm:bearer.
    • Un elemento SubjectConfirmationData con el atributo NotOnOrAfter definido con una marca de tiempo futura y sin valor NotBefore.
  • un elemento Conditions con lo siguiente:

    • NotBefore se ha omitido o es una fecha pasada.
    • NotOnOrAfter se ha omitido o es posterior a la fecha actual.
    • Un Audience con el siguiente formato:

      https://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/WORKLOAD_PROVIDER_ID
      

      Haz los cambios siguientes:

      • PROJECT_NUMBER: el número de proyecto del Trusted Cloud proyecto que usas para crear el grupo de identidades de carga de trabajo.
      • POOL_ID: un ID de tu elección que identifica el grupo de identidades de carga de trabajo. Debe usar el mismo ID cuando cree el grupo de identidades de carga de trabajo más adelante.
      • WORKLOAD_PROVIDER_ID: un ID de tu elección que identifica al proveedor de grupos de identidades de carga de trabajo. Debes usar el mismo ID cuando crees el proveedor de grupos de identidades de carga de trabajo más adelante.
  • al menos un elemento AuthnStatement.

  • Un elemento SessionNotOnOrAfter con una marca de tiempo que se produce en el futuro. También puedes omitir el elemento.

En el caso de las aserciones SAML que se incluyen en una respuesta SAML, esta debe contener lo siguiente:

  • exactamente una aserción que cumpla los criterios de aserción SAML que se describen más arriba en esta sección.
  • Un atributo IssueInstant con un valor de menos de una hora.
  • StatusCode urn:oasis:names:tc:SAML:2.0:status:Success.

Se debe firmar la aserción SAML, la respuesta o ambas.

Configurar la federación de identidades de cargas de trabajo

Solo tiene que seguir estos pasos una vez por cada proveedor de identidades. Después, puedes usar el mismo grupo y proveedor de identidades de carga de trabajo en varias cargas de trabajo y en varios proyectos. Trusted Cloud

Para empezar a configurar la federación de identidades de cargas de trabajo, haz lo siguiente:

  1. In the Trusted Cloud console, on the project selector page, select or create a Trusted Cloud project.

    Go to project selector

  2. Lo más recomendable es usar un proyecto específico para gestionar los grupos y proveedores de Workload Identity.
  3. Verify that billing is enabled for your Trusted Cloud project.

  4. Enable the IAM, Resource Manager, Service Account Credentials, and Security Token Service APIs.

    Enable the APIs

Gestionar JWKs de OIDC subidos por el usuario (opcional)

En esta sección se explica cómo gestionar las JWKs de OIDC subidas por el usuario en los proveedores de OIDC de grupos de Workload Identity.

Crear un proveedor y subir JWKs de OIDC

Para crear JWKs de OIDC, consulta Implementaciones de JWT, JWS, JWE, JWK y JWA.

Para subir un archivo JWK de OIDC al crear un proveedor de grupos de identidades de carga de trabajo, ejecuta el comando gcloud iam workload-identity-pools providers create-oidc con --jwk-json-path="JWK_JSON_PATH". Sustituye JWK_JSON_PATH por la ruta al archivo JSON de JWKs.

Esta operación crea claves subidas con las del archivo.

Actualizar JWKs de OIDC

Para actualizar las JWKs de OIDC, ejecuta el comando gcloud iam workload-identity-pools providers update-oidc con --jwk-json-path="JWK_JSON_PATH". Sustituye JWK_JSON_PATH por la ruta al archivo JSON de JWKs.

Esta operación sustituye las claves subidas por las del archivo. No puedes restaurar las claves sustituidas.

Eliminar todos los JWKs de OIDC subidos

Para eliminar todos los JWKs de OIDC subidos y volver a usar el URI del emisor para obtener las claves, ejecuta el comando gcloud iam workload-identity-pools providers update-oidc con --jwk-json-path="JWK_JSON_PATH". Sustituye JWK_JSON_PATH por la ruta a un archivo vacío. Usa la marca --issuer-uri para definir el URI del emisor.

Esta operación elimina todas las llaves que hayas subido y las sustituye por las del archivo. No puedes restaurar las claves eliminadas.

Definir una asignación de atributos y una condición

Los tokens OIDC o las aserciones SAML emitidos por tu proveedor de identidades pueden contener varios atributos, y debes decidir qué atributo quieres usar como identificador de asunto (google.subject) en Trusted Cloud.

Si quiere, puede mapear atributos adicionales. Después, puedes hacer referencia a estos atributos al conceder acceso a los recursos.

OIDC

Tus asignaciones de atributos pueden usar las reclamaciones insertadas en el token de ID o en el token de acceso emitido por el proveedor de identidades externo.

Debe asignar una de estas reclamaciones a google.subject para identificar al usuario de forma única. Para protegerte frente a las amenazas de suplantación de identidad, elige una reclamación con un valor único que no se pueda cambiar.

Muchos proveedores de identidades rellenan la reclamación sub con un ID único e inmutable. En estos proveedores de identidades, puedes asignar la reclamación sub a google.subject:

google.subject=assertion.sub

No uses una afirmación como email para este fin. Las direcciones de correo electrónico se pueden reasignar o cambiar, por lo que no identifican a un usuario de forma única y permanente.

SAML

Tus asignaciones de atributos pueden usar los elementos <Subject> y <Attribute> insertados en la aserción emitida por el proveedor de identidades externo. Se puede hacer referencia a los atributos SAML mediante las siguientes palabras clave:

  • assertion.subject contiene el NameID del usuario autenticado que se encuentra en el elemento <Subject>.
  • assertion.attributes['ATTRIBUTE_NAME'] contiene una lista de valores para el <Attribute> con el mismo nombre.

Debe asignar una de estas reclamaciones a google.subject para identificar al usuario de forma única. Para protegerte frente a las amenazas de suplantación de identidad, elige una reclamación con un valor único que no se pueda cambiar.

Muchos proveedores de identidades rellenan el NameId con un ID único e inmutable. En el caso de estos proveedores de identidades, puede asignar el atributo NameId a google.subject:

google.subject=assertion.subject

No utilice un atributo como http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress para este fin. Las direcciones de correo suelen poder reasignarse o cambiarse, por lo que no identifican a un usuario de forma única y permanente.

También puede definir una condición de atributo. Las condiciones de los atributos son expresiones CEL que pueden comprobar los atributos de aserción y los atributos de destino. Si el atributo de condición se evalúa como true para una credencial determinada, se acepta la credencial. De lo contrario, se rechaza la credencial.

OIDC

Puede usar una condición de atributo para restringir los usuarios que pueden usar la federación de identidades de cargas de trabajo para obtener tokens de corta duración. Trusted Cloud

Por ejemplo, la siguiente condición restringe el acceso a los tokens que contienen una reclamación personalizada service_account con el valor true:

assertion.service_account==true

SAML

Puede usar una condición de atributo para restringir los usuarios que pueden usar la federación de identidades de cargas de trabajo para obtener tokens de corta duración. Trusted Cloud

Por ejemplo, la siguiente condición restringe el acceso a las aserciones que contienen un atributo https://example.com/SAML/Attributes/AllowGcpFederation personalizado con el valor true:

assertion.attributes['https://example.com/SAML/Attributes/AllowGcpFederation'][0]=='true'

Crear el grupo y el proveedor de identidades de carga de trabajo

Roles obligatorios

Para obtener los permisos que necesitas para configurar la federación de identidades de carga de trabajo, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y acceso en el proyecto:

Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.

También puedes usar el rol básico Propietario de gestión de identidades y accesos (roles/owner), que incluye permisos para configurar la federación de identidades. No debes conceder roles básicos en un entorno de producción, pero sí puedes hacerlo en un entorno de desarrollo o de pruebas.

Ya has recopilado toda la información que necesitas para crear un grupo y un proveedor de identidades de carga de trabajo:

Consola

  1. En la Trusted Cloud consola, ve a la página Nuevo proveedor y grupo de cargas de trabajo.

    Ve a Nuevo proveedor y grupo de cargas de trabajo.

  2. En Create an identity pool (Crear un grupo de identidades), introduce lo siguiente:

    • Nombre: nombre del grupo. El nombre también se usa como ID del grupo. No podrás cambiar el ID del grupo más adelante.
    • Descripción: texto que describe el propósito del grupo.
  3. Haz clic en Continuar.

  4. Configura los ajustes del proveedor de la siguiente manera:

    OIDC

    • En Seleccionar un proveedor, selecciona OpenID Connect (OIDC).
    • En Nombre del proveedor, escribe el nombre del proveedor. El nombre también se usa como ID de proveedor. No puedes cambiar el ID del proveedor después de crearlo.
    • En Issuer URL (URL del emisor), introduce la URL del emisor de tu proveedor de identidades. La URL debe empezar por https://.
    • Opcional: En Archivo JWK (JSON), elige un archivo JWK para subirlo. Si no se proporciona este campo, Trusted Cloud intentará obtener una JWK del emisor.
    • Audiencias permitidas: audiencia esperada de los tokens de ID.

    SAML

    • En Select a provider (Seleccionar un proveedor), selecciona SAML.
    • En Nombre del proveedor, escribe el nombre del proveedor. El nombre también se usa como ID de proveedor. No puedes cambiar el ID del proveedor después de crearlo.
    • En IDP Metadata file (XML) (Archivo de metadatos del proveedor de identidades [XML]), sube el documento XML de metadatos SAML que te haya proporcionado tu proveedor de identidades.
  5. Haz clic en Continuar.

  6. En Configurar atributos del proveedor, añade las asignaciones de atributos que has identificado anteriormente en esta guía.

  7. En Condiciones de los atributos, introduzca la condición del atributo que ha identificado anteriormente en esta guía. Deje el campo en blanco si no tiene ninguna condición de atributo.

  8. Para crear el grupo de identidades de carga de trabajo y el proveedor, haz clic en Guardar.

gcloud

  1. Para crear un grupo de identidades de carga de trabajo, ejecuta el siguiente comando:

    gcloud iam workload-identity-pools create POOL_ID \
        --location="global" \
        --description="DESCRIPTION" \
        --display-name="DISPLAY_NAME"
    

    Haz los cambios siguientes:

    • POOL_ID: ID único del grupo.
    • DISPLAY_NAME: el nombre del grupo.
    • DESCRIPTION: una descripción de la piscina que elijas. Esta descripción aparece cuando concedes acceso a identidades de grupo.
  2. Para añadir un proveedor de grupos de identidades de carga de trabajo, sigue estos pasos:

    OIDC

    Para añadir un proveedor de grupos de identidades de carga de trabajo OIDC, ejecuta el siguiente comando:

    gcloud iam workload-identity-pools providers create-oidc WORKLOAD_PROVIDER_ID \
        --location="global" \
        --workload-identity-pool="POOL_ID" \
        --issuer-uri="ISSUER" \
        --allowed-audiences="AUDIENCE" \
        --attribute-mapping="MAPPINGS" \
        --attribute-condition="CONDITIONS"
        --jwk-json-path="JWK_JSON_PATH"
    

    Haz los cambios siguientes:

    • WORKLOAD_PROVIDER_ID: un ID de proveedor de grupos de identidades de carga de trabajo único que elijas.
    • POOL_ID: el ID del grupo de identidades de carga de trabajo que has creado anteriormente.
    • ISSUER: un URI de emisor tal como se define en los metadatos de OIDC.
    • AUDIENCE: la audiencia esperada de los tokens de ID, que, en el caso de muchos proveedores, coincide con el ID de cliente.
    • MAPPINGS: lista separada por comas de asignaciones de atributos que has creado anteriormente en esta guía.
    • CONDITIONS: una condición de atributo opcional que ha creado anteriormente en esta guía. Quita el parámetro si no tienes una condición de atributo.
    • JWK_JSON_PATH: Ruta opcional a un archivo JWKs de OIDC subido localmente. Si no se proporciona este parámetro, Trusted Cloud en su lugar se usa la ruta /.well-known/openid-configuration de tu IdP para obtener los JWKs que contienen las claves públicas.

    SAML

    Para añadir un proveedor de grupos de identidades de carga de trabajo SAML, ejecuta el siguiente comando:

    gcloud iam workload-identity-pools providers create-saml WORKLOAD_PROVIDER_ID \
        --location="global" \
        --workload-identity-pool="POOL_ID" \
        --idp-metadata-path="IDP_METADATA_PATH" \
        --attribute-mapping="MAPPINGS" \
        --attribute-condition="CONDITIONS"
    

    Haz los cambios siguientes:

    • POOL_ID: el ID del grupo
    • IDP_METADATA_PATH: la ruta local al documento de metadatos del proveedor de identidades SAML
    • MAPPINGS: lista separada por comas de asignaciones de atributos que has creado anteriormente en esta guía
    • CONDITIONS: Opcional: la condición del atributo que has creado anteriormente en esta guía

    El prefijo gcp- está reservado y no se puede usar en un ID de grupo de identidades de Workforce ni en un ID de proveedor de grupos de identidades de Workforce.

    Opcional: Aceptar aserciones SAML cifradas de tu proveedor de identidades

    Para habilitar tu proveedor de identidades SAML 2.0 para que genere aserciones SAML cifradas que pueda aceptar la federación de identidades de carga de trabajo, haz lo siguiente:

    • En la federación de identidades de cargas de trabajo, haz lo siguiente:
      • Crea un par de claves asimétricas para tu proveedor de grupos de identidades de carga de trabajo.
      • Descarga un archivo de certificado que contenga la clave pública.
      • Configura tu proveedor de identidades SAML para que use la clave pública para cifrar las aserciones SAML que emita.
    • En tu proveedor de identidades, haz lo siguiente:
      • Habilita el cifrado de aserciones, también conocido como cifrado de tokens.
      • Sube la clave pública que has creado en la federación de identidades de cargas de trabajo.
      • Confirma que tu IdP genera aserciones SAML cifradas.
    Ten en cuenta que, aunque se hayan configurado claves de proveedor de cifrado SAML, la federación de identidades de cargas de trabajo puede seguir procesando una aserción de texto sin cifrar.

    Crear claves de cifrado de aserciones SAML de federación de identidades de cargas de trabajo

    En esta sección se explica cómo crear un par de claves asimétricas que permita a la federación de identidades de cargas de trabajo aceptar aserciones SAML cifradas.

    Trusted Cloud by S3NS usa la clave privada para descifrar las aserciones SAML que emite tu proveedor de identidades. Para crear un par de claves asimétricas que se pueda usar con el cifrado SAML, ejecuta el siguiente comando. Para obtener más información, consulta Algoritmos de cifrado SAML admitidos.

    gcloud iam workload-identity-pools providers keys create KEY_ID \
        --workload-identity-pool WORKLOAD_POOL_ID \
        --provider WORKLOAD_PROVIDER_ID \
        --location global \
        --use encryption \
        --spec KEY_SPECIFICATION

    Haz los cambios siguientes:

    • KEY_ID: el nombre de la clave que elijas
    • WORKLOAD_POOL_ID: el ID del grupo
    • WORKLOAD_PROVIDER_ID: el ID del proveedor de grupos de identidades de Workforce
    • KEY_SPECIFICATION: la especificación de la clave, que puede ser rsa-2048, rsa-3072 o rsa-4096.

    Una vez creado el par de claves, ejecuta el siguiente comando para descargar la clave pública en un archivo de certificado. Solo la federación de identidades de cargas de trabajo tiene acceso a la clave privada.

    gcloud iam workload-identity-pools providers keys describe KEY_ID \
        --workload-identity-pool WORKLOAD_POOL_ID \
        --provider WORKLOAD_PROVIDER_ID \
        --location global \
        --format "value(keyData.key)" \
        > CERTIFICATE_PATH

    Haz los cambios siguientes:

    • KEY_ID: el nombre de la clave
    • WORKLOAD_POOL_ID: el ID del grupo
    • WORKLOAD_PROVIDER_ID: el ID del proveedor de grupos de identidades de Workforce
    • CERTIFICATE_PATH: la ruta en la que se escribirá el certificado (por ejemplo, saml-certificate.cer o saml-certificate.pem).

    Configurar un IdP compatible con SAML 2.0 para que emita aserciones SAML cifradas

    Configura tu proveedor de identidades SAML para que use el certificado público descargado en el último paso para cifrar las aserciones de SAML que emita. Pídele instrucciones específicas al equipo de tu IdP.

    Una vez que haya configurado su proveedor de identidades para cifrar las aserciones SAML, le recomendamos que compruebe que las aserciones que genera estén cifradas. Aunque se haya configurado el cifrado de aserciones SAML, la federación de identidades de cargas de trabajo puede seguir procesando aserciones de texto sin formato.

    Eliminar claves de cifrado de federación de identidades de cargas de trabajo

    Para eliminar las claves de cifrado SAML, ejecuta el siguiente comando:
      gcloud iam workload-identity-pools providers keys delete KEY_ID \
          --workload-identity-pool WORKLOAD_POOL_ID \
          --provider WORKLOAD_PROVIDER_ID \
          --location global

    Haz los cambios siguientes:

    • KEY_ID: el nombre de la clave
    • WORKLOAD_POOL_ID: el ID del grupo
    • WORKLOAD_PROVIDER_ID: el ID del proveedor de grupos de identidades de Workforce

    Algoritmos de cifrado SAML admitidos

    La federación de identidades de cargas de trabajo admite los siguientes algoritmos de transporte de claves:

    La federación de identidades de cargas de trabajo admite los siguientes algoritmos de cifrado por bloques:

Autenticar una carga de trabajo

Debes seguir estos pasos una vez por cada carga de trabajo.

Permitir que tu carga de trabajo externa acceda a los recursos de Trusted Cloud

Para proporcionar a tu carga de trabajo acceso a los recursos de Trusted Cloud , te recomendamos que concedas acceso directo a los recursos a la entidad principal. En este caso, el principal es el usuario federado. Algunos Trusted Cloud productos tienen limitaciones en la API de Google Cloud. Si tu carga de trabajo llama a un endpoint de API que tiene una limitación, puedes usar la suplantación de identidad de la cuenta de servicio. En este caso, el principal es laTrusted Cloud cuenta de servicio, que actúa como identidad. Concede acceso a la cuenta de servicio en el recurso.

Acceso directo a recursos

Puedes conceder acceso a una identidad federada directamente a los recursos mediante la Trusted Cloud consola o la CLI de gcloud.

Consola

Para usar la Trusted Cloud consola y asignar roles de gestión de identidades y accesos directamente a un recurso, debes ir a la página del recurso y, a continuación, asignar el rol. En el siguiente ejemplo se muestra cómo ir a la página de Cloud Storage y asignar el rol Lector de objetos de Storage (roles/storage.objectViewer) a una identidad federada directamente en un segmento de Cloud Storage.

  1. En la Trusted Cloud consola, ve a la página Segmentos de Cloud Storage.

    Ir a Contenedores

  2. En la lista de segmentos, haga clic en el nombre del segmento al que quiera conceder el rol.

  3. Seleccione la pestaña Permisos, situada cerca de la parte superior de la página.

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

    Aparecerá el cuadro de diálogo Añadir principales.

  5. En el campo Nuevos principales, introduzca una o varias identidades que necesiten acceder a su contenedor.

    Por tema

    principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT
    

    Haz los cambios siguientes:

    • PROJECT_NUMBER: el número del proyecto
    • POOL_ID: el ID del grupo de cargas de trabajo
    • SUBJECT: el asunto individual asignado desde tu proveedor de identidades. Por ejemplo: administrator@example.com

    Por grupo

    principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP
    

    Haz los cambios siguientes:

    • PROJECT_NUMBER: el número del proyecto
    • WORKLOAD_POOL_ID: el ID del grupo de cargas de trabajo
    • GROUP: el grupo asignado de tu proveedor de identidades. Por ejemplo: administrator-group@example.com

    Por atributo

    principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE
    

    Haz los cambios siguientes:

    • PROJECT_NUMBER: el número del proyecto
    • WORKLOAD_POOL_ID: el ID del grupo de cargas de trabajo
    • ATTRIBUTE_NAME: uno de los atributos que se ha asignado desde tu proveedor de identidades
    • ATTRIBUTE_VALUE: el valor del atributo
  6. Selecciona uno o varios roles en el menú desplegable Selecciona un rol. Los roles que selecciones aparecerán en el panel con una breve descripción de los permisos que conceden.

  7. Haz clic en Guardar.

gcloud

Para usar la CLI de gcloud y asignar roles de IAM en un recurso de un proyecto, haz lo siguiente:

  1. Obtén el número del proyecto en el que se define el recurso.

    gcloud projects describe $(gcloud config get-value core/project) --format=value\(projectNumber\)
    
  2. Concede acceso al recurso.

    Para usar la CLI de gcloud y asignar el rol Lector de objetos de Storage (roles/storage.objectViewer) a identidades externas que cumplan determinados criterios, ejecuta el siguiente comando.

    Por tema

    gcloud storage buckets add-iam-policy-binding BUCKET_ID \
        --role=roles/storage.objectViewer \
        --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT"

    Por grupo

    gcloud storage buckets add-iam-policy-binding BUCKET_ID \
        --role=roles/storage.objectViewer \
        --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP"

    Por atributo

    gcloud storage buckets add-iam-policy-binding BUCKET_ID \
        --role=roles/storage.objectViewer \
        --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE"

    Haz los cambios siguientes:

    • BUCKET_ID: el contenedor al que se va a conceder acceso
    • PROJECT_NUMBER: el número de proyecto del proyecto que contiene el grupo de identidades de carga de trabajo.
    • POOL_ID: el ID del grupo de identidades de carga de trabajo
    • SUBJECT: el valor esperado del atributo que has asignado a google.subject
    • GROUP: el valor esperado del atributo que has asignado a google.groups
    • ATTRIBUTE_NAME: el nombre de un atributo personalizado en tu asignación de atributos
    • ATTRIBUTE_VALUE: el valor del atributo personalizado en tu asignación de atributos

    Puedes conceder roles en cualquier Trusted Cloud recurso que admita políticas de permiso de gestión de identidades y accesos.

Suplantación de identidad de cuentas de servicio

  1. Para crear una cuenta de servicio para la carga de trabajo externa, sigue estos pasos:

    1. Enable the IAM, Security Token Service, and Service Account Credentials APIs.

      Enable the APIs

    2. Crea una cuenta de servicio que represente la carga de trabajo. Te recomendamos que utilices una cuenta de servicio específica para cada carga de trabajo. La cuenta de servicio no tiene que estar en el mismo proyecto que el grupo de identidades de carga de trabajo, pero debes hacer referencia al proyecto que contiene la cuenta de servicio.

    3. Concede acceso a la cuenta de servicio a los recursos a los que quieras que accedan las identidades externas.

  2. Para permitir que la identidad federada suplante la cuenta de servicio, haz lo siguiente:

Consola

Para usar la Trusted Cloud consola y conceder roles de gestión de identidades y accesos a una identidad federada con una cuenta de servicio, sigue estos pasos:

Cuenta de servicio en el mismo proyecto

  1. Para conceder acceso mediante la suplantación de identidad de una cuenta de servicio en el mismo proyecto, sigue estos pasos:

    1. Ve a la página Grupos de Workload Identity.

      Ir a Grupos de Workload Identity

    2. Selecciona Conceder acceso.

    3. En el cuadro de diálogo Grant access to service account (Conceder acceso a la cuenta de servicio), selecciona Grant access using Service Account impersonation (Conceder acceso mediante la suplantación de la cuenta de servicio).

    4. En la lista Cuentas de servicio, selecciona la cuenta de servicio que las identidades externas deben suplantar y haz lo siguiente:

    5. Para elegir qué identidades del grupo pueden suplantar la identidad de la cuenta de servicio, realiza una de las siguientes acciones:

      • Para permitir que solo determinadas identidades del grupo de identidades de carga de trabajo suplanten la identidad de la cuenta de servicio, seleccione Solo las identidades que coincidan con el filtro.

      • En la lista Nombre del atributo, seleccione el atributo por el que quiera filtrar.

      • En el campo Valor del atributo, introduzca el valor esperado del atributo. Por ejemplo, si utiliza una asignación de atributos google.subject=assertion.sub, defina el nombre del atributo como subject y el valor del atributo como el valor de la reclamación sub en los tokens emitidos por su proveedor de identidades externo.

    6. Para guardar la configuración, haz clic en Guardar y, a continuación, en Cerrar.

Cuenta de servicio en otro proyecto

  1. Para conceder acceso mediante la suplantación de identidad de una cuenta de servicio en otro proyecto, sigue estos pasos:

    1. Ve a la página Cuentas de servicio.

      Ir a Cuentas de servicio

    2. Selecciona la cuenta de servicio que quieras suplantar.

    3. Haz clic en Gestionar acceso.

    4. Haz clic en Añadir principal.

    5. En el campo Nuevo principal, introduce uno de los siguientes identificadores principales de las identidades de tu grupo que suplantarán la cuenta de servicio.

      Por tema

      principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT
      

      Haz los cambios siguientes:

      • PROJECT_NUMBER: el número del proyecto
      • POOL_ID: el ID del grupo de cargas de trabajo
      • SUBJECT: el asunto individual asignado desde tu proveedor de identidades. Por ejemplo: administrator@example.com

      Por grupo

      principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP
      

      Haz los cambios siguientes:

      • PROJECT_NUMBER: el número del proyecto
      • WORKLOAD_POOL_ID: el ID del grupo de cargas de trabajo
      • GROUP: el grupo asignado de tu proveedor de identidades. Por ejemplo: administrator-group@example.com

      Por atributo

      principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE
      

      Haz los cambios siguientes:

      • PROJECT_NUMBER: el número del proyecto
      • WORKLOAD_POOL_ID: el ID del grupo de cargas de trabajo
      • ATTRIBUTE_NAME: uno de los atributos que se ha asignado desde tu proveedor de identidades
      • ATTRIBUTE_VALUE: el valor del atributo

      Por piscina

      principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/*
      

      Haz los cambios siguientes:

      • PROJECT_NUMBER: el número del proyecto
      • WORKLOAD_POOL_ID: el ID del grupo de cargas de trabajo
    6. En Selecciona un rol, selecciona el rol Usuario de Workload Identity (roles/iam.workloadIdentityUser).

    7. Para guardar la configuración, haz clic en Guardar.

gcloud

Para conceder el rol de usuario de identidad de carga de trabajo (roles/iam.workloadIdentityUser) a un principal federado o a un conjunto de principales, ejecuta el siguiente comando. Para obtener más información sobre los identificadores principales de la federación de identidades de cargas de trabajo, consulta Tipos de principales.

Por tema

gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
    --role=roles/iam.workloadIdentityUser \
    --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT"

Por grupo

gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
    --role=roles/iam.workloadIdentityUser \
    --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP"

Por atributo

gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
    --role=roles/iam.workloadIdentityUser \
    --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE"

Haz los cambios siguientes:

  • SERVICE_ACCOUNT_EMAIL: la dirección de correo de la cuenta de servicio
  • PROJECT_NUMBER: el número de proyecto del proyecto que contiene el grupo de identidades de carga de trabajo.
  • POOL_ID: el ID del grupo de identidades de carga de trabajo
  • SUBJECT: el valor esperado del atributo que has asignado a google.subject
  • GROUP: el valor esperado del atributo que has asignado a google.groups
  • ATTRIBUTE_NAME: el nombre de un atributo personalizado en tu asignación de atributos
  • ATTRIBUTE_VALUE: el valor del atributo personalizado en tu asignación de atributos

Descargar una configuración de credenciales

En esta sección se describe cómo descargar la configuración de las credenciales mediante la consolaTrusted Cloud .

Para que tu carga de trabajo pueda acceder a las bibliotecas de cliente, primero debes descargar y configurar las credenciales predeterminadas de la aplicación (ADC). Para ello, sigue estos pasos:

  1. En la Trusted Cloud consola, ve a la página Grupos de Workload Identity.

    Ir a Grupos de Workload Identity
  2. En la tabla, selecciona tu grupo para ir a la página de detalles del grupo.

  3. Haz clic en Conceder acceso.

  4. Selecciona Conceder acceso mediante identidades federadas (recomendado).

  5. Para descargar la credencial predeterminada de la aplicación (ADC) de forma que tu carga de trabajo pueda acceder a las bibliotecas de cliente, haz lo siguiente:

    1. Haz clic en Descargar configuración.

    2. En el cuadro de diálogo Configura tu aplicación, haz lo siguiente:

      1. En la lista desplegable Proveedor, selecciona tu proveedor.

      2. En Ruta del token de OIDC o Ruta de la aserción de SAML, introduce la ruta donde se encuentra el token o la aserción.

      3. En la lista desplegable Tipo de formato, selecciona el formato.

    3. Haz clic en Descargar configuración y anota la ruta donde has guardado el archivo.

Crear una configuración de credenciales

Las bibliotecas de cliente de Cloud, la CLI de gcloud y Terraform pueden obtener automáticamente credenciales externas y usarlas para acceder a Trusted Cloud. Para que las bibliotecas y las herramientas puedan completar este proceso, debes proporcionar un archivo de configuración de credenciales. Este archivo define lo siguiente:

  • Dónde obtener las credenciales externas
  • Qué grupo y proveedor de identidades de carga de trabajo se deben usar
  • Qué cuenta de servicio se va a suplantar, si usas la suplantación de cuentas de servicio

Las bibliotecas de cliente de Cloud obtienen credenciales externas de un archivo local, una URL HTTP o ejecutando un archivo ejecutable local:

  • Credenciales procedentes de ejecutables: las bibliotecas inician un ejecutable cada vez que necesitan una nueva credencial. Si el archivo ejecutable consigue obtener una nueva credencial externa, debe escribir un documento JSON en STDOUT que tenga el siguiente aspecto:

    OIDC

    {
      "version": 1,
      "success": true,
      "token_type": "urn:ietf:params:oauth:token-type:id_token",
      "id_token": "HEADER.PAYLOAD.SIGNATURE",
      "expiration_time": 1620499962
    }
    

    Si el archivo ejecutable no consigue obtener una nueva credencial, debe escribir un documento JSON en STDOUT con el siguiente formato:

    {
      "version": 1,
      "success": false,
      "code": "401",
      "message": "Caller not authorized."
    }
    

    Los documentos JSON usan los siguientes campos:

    • version: la versión de la salida JSON. Solo se admite la versión 1.
    • success: el estado de la respuesta.

      Cuando true, la respuesta debe contener los campos id_token y token_type. El archivo ejecutable debe cerrarse con el código de salida 0.

      Si false, la respuesta debe contener los campos code y message y salir con un valor distinto de cero.

    • token_type: el tipo de token de la credencial externa. Los valores admitidos son:

      • urn:ietf:params:oauth:token-type:id_token
      • urn:ietf:params:oauth:token-type:jwt
    • id_token: la credencial externa.

    • expiration_time: tiempo de caducidad del token de OIDC en segundos (tiempo de época de Unix). Este campo solo es obligatorio cuando se ha especificado un archivo de salida en la configuración de las credenciales.

    • code: la cadena del código de error.

    • message: el mensaje de error.

    SAML

    {
      "version": 1,
      "success": true,
      "token_type": "urn:ietf:params:oauth:token-type:saml2",
      "saml_response": "...",
      "expiration_time": 1620499962
    }
    

    Si el archivo ejecutable no consigue obtener una nueva credencial, debe escribir un documento JSON en STDOUT con el siguiente formato:

    {
      "version": 1,
      "success": false,
      "code": "401",
      "message": "Caller not authorized."
    }
    

    Los documentos JSON usan los siguientes campos:

    • version: la versión de la salida JSON. Solo se admite la versión 1.
    • success: el estado de la respuesta.

      Cuando true, la respuesta debe contener los campos id_token y token_type. El archivo ejecutable debe cerrarse con el código de salida 0.

      Si false, la respuesta debe contener los campos code y message y salir con un valor distinto de cero.

    • token_type: el tipo de token de la credencial externa. Debe ser urn:ietf:params:oauth:token-type:saml2.

    • saml_response: la respuesta SAML o la aserción SAML codificada en base64.

    • expiration_time: tiempo de caducidad de la aserción en segundos (tiempo de época de Unix). Este campo solo es obligatorio cuando se ha especificado un archivo de salida en la configuración de las credenciales.

    • code: la cadena del código de error.

    • message: el mensaje de error.

    Al iniciar el ejecutable, las bibliotecas de cliente definen las siguientes variables de entorno:

    • GOOGLE_EXTERNAL_ACCOUNT_AUDIENCE: Audiencia de la configuración de las credenciales. Siempre presente.
    • GOOGLE_EXTERNAL_ACCOUNT_TOKEN_TYPE: Tipo de token de asunto esperado. Siempre presente.
    • GOOGLE_EXTERNAL_ACCOUNT_IMPERSONATED_EMAIL: Correo de la cuenta de servicio. Solo se incluye cuando se usa la suplantación de cuentas de servicio.
    • GOOGLE_EXTERNAL_ACCOUNT_OUTPUT_FILE: Ubicación del archivo de salida de la configuración de las credenciales. Solo se presenta cuando se especifica en la configuración de las credenciales.

    Para usar credenciales procedentes de un archivo ejecutable, debes asignar el valor 1 a la variable de entorno GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES.

  • Credenciales procedentes de un archivo: las bibliotecas leen las credenciales externas de un archivo JSON o de texto sin formato local. Por ejemplo:

    JSON

    {
      "mytoken": "ey...
    }
    

    Texto

    ey...
    

    La credencial externa puede ser:

    • Un token de OIDC
    • Una respuesta SAML
    • una aserción SAML codificada en base64

    Debe actualizar el archivo periódicamente para que siempre contenga una credencial válida. Por ejemplo, si el token OIDC o la aserción SAML son válidos durante una hora, debe actualizar el archivo al menos una vez cada hora.

  • Credenciales procedentes de URLs: las bibliotecas realizan una solicitud GET a un endpoint HTTP cada vez que necesitan una nueva credencial. El endpoint debe devolver una respuesta de texto sin formato o JSON que sea equivalente al formato utilizado por las credenciales procedentes de archivos.

Para crear un archivo de configuración de credenciales, sigue estos pasos:

Credenciales procedentes de ejecutables

gcloud iam workload-identity-pools create-cred-config \
    projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/WORKLOAD_PROVIDER_ID \
    --service-account=SERVICE_ACCOUNT_EMAIL \
    --service-account-token-lifetime-seconds=SERVICE_ACCOUNT_TOKEN_LIFETIME \
    --output-file=FILEPATH.json \
    --executable-command=EXECUTABLE_COMMAND \
    --executable-timeout-millis=EXECUTABLE_TIMEOUT \
    --executable-output-file=EXECUTABLE_OUTPUT_FILE

Haz los cambios siguientes:

  • PROJECT_NUMBER: número del proyecto que contiene el grupo de identidades de carga de trabajo.
  • POOL_ID: el ID del grupo de identidades de carga de trabajo.
  • WORKLOAD_PROVIDER_ID: el ID del proveedor de grupos de identidades de carga de trabajo.
  • SERVICE_ACCOUNT_EMAIL: Si usas la suplantación de identidad de la cuenta de servicio, sustitúyelo por la dirección de correo de la cuenta de servicio. Omite esta marca si no usas la suplantación de identidad de cuentas de servicio.
  • SERVICE_ACCOUNT_TOKEN_LIFETIME: si usas la suplantación de identidad de la cuenta de servicio, sustitúyelo por el tiempo de vida del token de acceso de la cuenta de servicio, en segundos. Si no se proporciona, el valor predeterminado es una hora. Omite esta marca si no usas la suplantación de identidad de cuentas de servicio. Para especificar un tiempo de vida superior a una hora, debes configurar la constraints/iam.allowServiceAccountCredentialLifetimeExtension restricción de la política de organización.
  • FILEPATH: el archivo en el que se guardará la configuración.
  • EXECUTABLE_COMMAND: el comando completo, incluidos los argumentos, que se debe ejecutar para obtener el token de ID de OIDC. Por ejemplo, --executable-command="/path/to/command --foo=bar".
  • EXECUTABLE_TIMEOUT: duración opcional en milisegundos que se debe esperar a que se ejecute el archivo ejecutable (el valor predeterminado es 30 s).
  • EXECUTABLE_OUTPUT_FILE: una ruta que apunta a las credenciales de terceros generadas por el archivo ejecutable. Esto resulta útil para almacenar en caché las credenciales. Si especificas esta ruta, las bibliotecas de autenticación comprobarán primero si existe antes de ejecutar el archivo ejecutable.

Credenciales procedentes de archivos

gcloud iam workload-identity-pools create-cred-config \
    projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/WORKLOAD_PROVIDER_ID \
    --service-account=SERVICE_ACCOUNT_EMAIL \
    --service-account-token-lifetime-seconds=SERVICE_ACCOUNT_TOKEN_LIFETIME \
    --output-file=FILEPATH.json \
    --credential-source-file=TOKEN_FILEPATH \
    --credential-source-type=SOURCE_TYPE \
    --credential-source-field-name=FIELD_NAME

Haz los cambios siguientes:

  • PROJECT_NUMBER: número del proyecto que contiene el grupo de identidades de carga de trabajo.
  • POOL_ID: el ID del grupo de identidades de carga de trabajo.
  • WORKLOAD_PROVIDER_ID: el ID del proveedor de grupos de identidades de carga de trabajo.
  • SERVICE_ACCOUNT_EMAIL: Si usas la suplantación de identidad de una cuenta de servicio, sustitúyelo por la dirección de correo de la cuenta de servicio. Omite esta marca si no usas la suplantación de identidad de cuentas de servicio.
  • SERVICE_ACCOUNT_TOKEN_LIFETIME: si usas la suplantación de identidad de la cuenta de servicio, sustitúyelo por el tiempo de vida del token de acceso de la cuenta de servicio, en segundos. Si no se proporciona, el valor predeterminado es una hora. Omite esta marca si no usas la suplantación de identidad de cuentas de servicio. Para especificar un tiempo de vida superior a una hora, debes configurar la constraints/iam.allowServiceAccountCredentialLifetimeExtension restricción de la política de organización.
  • FILEPATH: el archivo en el que se guardará la configuración.
  • TOKEN_FILEPATH: ruta en la que se almacenan los tokens de ID de OIDC.
  • SOURCE_TYPE: formato del archivo de token de ID de OIDC, que puede ser text (valor predeterminado) o json.
  • FIELD_NAME: el campo del archivo de texto que contiene el token (si SOURCE_TYPE es json).

Credenciales procedentes de URLs

gcloud iam workload-identity-pools create-cred-config \
    projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/WORKLOAD_PROVIDER_ID \
    --service-account=SERVICE_ACCOUNT_EMAIL \
    --service-account-token-lifetime-seconds=SERVICE_ACCOUNT_TOKEN_LIFETIME \
    --output-file=FILEPATH.json \
    --credential-source-url="TOKEN_URL" \
    --credential-source-headers="KEY_1=VALUE_1,KEY_2=VALUE_2" \
    --credential-source-type=SOURCE_TYPE \
    --credential-source-field-name=FIELD_NAME

Haz los cambios siguientes:

  • PROJECT_NUMBER: número de proyecto del proyecto que contiene el grupo de identidades de carga de trabajo.
  • POOL_ID: ID del grupo de identidades de carga de trabajo.
  • WORKLOAD_PROVIDER_ID: ID del proveedor de grupos de identidades de carga de trabajo
  • SERVICE_ACCOUNT_EMAIL: si usas la suplantación de identidad de una cuenta de servicio, sustitúyelo por la dirección de correo de la cuenta de servicio. Omite esta marca si no usas la suplantación de identidad de cuentas de servicio.
  • SERVICE_ACCOUNT_TOKEN_LIFETIME: si usas la suplantación de identidad de la cuenta de servicio, sustitúyelo por el tiempo de vida del token de acceso de la cuenta de servicio, en segundos. Si no se proporciona, el valor predeterminado es una hora. Omite esta marca si no usas la suplantación de identidad de cuentas de servicio. Para especificar un tiempo de vida superior a una hora, debes configurar la constraints/iam.allowServiceAccountCredentialLifetimeExtension restricción de la política de organización.
  • FILEPATH: archivo en el que se guardará la configuración.
  • TOKEN_URL: URL para obtener el token de ID de OIDC
  • KEY_n, VALUE_n: encabezados personalizados que se incluirán en la solicitud HTTP a TOKEN_URL
  • SOURCE_TYPE: formato del archivo de token de ID de OIDC. El valor predeterminado es text, pero también puede ser json.
  • FIELD_NAME: campo del archivo de texto que contiene el token (si SOURCE_TYPE es json)

Usar la configuración de credenciales para acceder a Trusted Cloud

Para permitir que las herramientas y las bibliotecas de cliente usen tu configuración de credenciales, haz lo siguiente:

  1. Inicializa una variable de entorno GOOGLE_APPLICATION_CREDENTIALS y dirígela al archivo de configuración de la credencial:

    Bash

      export GOOGLE_APPLICATION_CREDENTIALS=`pwd`/FILEPATH.json
      
    donde FILEPATH es la ruta relativa al archivo de configuración de las credenciales.

    PowerShell

      $env:GOOGLE_APPLICATION_CREDENTIALS = Resolve-Path 'FILEPATH.json'
      
    donde FILEPATH es la ruta relativa al archivo de configuración de las credenciales.
  2. Usa una biblioteca o herramienta de cliente que admita la federación de identidades de cargas de trabajo y que pueda encontrar credenciales automáticamente:

    C++

    Las Trusted Cloud bibliotecas de cliente de C++ admiten Workload Identity Federation desde la versión v2.6.0. Para usar la federación de identidades de cargas de trabajo, debes compilar las bibliotecas de cliente con la versión 1.36.0 o una posterior de gRPC.

    Go

    Las bibliotecas de cliente de Go admiten la federación de identidades de carga de trabajo si usan la versión v0.0.0-20210218202405-ba52d332ba99 o una posterior del módulo golang.org/x/oauth2.

    Para comprobar qué versión de este módulo usa tu biblioteca de cliente, ejecuta los siguientes comandos:

    cd $GOPATH/src/cloud.google.com/go
    go list -m golang.org/x/oauth2
    

    Java

    Las bibliotecas de cliente de Java admiten la federación de identidades de cargas de trabajo si usan la versión 0.24.0 o posterior del artefacto com.google.auth:google-auth-library-oauth2-http.

    Para comprobar qué versión de este artefacto usa tu biblioteca de cliente, ejecuta el siguiente comando de Maven en el directorio de tu aplicación:

    mvn dependency:list -DincludeArtifactIds=google-auth-library-oauth2-http
    

    Node.js

    Las bibliotecas de cliente de Node.js admiten la federación de identidades de carga de trabajo si usan la versión 7.0.2 o una posterior del paquete google-auth-library.

    Para comprobar qué versión de este paquete usa tu biblioteca de cliente, ejecuta el siguiente comando en el directorio de tu aplicación:

    npm list google-auth-library
    

    Cuando creas un objeto GoogleAuth, puedes especificar un ID de proyecto o permitir que GoogleAuth lo encuentre automáticamente. Para encontrar el ID del proyecto automáticamente, la cuenta de servicio del archivo de configuración debe tener el rol de navegador (roles/browser) o un rol con permisos equivalentes en tu proyecto. Para obtener más información, consulta la README del paquete google-auth-library.

    Python

    Las bibliotecas de cliente de Python admiten la federación de identidades de carga de trabajo si usan la versión 1.27.0 o una posterior del paquete google-auth.

    Para comprobar qué versión de este paquete usa tu biblioteca de cliente, ejecuta el siguiente comando en el entorno en el que está instalado el paquete:

    pip show google-auth
    

    Para especificar un ID de proyecto para el cliente de autenticación, puedes definir la variable de entorno GOOGLE_CLOUD_PROJECT o permitir que el cliente busque el ID de proyecto automáticamente. Para encontrar el ID de proyecto automáticamente, la cuenta de servicio del archivo de configuración debe tener el rol de navegador (roles/browser) o un rol con permisos equivalentes en tu proyecto. Para obtener más información, consulta la guía de usuario del paquete google-auth.

    gcloud

    Para autenticarte con la federación de identidades de cargas de trabajo, usa el comando gcloud auth login:

    gcloud auth login --cred-file=FILEPATH.json
    

    Sustituye FILEPATH por la ruta del archivo de configuración de credenciales.

    La compatibilidad con Workload Identity Federation en la CLI de gcloud está disponible en la versión 363.0.0 y en versiones posteriores de la CLI de gcloud.

    Terraform

    El proveedorTrusted Cloud admite la federación de identidades de cargas de trabajo si usas la versión 3.61.0 o una posterior:

    terraform {
      required_providers {
        google = {
          source  = "hashicorp/google"
          version = "~> 3.61.0"
        }
      }
    }
    

    bq

    Para autenticarte mediante la federación de identidades de cargas de trabajo, usa el comando gcloud auth login, como se indica a continuación:

    gcloud auth login --cred-file=FILEPATH.json
    

    Sustituye FILEPATH por la ruta del archivo de configuración de credenciales.

    La federación de identidades de carga de trabajo en bq está disponible en la versión 390.0.0 y en versiones posteriores de la CLI de gcloud.

Siguientes pasos