Autenticación en APIs y servicios desde cargas de trabajo de flotas

En esta página, se muestra cómo configurar tus aplicaciones para que se autentiquen en las APIs de Google Cloud, como la API de Compute Engine o la API de AI Platform, mediante la Federación de identidades para cargas de trabajo de flota.

¿Qué es la federación de identidades para cargas de trabajo de la flota?

La federación de identidades para cargas de trabajo permite que las cargas de trabajo de tus clústeres se autentiquen en Google Cloud sin que tengas que descargar, rotar de forma manual y, en general, administrar las credenciales. En su lugar, las cargas de trabajo se autentican mediante tokens de corta duración generados por Google Cloud.

La Workload Identity Federation for GKE proporciona un grupo de identidades de cargas de trabajo en todo el proyecto desde el que las aplicaciones que se ejecutan en clústeres de GKE obtienen identidades. La federación de identidades para cargas de trabajo de flota extiende la Workload Identity Federation for GKE a todos los clústeres miembros de la flota, independientemente de si los clústeres están en proyectos diferentes o están fuera de Google Cloud. Los clústeres registrados con la federación de identidades para cargas de trabajo habilitada en su membresía de flota obtienen identidades mediante un grupo de identidades para cargas de trabajo para toda la flota, lo que te permite configurar la autenticación en las APIs de Google Cloud y en otros servicios en toda la flota, incluso en varios proyectos.

El agente de Connect también puede usar la federación de identidades para cargas de trabajo de flota en algunos tipos de clústeres para autenticarse en Google como parte de la membresía de la flota. Además, es necesario usar algunas funciones de GKE Enterprise que funcionan en varios proyectos, como Cloud Service Mesh.

Grupos de federación de identidades para cargas de trabajo y similitud de identidades

Con la federación de identidades para cargas de trabajo de la flota, cada aplicación de tu flota obtiene una identidad federada distinta que se puede usar para autenticarse en Google Cloud y otros servicios que desarrolles. Las aplicaciones obtienen un identificador principal que IAM puede reconocer. Este identificador usa la siguiente sintaxis:

PREFIX://iam.googleapis.com/projects/FLEET_PROJECT_NUMBER/locations/global/workloadIdentityPools/FLEET_PROJECT_ID.svc.id.goog/SELECTOR

Esta sintaxis tiene los siguientes campos:

  • PREFIX: Es el principal o principalSet de IAM, según el recurso que se seleccione.
  • FLEET_PROJECT_ID.svc.id.goog: El grupo de identidades para cargas de trabajo de tu flota. Cada flota tiene un solo grupo de identidades de carga de trabajo fijo que se crea por ti.
  • FLEET_PROJECT_NUMBER: el número del proyecto host de la flota.
  • SELECTOR: Es el selector de recursos. Para obtener una lista de los selectores compatibles, consulta identificadores de principal compatibles.

Toda la flota comparte un grupo de identidades para cargas de trabajo de la flota, de modo que puedes darle a las aplicaciones de cualquier parte de la flota, incluidos otros proyectos o nubes, acceso a los mismos recursos sin necesidad de administrar ese acceso para cada clúster. Al igual que otras funciones habilitadas para la flota, la integración de federación de identidades para cargas de trabajo de la flota se basa en el principio de similitud, en el que los objetos de Kubernetes que tienen el mismo nombre y espacio de nombres en diferentes clústeres se tratan de la misma manera.

Por ejemplo, si tienes una aplicación con un backend implementado en varios clústeres de la misma flota y que necesita autenticarse en una API de Google Cloud, puedes configurar la aplicación para que todas las cargas de trabajo del espacio de nombres backend puedan acceder a esa API. Para obtener más información sobre cómo las flotas usan la similitud, incluida la similitud de identidad, consulta Cómo funcionan las flotas.

Después de habilitar la federación de identidades para cargas de trabajo de la flota, puedes hacer referencia a las principales de tu flota en las políticas de permisos de IAM si especificas el identificador principal correspondiente. Por ejemplo, puedes hacer referencia a una cuenta de servicio específica en un espacio de nombres de Kubernetes específico en tu política de autorización. Todas las aplicaciones que usen esa cuenta de servicio podrían acceder al recurso de Google Cloud al que se aplica la política de permisos de IAM.

Flujo de credenciales

Para permitir que las aplicaciones de un espacio de nombres específico se autentiquen con la federación de identidades para cargas de trabajo de la flota, haz lo siguiente:

  1. Implementa un ConfigMap en ese espacio de nombres que tenga la siguiente información:

    • El grupo de identidades para cargas de trabajo y el proveedor de identidad de tu clúster
    • Es la ruta en cada Pod en la que Kubernetes activa un token de ServiceAccount. Este token es un token web JSON (JWT) firmado.

    Este ConfigMap funciona como el archivo de credenciales predeterminadas de la aplicación (ADC) para las cargas de trabajo.

  2. Crea una política de permisos de IAM que otorgue acceso en recursos específicos de Google Cloud al identificador principal del principal en tus clústeres, como una ServiceAccount en el espacio de nombres.

  3. Asegúrate de que tu carga de trabajo en el espacio de nombres tenga la siguiente configuración en la especificación del Pod:

    • La variable de entorno GOOGLE_APPLICATION_CREDENTIALS establecida en la ruta de activación del ConfigMap en el Pod
    • Un volumen proyectado que contiene el token de la cuenta de servicio y el ConfigMap que creaste, activado en la misma ruta que especificas en la variable de entorno GOOGLE_APPLICATION_CREDENTIALS
    • Una activación de volumen en el contenedor que hace referencia al volumen proyectado.

Cuando la carga de trabajo realiza una llamada a la API de Google Cloud, se realizan los siguientes pasos:

  1. Las bibliotecas de autenticación de Google Cloud usan credenciales predeterminadas de la aplicación (ADC) para encontrar credenciales. ADC verifica la ruta que especificaste en la variable de entorno GOOGLE_APPLICATION_CREDENTIALS para buscar un token de autenticación.
  2. La biblioteca de autenticación de ADC usa los datos del ConfigMap para intercambiar el JWT de la cuenta de servicio que activaste en el Pod por un token federado de corta duración del servicio de tokens de seguridad que hace referencia al identificador principal de la carga de trabajo.
  3. ADC incluye el token federado con la solicitud a la API.
  4. La política de permisos de IAM autoriza al identificador principal a realizar la operación solicitada en el recurso de Google Cloud.

Identificadores principales compatibles para la federación de identidades para cargas de trabajo de la flota

En la siguiente tabla, se describen los selectores que puedes usar en las políticas de IAM para permitir que hagan referencia a principales en flotas:

Tipo de identificador principal Sintaxis
Todos los pods que usan una ServiceAccount de Kubernetes específica Selecciona la ServiceAccount por nombre:
principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/NAMESPACE/sa/SERVICEACCOUNT

Reemplaza lo siguiente:

  • PROJECT_NUMBER: el número de proyecto numérico. Para obtener el número de proyecto, consulta Identifica proyectos.
  • PROJECT_ID: tu ID del proyecto de Google Cloud.
  • NAMESPACE: El espacio de nombres de Kubernetes.
  • SERVICEACCOUNT: El nombre de la cuenta de servicio de Kubernetes.

Selecciona la ServiceAccount por UID:
principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/kubernetes.serviceaccount.uid/SERVICEACCOUNT_UID

Reemplaza lo siguiente:

  • PROJECT_NUMBER: el número de proyecto numérico. Para obtener el número de proyecto, consulta Identifica proyectos.
  • PROJECT_ID: El ID de tu proyecto de flota
  • SERVICEACCOUNT_UID: El UID del objeto ServiceAccount en el servidor de la API.

Antes de comenzar

  • Asegúrate de tener instaladas las siguientes herramientas de línea de comandos:

    • La versión más reciente de Google Cloud CLI, que incluye gcloud, la herramienta de línea de comandos para interactuar con Google Cloud.
    • kubectl

    Si usas Cloud Shell como entorno de shell para interactuar con Google Cloud, estas herramientas están instaladas.

  • Asegúrate de haber inicializado la gcloud CLI para usarla en tu proyecto.

Prepara tus clústeres

Antes de que las aplicaciones de tu flota puedan recibir una identidad federada, los clústeres en los que se ejecutan deben registrarse en tu flota y estar configurados de forma correcta para usar la federación de identidades para cargas de trabajo de flota. En las siguientes secciones, se describe cómo configurar la federación de identidades para cargas de trabajo de la flota para diferentes tipos de clústeres.

GKE

En el caso de los clústeres de GKE, haz lo siguiente:

  1. Habilita Workload Identity Federation for GKE en tu clúster de Google Kubernetes Engine, si aún no está habilitada.
  2. Registra el clúster en la flota.

También puedes habilitar la Workload Identity Federation for GKE durante el proceso de creación del clúster y el registro de la flota.

Clústeres fuera de Google Cloud

Los siguientes tipos de clústeres habilitan automáticamente la federación de identidades para cargas de trabajo de la flota y se registran en tu flota durante la creación del clúster:

  • Google Distributed Cloud (solo software) en VMware
  • Google Distributed Cloud (solo software) en equipos físicos
  • GKE en AWS
  • GKE en Azure

Clústeres adjuntos

Los clústeres adjuntos de EKS y AKS registrados con la API de GKE Multi-cloud se registran con la federación de identidades para cargas de trabajo de la flota habilitada de forma predeterminada. Otros clústeres vinculados se pueden registrar con la federación de identidades para cargas de trabajo de la flota habilitada si cumplen con los requisitos necesarios. Sigue las instrucciones para el tipo de clúster en Registra un clúster.

Usa la federación de identidades para cargas de trabajo de la flota en aplicaciones

En los siguientes pasos, se muestra cómo configurar una carga de trabajo en un clúster registrado para usar la federación de identidades para cargas de trabajo de la flota:

  1. Busca el nombre del grupo de identidades para cargas de trabajo de tu clúster y el proveedor de identidades:

    gcloud container fleet memberships describe MEMBERSHIP_ID \
        --project=FLEET_PROJECT_ID \
        --format="table(authority.identityProvider,authority.workloadIdentityPool,name)"
    

    Reemplaza lo siguiente:

    • MEMBERSHIP_ID: Es el nombre de la membresía del clúster. Por lo general, es el nombre de tu clúster.
    • FLEET_PROJECT_ID: El ID del proyecto host de la flota.

    El resultado es similar a este:

    IDENTITY_PROVIDER: IDENTITY_PROVIDER
    WORKLOAD_IDENTITY_POOL: WORKLOAD_IDENTITY_POOL
    NAME: projects/FLEET_PROJECT_ID/locations/MEMBERSHIP_LOCATION/memberships/MEMBERSHIP_ID
    

    Este resultado contiene la siguiente información:

    • IDENTITY_PROVIDER: Es el proveedor de identidad del clúster.
    • MEMBERSHIP_LOCATION: Es la ubicación de la membresía de la flota. Por lo general, es el mismo que la ubicación de tu clúster.
    • WORKLOAD_IDENTITY_POOL: Es el nombre del grupo de identidades para cargas de trabajo asociado con tu flota. Este valor tiene la sintaxis FLEET_PROJECT_ID.svc.id.goog.
  2. Crea un espacio de nombres de Kubernetes. También puedes usar cualquier espacio de nombres existente, incluido el espacio de nombres default.

    kubectl create namespace NAMESPACE
    

    Reemplaza NAMESPACE por el nombre del espacio de nombres.

  3. Crea una ServiceAccount de Kubernetes en el espacio de nombres. También puedes usar cualquier ServiceAccount existente, incluida la ServiceAccount default en el espacio de nombres.

    kubectl create serviceaccount KSA_NAME \
        --namespace=NAMESPACE
    

    Reemplaza KSA_NAME por el nombre de la ServiceAccount

  4. Guarda el siguiente manifiesto como adc-config-map.yaml. Este ConfigMap contiene la configuración de ADC para las cargas de trabajo.

    kind: ConfigMap
    apiVersion: v1
    metadata:
      namespace: NAMESPACE
      name: my-cloudsdk-config
    data:
      config: |
        {
          "type": "external_account",
          "audience": "identitynamespace:WORKLOAD_IDENTITY_POOL:IDENTITY_PROVIDER",
          "subject_token_type": "urn:ietf:params:oauth:token-type:jwt",
          "token_url": "https://sts.googleapis.com/v1/token",
          "credential_source": {
            "file": "/var/run/secrets/tokens/gcp-ksa/token"
          }
        }
    
  5. Implementa el ConfigMap:

    kubectl create -f adc-config-map.yaml
    
  6. Guarda el siguiente manifiesto como workload-config.yaml:

    apiVersion: v1
    kind: Pod
    metadata:
      name: my-pod
      namespace:  NAMESPACE
    spec:
      serviceAccountName: KSA_NAME
      containers:
      - name: sample-container
        image: google/cloud-sdk:slim
        command: ["sleep","infinity"]
        env:
        - name: GOOGLE_APPLICATION_CREDENTIALS
          value: /var/run/secrets/tokens/gcp-ksa/google-application-credentials.json
        volumeMounts:
        - name: gcp-ksa
          mountPath: /var/run/secrets/tokens/gcp-ksa
          readOnly: true
      volumes:
      - name: gcp-ksa
        projected:
          defaultMode: 420
          sources:
          - serviceAccountToken:
              path: token
              audience: WORKLOAD_IDENTITY_POOL
              expirationSeconds: 172800
          - configMap:
              name: my-cloudsdk-config
              optional: false
              items:
              - key: "config"
                path: "google-application-credentials.json"
    

    Cuando implementas esta carga de trabajo, el volumen gcp-ksa en el pod contiene los siguientes datos:

    El contenedor del Pod activa el volumen gcp-ksa en la ruta /var/run/secrets/tokens/gcp-ksa y configura ADC para que busque el archivo JSON de configuración de credenciales en esa ruta.

  7. Implementa la carga de trabajo:

    kubectl apply -f workload-config.yaml
    

Alternativa: Usa la identidad de una cuenta de servicio de IAM

Como alternativa, puedes configurar cuentas de servicio de Kubernetes en tus clústeres para que imiten cuentas de servicio de IAM y realicen cualquier acción autorizada que puedan realizar estas cuentas. Este enfoque podría aumentar la sobrecarga de mantenimiento, ya que debes administrar las vinculaciones de cuentas de servicio en IAM y Kubernetes.

En la mayoría de los casos, te recomendamos que hagas referencia directamente a los principales de Kubernetes en las políticas de IAM para permitir que se otorgue acceso a los recursos de Google Cloud. Para ello, sigue las instrucciones que se indican en Usa la federación de identidades para cargas de trabajo de flotas en aplicaciones.

  1. Busca el nombre del grupo de identidades para cargas de trabajo de tu clúster y el proveedor de identidades:

    gcloud container fleet memberships describe MEMBERSHIP_ID \
        --project=FLEET_PROJECT_ID \
        --format="table(authority.identityProvider,authority.workloadIdentityPool,name)"
    

    Reemplaza lo siguiente:

    • MEMBERSHIP_ID: Es el nombre de la membresía del clúster. Por lo general, es el nombre de tu clúster.
    • FLEET_PROJECT_ID: El ID del proyecto host de la flota.

    El resultado es similar a este:

    IDENTITY_PROVIDER: IDENTITY_PROVIDER
    WORKLOAD_IDENTITY_POOL: WORKLOAD_IDENTITY_POOL
    NAME: projects/FLEET_PROJECT_ID/locations/MEMBERSHIP_LOCATION/memberships/MEMBERSHIP_ID
    

    Este resultado contiene la siguiente información:

    • IDENTITY_PROVIDER: Es el proveedor de identidad del clúster.
    • MEMBERSHIP_LOCATION: Es la ubicación de la membresía. Por lo general, es el mismo que la ubicación de tu clúster.
    • WORKLOAD_IDENTITY_POOL: Es el nombre del grupo de identidades para cargas de trabajo asociado con tu flota. Este valor tiene la sintaxis FLEET_PROJECT_ID.svc.id.goog.
  2. Crea una cuenta de servicio de IAM que tu aplicación pueda usurpar. También puedes usar cualquier cuenta de servicio de IAM existente.

    gcloud iam service-accounts create IAM_SA_NAME \
        --project=IAM_SA_PROJECT_ID
    

    Reemplaza lo siguiente:

    • IAM_SA_NAME: Es el nombre de tu cuenta de servicio de IAM.
    • IAM_SA_PROJECT_ID: El ID del proyecto que contiene tu cuenta de servicio de IAM. Puede ser diferente del proyecto host de tu flota.
  3. Agrega las políticas de IAM necesarias para otorgar a la cuenta de servicio de IAM los permisos que necesita para acceder a las APIs de Google Cloud. Para ello, usa gcloud iam service-accounts add-iam-policy-binding u otro método. Puedes averiguar qué permisos son necesarios para usar las API de Google Cloud en la documentación de cada servicio y ver una lista completa de las funciones predefinidas con los permisos necesarios en Comprende los roles.

  4. Crea una ServiceAccount de Kubernetes en el espacio de nombres: También puedes usar una cuenta de servicio de Kubernetes existente y cualquier espacio de nombres, incluidos la cuenta de servicio default y el espacio de nombres default.

    kubectl create serviceaccount KSA_NAME \
        --namespace=NAMESPACE
    

    Reemplaza lo siguiente:

    • KSA_NAME: el nombre de la ServiceAccount
    • NAMESPACE: Es el nombre del espacio de nombres.
  5. Crea una política de permisos de IAM que permita que una cuenta de servicio de Kubernetes en un espacio de nombres específico de tu clúster robe la identidad de la cuenta de servicio de IAM:

    gcloud iam service-accounts add-iam-policy-binding IAM_SA_NAME@IAM_SA_PROJECT_ID.iam.gserviceaccount.com \
        --project=IAM_SA_PROJECT_ID \
        --role=roles/iam.workloadIdentityUser \
        --member="serviceAccount:WORKLOAD_IDENTITY_POOL[NAMESPACE/KSA_NAME]"
    

    Reemplaza WORKLOAD_IDENTITY_POOL por el nombre del grupo de identidades para cargas de trabajo.

  6. Guarda el siguiente manifiesto como adc-config-map.yaml. Este ConfigMap contiene la configuración de ADC para las cargas de trabajo.

    kind: ConfigMap
    apiVersion: v1
    metadata:
      namespace: K8S_NAMESPACE
      name: my-cloudsdk-config
    data:
      config: |
        {
          "type": "external_account",
          "audience": "identitynamespace:WORKLOAD_IDENTITY_POOL:IDENTITY_PROVIDER",
          "service_account_impersonation_url": "https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/IAM_SA_NAME@GSA_PROJECT_ID.iam.gserviceaccount.com:generateAccessToken",
          "subject_token_type": "urn:ietf:params:oauth:token-type:jwt",
          "token_url": "https://sts.googleapis.com/v1/token",
          "credential_source": {
            "file": "/var/run/secrets/tokens/gcp-ksa/token"
          }
        }
    

    Reemplaza lo siguiente:

    • IAM_SA_NAME: Es el nombre de la cuenta de servicio de IAM que se suplantará.
    • IAM_SA_PROJECT_ID: Es el ID del proyecto de la cuenta de servicio de IAM.
  7. Guarda el siguiente manifiesto como workload-config.yaml:

    apiVersion: v1
    kind: Pod
    metadata:
      name: my-pod
      namespace:  K8S_NAMESPACE
    spec:
      serviceAccountName: KSA_NAME
      containers:
      - name: my-container
        image: my-image
        command: ["sleep","infinity"]
        env:
          - name: GOOGLE_APPLICATION_CREDENTIALS
            value: /var/run/secrets/tokens/gcp-ksa/google-application-credentials.json
        volumeMounts:
        - name: gcp-ksa
          mountPath: /var/run/secrets/tokens/gcp-ksa
          readOnly: true
      volumes:
      - name: gcp-ksa
        projected:
          defaultMode: 420
          sources:
          - serviceAccountToken:
              path: token
              audience: WORKLOAD_IDENTITY_POOL
              expirationSeconds: 172800
          - configMap:
              name: my-cloudsdk-config
              optional: false
              items:
                - key: "config"
                  path: "google-application-credentials.json"
    
    

    Cuando implementas esta carga de trabajo, el volumen gcp-ksa en el pod contiene los siguientes datos:

    El contenedor del Pod activa el volumen gcp-ksa en la ruta /var/run/secrets/tokens/gcp-ksa y configura ADC para que busque el archivo JSON de configuración de credenciales en esa ruta.

  8. Implementa la carga de trabajo:

    kubectl apply -f workload-config.yaml
    

Verifica la configuración de la federación de identidades para cargas de trabajo de la flota

En esta sección, crearás un bucket de Cloud Storage y accederás a él desde un Pod que usa la federación de identidades para cargas de trabajo de la flota. Antes de realizar estos pasos, asegúrate de haber configurado la federación de identidades para cargas de trabajo. Para ello, sigue las instrucciones de la sección Usa la federación de identidades para cargas de trabajo de la flota en las aplicaciones.

En esta sección, no se muestra cómo verificar la federación de identidades para cargas de trabajo con el método de identidad temporal como cuenta de servicio de IAM.

  1. Busca el número de proyecto numérico:

    gcloud projects describe FLEET_PROJECT_ID \
        --format="value(projectNumber)"
    

    El resultado es similar a este:

    1234567890
    
  2. Crea un bucket de Cloud Storage:

    gcloud storage buckets create gs://FLEET_PROJECT_ID-test-bucket \
        --location=LOCATION
    

    Reemplaza LOCATION por una ubicación de Google Cloud.

  3. Crea una política de permisos de IAM que otorgue acceso al bucket a la cuenta de servicio que creaste:

    gcloud storage buckets add-iam-policy-binding gs://FLEET_PROJECT_ID-test-bucket \
        --condition=None \
        --role=roles/storage.objectViewer \
        --member=principal://iam.googleapis.com/projects/FLEET_PROJECT_NUMBER/locations/global/workloadIdentityPools/FLEET_PROJECT_ID.svc.id.goog/subject/ns/NAMESPACE/sa/KSA_NAME
    

    Reemplaza lo siguiente:

    • FLEET_PROJECT_NUMBER: el número de proyecto numérico.
    • FLEET_PROJECT_ID: el ID de tu proyecto
    • NAMESPACE: El nombre del espacio de nombres de Kubernetes que ejecuta tu Pod de la sección anterior.
    • KSA_NAME: Es el nombre de la ServiceAccount de Kubernetes que usa tu Pod de la sección anterior.
  4. Crea una sesión de shell en el Pod:

    kubectl exec -it pods/my-pod --namespace=NAMESPACE -- /bin/bash
    
  5. Intenta enumerar los objetos del bucket:

    curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://storage.googleapis.com/storage/v1/b/test-bucket/o"
    

    Esta es la salida:

    {
      "kind": "storage#objects"
    }
    

Realiza la autenticación desde el código

Cuando usas las bibliotecas cliente de Cloud, las bibliotecas de autenticación usan automáticamente ADC para buscar credenciales que permitan autenticarse en los servicios de Google Cloud. Debes usar las bibliotecas cliente de Cloud que admiten la federación de identidades para cargas de trabajo. A continuación, se muestran las versiones mínimas de bibliotecas cliente de Cloud requeridas, además de las instrucciones para verificar tu versión actual:

C++

La mayoría de las bibliotecas cliente de Google Cloud para C++ admiten la federación de identidades mediante un objeto ChannelCredentials, que se crea mediante una llamada a grpc::GoogleDefaultCredentials(). Para inicializar esta credencial, debes compilar las bibliotecas cliente con la versión 1.36.0 o posterior de gRPC.

La biblioteca cliente de Cloud Storage para C++ usa la API de REST, no gRPC, por lo que no admite la federación de identidades.

Go

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

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

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

Java

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

Para verificar qué versión de este artefacto usa tu biblioteca 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 cliente de Node.js admiten la federación de identidades si usan la versión 7.0.2 o una versión posterior del paquete google-auth-library.

Para verificar qué versión de este paquete usa tu biblioteca 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 del proyecto o puedes permitir que GoogleAuth encuentre el ID del proyecto automáticamente. Para encontrar el ID del proyecto de manera automática, la cuenta de servicio en el 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 el README del paquete google-auth-library.

Python

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

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

pip show google-auth

Si deseas especificar un ID del proyecto para el cliente de autenticación, puedes configurar la variable de entorno GOOGLE_CLOUD_PROJECT o permitir que el cliente busque el ID del proyecto automáticamente. Para encontrar el ID del proyecto de manera automática, la cuenta de servicio en el 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 del usuario del paquete google-auth.

Próximos pasos

Obtén información sobre las prácticas recomendadas para organizar tus flotas cuando uses la federación de identidades para cargas de trabajo de la flota.