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 deServiceAccount
.
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:
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Te recomendamos que
uses un proyecto específico para gestionar los grupos y proveedores de Workload Identity.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the IAM, Resource Manager, Service Account Credentials, and Security Token Service 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
, dondeNAMESPACE
es el espacio de nombres de la cuenta de servicio yKSA_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:
-
Administrador de grupos de Workload Identity (
roles/iam.workloadIdentityPoolAdmin
) -
Administrador de cuentas de servicio (
roles/iam.serviceAccountAdmin
)
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
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ústerRESOURCE_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.
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.
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
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.
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.
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
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.
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.
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.
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:
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.
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 agoogle.subject
. Por ejemplo, si has asignadogoogle.subject=assertions.sub
y tu token de ID contiene"sub": "system:serviceaccount:default:my-kubernetes-serviceaccount"
,MAPPED_SUBJECT
essystem: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:
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 ServiceAccountNAMESPACE
: el espacio de nombres en el que se va a crear la ServiceAccount
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 servicioIAM_SA_PROJECT_ID
: el ID de proyecto de la cuenta de servicio
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." \ --ro
le="ROLE"Haz los cambios siguientes:
IAM_SA_PROJECT_ID
: el ID del proyecto en el que has creado tu cuenta de servicioIAM_SA_NAME
: el nombre de la cuenta de servicioROLE
: con el nombre del rol. Por ejemplo:roles/container.clusterViewer
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.workloadIden
tityUserHaz los cambios siguientes:
IAM_SA_NAME
: el nombre de la cuenta de servicioPROJECT_ID
: el ID del proyecto en el que ejecutas KubernetesIAM_SA_PROJECT_NUMBER
: el número de proyecto del proyecto en el que has creado tu cuenta de servicioPOOL_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 agoogle.subject
. Por ejemplo, si has asignadogoogle.subject=assertions.sub
y tu token de ID contiene"sub": "system:serviceaccount:default:my-kubernetes-serviceaccount"
,MAPPED_SUBJECT
essystem: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:
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 trabajoPOOL_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 trabajoSERVICE_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
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.
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 queGoogleAuth
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 laREADME
del paquetegoogle-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 paquetegoogle-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.
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
- Consulta más información sobre la federación de identidades de cargas de trabajo.
- Consulta las prácticas recomendadas para usar la federación de identidades de cargas de trabajo.
- Consulta cómo puedes gestionar grupos y proveedores de Workload Identity.