Configurar la federación de identidades de cargas de trabajo con Kubernetes

En esta guía se describe cómo usar la federación de identidades de cargas de trabajo para permitir que las cargas de trabajo que se ejecutan en Azure Kubernetes Service (AKS), Amazon Elastic Kubernetes Service o en un clúster de Kubernetes autogestionado se autentiquen en Google Cloud.

Kubernetes te permite configurar un clúster para que las cargas de trabajo puedan obtener tokens de ServiceAccount de Kubernetes de un volumen proyectado. Si configuras la federación de identidades de cargas de trabajo, puedes permitir que las cargas de trabajo usen estos tokens de ServiceAccount de Kubernetes para autenticarse en Google Cloud.

Si usas GKE, utiliza Workload Identity Federation para GKE en lugar de configurar Workload Identity Federation.

Antes de empezar

Antes de configurar la federación de identidades de cargas de trabajo, asegúrate de que tu clúster de Kubernetes cumpla los siguientes criterios:

GKE

Si usas Google Kubernetes Engine (GKE), consulta Autenticarse en APIs Google Cloud desde cargas de trabajo de GKE.

AKS

Asegúrate de que tu clúster cumpla los siguientes criterios:

  • Has habilitado la función Emisor de OIDC.

    Debes habilitar esta función para que la federación de identidades de carga de trabajo pueda acceder a los metadatos de OpenID Connect y al conjunto de claves web de JSON (JWKS) del clúster.

EKS

No es necesario que hagas ningún cambio en la configuración de EKS.

Kubernetes

Asegúrate de que tu clúster cumpla los siguientes criterios:

  • Utilizas Kubernetes 1.20 o una versión posterior.

    Las versiones anteriores de Kubernetes usaban un formato de token de ServiceAccount diferente que no es compatible con las instrucciones de este documento.

  • Has configurado kube-apiserver para que admita las previsiones del volumen de tokens de ServiceAccount.

No es necesario que se pueda acceder al clúster a través de Internet.

Configurar la federación de identidades de cargas de trabajo

Solo tienes que seguir estos pasos una vez por cada clúster de Kubernetes. Después, puedes usar el mismo grupo y proveedor de identidades de carga de trabajo en varios pods de Kubernetes y en varios proyectos. Google Cloud

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

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

    Go to project selector

  2. Te recomendamos que uses un proyecto específico para gestionar los grupos y proveedores de Workload Identity.
  3. Verify that billing is enabled for your Google Cloud project.

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

    Enable the APIs

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

Los tokens de ServiceAccount de Kubernetes contienen varias reclamaciones, entre las que se incluyen las siguientes:

  • sub: contiene el espacio de nombres y el nombre de la cuenta de servicio. Por ejemplo, system:serviceaccount:NAMESPACE:KSA_NAME, donde NAMESPACE es el espacio de nombres de la cuenta de servicio y KSA_NAME es el nombre de la cuenta de servicio.
  • "kubernetes.io".namespace: contiene el espacio de nombres de ServiceAccount.
  • "kubernetes.io".serviceaccount.name: contiene el nombre de la cuenta de servicio.
  • "kubernetes.io".pod.name: contiene el nombre del pod.

Para usar sub como identificador de asunto (google.subject) en Google Cloud, usa la siguiente asignación:

google.subject=assertion.sub

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

google.subject=assertion.sub,
attribute.namespace=assertion['kubernetes.io']['namespace'],
attribute.service_account_name=assertion['kubernetes.io']['serviceaccount']['name'],
attribute.pod=assertion['kubernetes.io']['pod']['name']

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.

Puedes usar una condición de atributo para restringir qué cuentas de servicio de Kubernetes pueden usar la federación de identidades de cargas de trabajo para obtener tokens de corta duración Google Cloud. Por ejemplo, la siguiente condición restringe el acceso a KubernetesServiceAccounts desde los espacios de nombres backend y monitoring:

assertion['kubernetes.io']['namespace'] in ['backend', 'monitoring']

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.

Para crear un grupo de identidades de carga de trabajo y un proveedor, sigue estos pasos:

AKS

  1. Determina la URL de la entidad emisora de tu clúster de AKS:

    az aks show -n NAME -g RESOURCE_GROUP --query "oidcIssuerProfile.issuerUrl" -otsv
    

    Haz los cambios siguientes:

    • NAME: el nombre del clúster
    • RESOURCE_GROUP: el grupo de recursos del clúster

    El comando muestra la URL de la entidad emisora. Necesitarás la URL del emisor en uno de los siguientes pasos.

    Si el comando no devuelve una URL de emisor, comprueba que hayas habilitado la función Emisor de OIDC.

  2. Crea un grupo de identidades de carga de trabajo:

    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 del grupo que elijas. Esta descripción aparece cuando concedes acceso a identidades de grupo.
  3. Añade el clúster de AKS como proveedor de grupos de identidades de carga de trabajo:

    gcloud iam workload-identity-pools providers create-oidc WORKLOAD_PROVIDER_ID \
        --location="global" \
        --workload-identity-pool="POOL_ID" \
        --issuer-uri="ISSUER" \
        --attribute-mapping="MAPPINGS" \
        --attribute-condition="CONDITIONS"
    

    Haz los cambios siguientes:

    • WORKLOAD_PROVIDER_ID: ID único del proveedor de grupos de identidades de carga de trabajo que elijas.
    • POOL_ID: el ID del grupo de identidades de carga de trabajo que has creado anteriormente.
    • ISSUER: el URI del emisor que has determinado anteriormente.
    • 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.

EKS

  1. Determina la URL de la entidad emisora de tu clúster de EKS:

    aws eks describe-cluster --name NAME --query "cluster.identity.oidc.issuer" --output text
    

    Sustituye NAME por el nombre del clúster.

    El comando muestra la URL de la entidad emisora. Necesitarás la URL del emisor en uno de los siguientes pasos.

  2. Crea un grupo de identidades de carga de trabajo:

    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 del grupo que elijas. Esta descripción aparece cuando concedes acceso a identidades de grupo.
  3. Añade el clúster de EKS como proveedor de grupos de identidades de carga de trabajo:

    gcloud iam workload-identity-pools providers create-oidc WORKLOAD_PROVIDER_ID \
        --location="global" \
        --workload-identity-pool="POOL_ID" \
        --issuer-uri="ISSUER" \
        --attribute-mapping="MAPPINGS" \
        --attribute-condition="CONDITIONS"
    

    Haz los cambios siguientes:

    • WORKLOAD_PROVIDER_ID: ID único del proveedor de grupos de identidades de carga de trabajo que elijas.
    • POOL_ID: el ID del grupo de identidades de carga de trabajo que has creado anteriormente.
    • ISSUER: el URI del emisor que has determinado anteriormente.
    • 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.

Kubernetes

  1. Conéctate a tu clúster de Kubernetes y usa kubectl para determinar la URL del emisor de tu clúster:

    kubectl get --raw /.well-known/openid-configuration | jq -r .issuer
    

    Necesitarás la URL del emisor en uno de los siguientes pasos.

  2. Descarga el conjunto de claves web de JSON (JWKS) del clúster:

    kubectl get --raw /openid/v1/jwks > cluster-jwks.json
    

    En uno de los pasos siguientes, subirá el JWKS para que la federación de Workload Identity pueda verificar la autenticidad de los tokens de la cuenta de servicio de Kubernetes emitidos por su clúster.

  3. Crea un grupo de identidades de carga de trabajo:

    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 del grupo que elijas. Esta descripción aparece cuando concedes acceso a identidades de grupo.
  4. Añade el clúster de Kubernetes como proveedor de grupos de identidades de carga de trabajo y sube el JWKS del clúster:

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

    Haz los cambios siguientes:

    • WORKLOAD_PROVIDER_ID: ID único del proveedor de grupos de identidades de carga de trabajo que elijas.
    • POOL_ID: el ID del grupo de identidades de carga de trabajo que has creado anteriormente.
    • ISSUER: el URI del emisor que has determinado anteriormente.
    • 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.

Conceder acceso a una carga de trabajo de Kubernetes

En esta sección se describe cómo configurar una carga de trabajo de Kubernetes para acceder a las APIs deGoogle Cloud mediante el acceso directo a recursos de la federación de identidades de cargas de trabajo o la suplantación de la cuenta de servicio.

Debes seguir estos pasos una vez por cada carga de trabajo de Kubernetes que necesite acceder a Google Cloud.

Te recomendamos que uses la federación de identidades de cargas de trabajo. Sin embargo, al usar la federación de identidades, es posible que algunos métodos de la API tengan limitaciones. Para ver una lista de limitaciones, consulta Federación de identidades: productos y limitaciones.

Si los métodos que usa tu carga de trabajo tienen estas limitaciones, puedes usar la suplantación de identidad de gestión de identidades y accesos.

Usar la federación de identidades de cargas de trabajo para conceder acceso directo a los recursos

En esta sección, usarás la federación de identidades de cargas de trabajo para asignar un rol de gestión de identidades y accesos a una cuenta de servicio de Kubernetes para que pueda acceder directamente a los recursos Google Cloud .

Para crear una cuenta de servicio de Kubernetes y asignarle un rol, sigue estos pasos:

  1. Crea una cuenta de servicio de Kubernetes:

    kubectl create serviceaccount KSA_NAME --namespace NAMESPACE
    

    Haz los cambios siguientes:

    • KSA_NAME: nombre de la cuenta de servicio.
    • NAMESPACE: el espacio de nombres en el que se va a crear el objeto ServiceAccount.
  2. Concede acceso de gestión de identidades y accesos a la cuenta de servicio de Kubernetes para unGoogle Cloud recurso.

    De acuerdo con el principio de mínimos accesos, te recomendamos que solo concedas los roles específicos de los recursos a los que debe acceder tu aplicación.

    En el siguiente ejemplo, el comando asigna el rol Kubernetes Engine Cluster Viewer (roles/container.clusterViewer) a la cuenta de servicio que has creado. El comando usa el asunto que has asignado anteriormente en este documento.

    gcloud projects add-iam-policy-binding projects/PROJECT_ID \
        --role=roles/container.clusterViewer \
        --member=principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT \
        --condition=None
    

    Haz los cambios siguientes:

    • PROJECT_NUMBER: el número de proyectoGoogle Cloud numérico asociado a tu ID de proyecto.

    • POOL_ID: el ID del grupo de identidades de carga de trabajo.

    • MAPPED_SUBJECT: la cuenta de servicio de Kubernetes de la reclamación de tu token de ID que has asignado a google.subject. Por ejemplo, si has asignado google.subject=assertions.sub y tu token de ID contiene "sub": "system:serviceaccount:default:my-kubernetes-serviceaccount", MAPPED_SUBJECT es system:serviceaccount:default:my-kubernetes-serviceaccount.

    Puedes conceder roles en cualquier Google Cloud recurso que admita políticas de permiso de gestión de identidades y accesos. La sintaxis del identificador de la cuenta principal depende del recurso de Kubernetes. Para ver una lista de los identificadores admitidos, consulta Identificadores principales de Workload Identity Federation para GKE.

Ahora puedes desplegar una carga de trabajo que use la cuenta de servicio de Kubernetes para acceder a los Google Cloud recursos a los que le hayas concedido acceso.

Alternativa: Usar la suplantación de identidad de la cuenta de servicio de IAM para conceder acceso

Para configurar tu Kubernetes ServiceAccount de forma que use la suplantación de identidad de la cuenta de servicio de gestión de identidades y accesos, haz lo siguiente:

  1. Crea una ServiceAccount de Kubernetes si aún no lo has hecho:

    kubectl create serviceaccount KSA_NAME --namespace NAMESPACE
    

    Haz los cambios siguientes:

    • KSA_NAME: nombre de la ServiceAccount
    • NAMESPACE: el espacio de nombres en el que se va a crear la ServiceAccount
  2. Crea una cuenta de servicio de IAM que represente la 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 especificar el proyecto que contiene la cuenta de servicio cuando hagas referencia a ella.

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

    Haz los cambios siguientes:

    • IAM_SA_NAME: el nombre de la cuenta de servicio
    • IAM_SA_PROJECT_ID: el ID de proyecto de la cuenta de servicio
  3. Concede acceso a tu cuenta de servicio de gestión de identidades y accesos a los Google Cloud recursos específicos a los que quieras que acceda la carga de trabajo de Kubernetes.

    gcloud projects add-iam-policy-binding IAM_SA_PROJECT_ID \
        --member="serviceAccount:IAM_SA_NAME@IAM_SA_PROJECiam.gserviceaccount.comT_ID." \
        --role="ROLE"
    

    Haz los cambios siguientes:

    • IAM_SA_PROJECT_ID: el ID del proyecto en el que has creado tu cuenta de servicio
    • IAM_SA_NAME: el nombre de la cuenta de servicio
    • ROLE: con el nombre del rol. Por ejemplo: roles/container.clusterViewer
  4. Concede a la cuenta de servicio de Kubernetes acceso para suplantar a la cuenta de servicio de IAM:

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

    Haz los cambios siguientes:

    • IAM_SA_NAME: el nombre de la cuenta de servicio
    • PROJECT_ID: el ID del proyecto en el que ejecutas Kubernetes
    • IAM_SA_PROJECT_NUMBER: el número de proyecto del proyecto en el que has creado tu cuenta de servicio
    • POOL_ID: el ID del grupo de identidades de carga de trabajo.
    • MAPPED_SUBJECT: la cuenta de servicio de Kubernetes de la reclamación de tu token de ID que has asignado a google.subject. Por ejemplo, si has asignado google.subject=assertions.sub y tu token de ID contiene "sub": "system:serviceaccount:default:my-kubernetes-serviceaccount", MAPPED_SUBJECT es system:serviceaccount:default:my-kubernetes-serviceaccount.

    Para obtener información sobre cómo autorizar cuentas de servicio de gestión de identidades y accesos para acceder a las APIs deGoogle Cloud , consulta Información sobre las cuentas de servicio.

Ahora puedes desplegar una carga de trabajo que use la cuenta de servicio de Kubernetes y la cuenta de servicio de gestión de identidades y accesos para acceder a los recursos de Google Clouda los que hayas concedido acceso.

Desplegar la carga de trabajo de Kubernetes

Para desplegar una carga de trabajo de Kubernetes que pueda acceder a los recursos de Google Cloud , haz lo siguiente:

  1. Crea un archivo de configuración de credenciales:

    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 \
        --credential-source-file=/var/run/service-account/token \
        --credential-source-type=text \
        --output-file=credential-configuration.json

    Haz los cambios siguientes:

    • PROJECT_NUMBER: el 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: dirección de correo de la cuenta de servicio, si has configurado tu cuenta de servicio de Kubernetes para usar la suplantación de identidad de la cuenta de servicio de gestión de identidades y accesos. Omite esta marca si has configurado tu cuenta de servicio de Kubernetes para que use el acceso directo a recursos.

    El archivo de configuración de credenciales permite que las bibliotecas de cliente de Cloud, la CLI de gcloud y Terraform determinen lo siguiente:

    • Dónde obtener las credenciales externas
    • Qué grupo y proveedor de identidades de carga de trabajo se deben usar
    • Cuenta de servicio cuya identidad se va a usar
  2. Importa el archivo de configuración de credenciales como un ConfigMap.

    kubectl create configmap CONFIGMAP_NAME \
      --from-file credential-configuration.json \
      --namespace NAMESPACE
    

    Haz los cambios siguientes:

    • CONFIGMAP_NAME: nombre del ConfigMap.
    • NAMESPACE: el espacio de nombres en el que se creará el ConfigMap.
  3. Despliega una carga de trabajo y deja que use la cuenta de servicio de Kubernetes y el ConfigMap.

    Crea un archivo de manifiesto y configúralo de la siguiente manera:

    • Monta un volumen de token proyectado para que la carga de trabajo pueda obtener un token de ServiceAccount de Kubernetes de un archivo local. Configura el volumen para que el token de KubernetesServiceAccount use la audiencia esperada por tu proveedor de identidades de carga de trabajo.
    • Monta el ConfigMap que contiene el archivo de configuración de credenciales para que la carga de trabajo pueda acceder a la configuración necesaria para usar Federación de identidades de cargas de trabajo.
    • Añade una variable de entorno GOOGLE_APPLICATION_CREDENTIALS que contenga la ruta del archivo de configuración de la credencial para que las cargas de trabajo puedan encontrar el archivo.

    A continuación, se muestra un ejemplo de manifiesto que usa Kubernetes ServiceAccount y ConfigMap para permitir que la CLI de Google Cloud se autentique en Google Cloud:

    apiVersion: v1
    kind: Pod
    metadata:
      name: example
      namespace: NAMESPACE
    spec:
      containers:
      - name: example
        image: google/cloud-sdk:alpine
        command: ["/bin/sh", "-c", "gcloud auth login --cred-file $GOOGLE_APPLICATION_CREDENTIALS && gcloud auth list && sleep 600"]
        volumeMounts:
        - name: token
          mountPath: "/var/run/service-account"
          readOnly: true
        - name: workload-identity-credential-configuration
          mountPath: "/etc/workload-identity"
          readOnly: true
        env:
        - name: GOOGLE_APPLICATION_CREDENTIALS
          value: "/etc/workload-identity/credential-configuration.json"
    
      serviceAccountName: KSA_NAME
      volumes:
      - name: token
        projected:
          sources:
          - serviceAccountToken:
              audience: https://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/WORKLOAD_PROVIDER_ID
              expirationSeconds: 3600
              path: token
      - name: workload-identity-credential-configuration
        configMap:
          name: CONFIGMAP_NAME

    Puedes seguir el mismo procedimiento para permitir que las herramientas y las cargas de trabajo que usan una de las siguientes bibliotecas de cliente encuentren las credenciales automáticamente:

    C++

    Las Google 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 proveedorGoogle 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.

  4. También puede verificar que la autenticación funciona correctamente ejecutando el siguiente comando:

    kubectl exec example --namespace NAMESPACE -- gcloud auth print-access-token

Siguientes pasos