En esta guía, se describe cómo usar la federación de identidades para carga 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 autoalojado se autentique en Google Cloud.
Kubernetes te permite configurar un clúster para que las cargas de trabajo puedan obtener tokens de cuenta de servicio de Kubernetes de un volumen proyectado. Cuando configuras la federación de identidades para carga de trabajo, puedes permitir que las cargas de trabajo usen estos tokens de cuenta de servicio de Kubernetes para autenticarse en Google Cloud.
Si usas GKE, usa Workload Identity Federation for GKE en lugar de configurar la federación de identidades para cargas de trabajo.
Antes de comenzar
Antes de configurar la federación de identidades para carga de trabajo, asegúrate de que tu clúster de Kubernetes cumpla con los siguientes criterios:
GKE
Para los usuarios de Google Kubernetes Engine (GKE), consulta Autenticación en las APIs de Google Cloud desde cargas de trabajo de GKE.
AKS
Asegúrate de que tu clúster cumpla con los siguientes requisitos:
Habilitaste la función emisor de OIDC.
Debes habilitar esta función para que la federación de identidades para carga de trabajo pueda acceder a los metadatos de OpenID Connect y el conjunto de claves web JSON (JWKS) para el clúster.
EKS
No es necesario que realices ningún cambio en la configuración de EKS.
Kubernetes
Asegúrate de que tu clúster cumpla con los siguientes requisitos:
Estás ejecutando 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.
Configuraste
kube-apiserver
para que admita proyecciones de volumen de tokenServiceAccount
.
No es necesario que se pueda acceder al clúster a través de Internet.
Configura la federación de identidades para cargas de trabajo
Solo debes seguir estos pasos una vez para cada clúster de Kubernetes. Luego, puedes usar el mismo grupo y proveedor de identidades para cargas de trabajo para varios pods de Kubernetes y en varios proyectos de Google Cloud.
Para comenzar a configurar la federación de identidades para 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 dedicado para administrar grupos de identidades para cargas de trabajo y proveedores.
-
Make sure that billing is enabled for your Google Cloud project.
Enable the IAM, Resource Manager, Service Account Credentials, and Security Token Service APIs.
Define una condición y la asignación de atributos
Los tokens de la cuenta de servicio de Kubernetes contienen varias reclamaciones, incluidas las que se detallan a continuación:
sub
: Contiene el espacio de nombres y el nombre de la ServiceAccount. Por ejemplo,system:serviceaccount:NAMESPACE:KSA_NAME
, en el queNAMESPACE
es el espacio de nombres de la ServiceAccount yKSA_NAME
es el nombre de la ServiceAccount."kubernetes.io".namespace
: Contiene el espacio de nombres de la 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
De manera opcional, puedes asignar atributos adicionales. Luego, puedes hacer referencia a estos atributos adicionales cuando otorgues 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']
De manera opcional, puedes definir una condición de atributo.
Las condiciones de los atributos son expresiones CEL que pueden verificar los atributos de aserción y los atributos de destino. Si la condición del atributo 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 para cargas de trabajo para obtener tokens de Google Cloud de corta duración.
Por ejemplo, la siguiente condición restringe el acceso a las cuentas de servicio de Kubernetes desde los espacios de nombres backend
y monitoring
:
assertion['kubernetes.io']['namespace'] in ['backend', 'monitoring']
Crea el proveedor y el grupo de identidades para cargas de trabajo
Roles obligatorios
A fin de obtener los permisos que necesitas para configurar la federación de identidades para cargas de trabajo, pídele a tu administrador que te otorgue los siguientes roles de IAM en el proyecto:
-
Administrador de grupos de identidades para cargas de trabajo (
roles/iam.workloadIdentityPoolAdmin
) -
Administrador de cuenta de servicio (
roles/iam.serviceAccountAdmin
)
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
De manera alternativa, el rol básico de propietario de IAM (roles/owner
) también incluye permisos para configurar la federación de identidades.
No deberías otorgar roles básicos en un entorno de producción, pero puedes otorgarlas en un entorno de prueba o desarrollo.
Para crear un proveedor y un grupo de identidades para cargas de trabajo, haz lo siguiente:
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
Reemplaza lo siguiente:
NAME
: el nombre del clústerRESOURCE_GROUP
: Es el grupo de recursos del clúster
El comando genera la URL de la entidad emisora. Necesitas la URL de la entidad emisora en uno de los siguientes pasos.
Si el comando no devuelve una URL de la entidad emisora, verifica que hayas habilitado la función entidad emisora de OIDC.
Crea un nuevo grupo de identidades para cargas de trabajo:
gcloud iam workload-identity-pools create POOL_ID \ --location="global" \ --description="DESCRIPTION" \ --display-name="DISPLAY_NAME"
Reemplaza lo siguiente:
POOL_ID
: el ID único para el grupo.DISPLAY_NAME
: el nombre del grupo.DESCRIPTION
: una descripción del grupo que eliges. Esta descripción aparece cuando otorgas acceso a identidades de grupo.
Agrega el clúster de AKS como proveedor de grupos de identidades para cargas de trabajo:
gcloud iam workload-identity-pools providers create-oidc PROVIDER_ID \ --location="global" \ --workload-identity-pool="POOL_ID" \ --issuer-uri="ISSUER" \ --attribute-mapping="MAPPINGS" \ --attribute-condition="CONDITIONS"
Reemplaza lo siguiente:
PROVIDER_ID
: Un ID de proveedor de grupos de identidades para cargas de trabajo único que elijas.POOL_ID
: El ID del grupo de identidades de cargas de trabajo que creaste antes.ISSUER
: Es el URI de la entidad emisora que determinaste antes.MAPPINGS
: Una lista separada por comas de las asignaciones de atributos que creaste antes en esta guía.CONDITIONS
: Es una condición de atributo opcional que creaste antes 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
Reemplaza
NAME
por el nombre del clúster.El comando genera la URL de la entidad emisora. Necesitas la URL de la entidad emisora en uno de los siguientes pasos.
Crea un nuevo grupo de identidades para cargas de trabajo:
gcloud iam workload-identity-pools create POOL_ID \ --location="global" \ --description="DESCRIPTION" \ --display-name="DISPLAY_NAME"
Reemplaza lo siguiente:
POOL_ID
: el ID único para el grupo.DISPLAY_NAME
: el nombre del grupo.DESCRIPTION
: una descripción del grupo que eliges. Esta descripción aparece cuando otorgas acceso a identidades de grupo.
Agrega el clúster de EKS como proveedor de grupos de identidades para cargas de trabajo:
gcloud iam workload-identity-pools providers create-oidc PROVIDER_ID \ --location="global" \ --workload-identity-pool="POOL_ID" \ --issuer-uri="ISSUER" \ --attribute-mapping="MAPPINGS" \ --attribute-condition="CONDITIONS"
Reemplaza lo siguiente:
PROVIDER_ID
: Un ID de proveedor de grupos de identidades para cargas de trabajo único que elijas.POOL_ID
: El ID del grupo de identidades de cargas de trabajo que creaste antes.ISSUER
: Es el URI de la entidad emisora que determinaste antes.MAPPINGS
: Una lista separada por comas de las asignaciones de atributos que creaste antes en esta guía.CONDITIONS
: Es una condición de atributo opcional que creaste antes 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 de la entidad emisora de tu clúster:kubectl get --raw /.well-known/openid-configuration | jq -r .issuer
Necesitas la URL de la entidad emisora en uno de los siguientes pasos.
Descarga el conjunto de claves web JSON (JWKS) del clúster:
kubectl get --raw /openid/v1/jwks > cluster-jwks.json
En uno de los siguientes pasos, subes el JWKS para que la federación de identidades para cargas de trabajo pueda verificar la autenticidad de los tokens de la cuenta de servicio de Kubernetes que emite el clúster.
Crea un nuevo grupo de identidades para cargas de trabajo:
gcloud iam workload-identity-pools create POOL_ID \ --location="global" \ --description="DESCRIPTION" \ --display-name="DISPLAY_NAME"
Reemplaza lo siguiente:
POOL_ID
: el ID único para el grupo.DISPLAY_NAME
: el nombre del grupo.DESCRIPTION
: una descripción del grupo que eliges. Esta descripción aparece cuando otorgas acceso a identidades de grupo.
Agrega el clúster de Kubernetes como un proveedor de grupos de identidades para cargas de trabajo y sube los JWKS del clúster:
gcloud iam workload-identity-pools providers create-oidc PROVIDER_ID \ --location="global" \ --workload-identity-pool="POOL_ID" \ --issuer-uri="ISSUER" \ --attribute-mapping="MAPPINGS" \ --attribute-condition="CONDITIONS" \ --jwk-json-path="cluster-jwks.json"
Reemplaza lo siguiente:
PROVIDER_ID
: Un ID de proveedor de grupos de identidades para cargas de trabajo único que elijas.POOL_ID
: El ID del grupo de identidades de cargas de trabajo que creaste antes.ISSUER
: Es el URI de la entidad emisora que determinaste antes.MAPPINGS
: Una lista separada por comas de las asignaciones de atributos que creaste antes en esta guía.CONDITIONS
: Es una condición de atributo opcional que creaste antes en esta guía. Quita el parámetro si no tienes una condición de atributo.
Otorga 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 de Google Cloud mediante el acceso directo a los recursos de la federación de identidades para cargas de trabajo o la identidad temporal como cuenta de servicio.
Debes seguir estos pasos una vez por cada carga de trabajo de Kubernetes que necesite acceso a Google Cloud.
Te recomendamos que uses la federación de identidades para cargas de trabajo. Sin embargo, cuando se usa la federación de identidades, es posible que ciertos métodos de la API tengan limitaciones. Para obtener una lista de limitaciones, consulta Federación de identidades: productos y limitaciones.
Si los métodos que usa tu carga de trabajo tienen esas limitaciones, puedes usar el suplantación de identidad de IAM.
Usa la federación de identidades para cargas de trabajo para otorgar acceso directo a los recursos
En esta sección, usarás la federación de identidades para cargas de trabajo para otorgar un rol de IAM a una cuenta de servicio de Kubernetes para que pueda acceder directamente a los recursos de Google Cloud.
Para crear una cuenta de servicio de Kubernetes y otorgarle un rol, haz lo siguiente:
Crea una ServiceAccount de Kubernetes:
kubectl create serviceaccount KSA_NAME --namespace NAMESPACE
Reemplaza lo siguiente:
KSA_NAME
: Es un nombre de la ServiceAccount.NAMESPACE
: Es el espacio de nombres en el que se creará la ServiceAccount.
Otorga acceso de IAM a la cuenta de servicio de Kubernetes para un recurso de Google Cloud.
De acuerdo con el principio de privilegio mínimo, te recomendamos que otorgues solo roles específicos a los recursos a los que debe acceder tu aplicación.
En el siguiente ejemplo, el comando otorga el rol de visualizador de clústeres de Kubernetes Engine (
roles/container.clusterViewer
) a la cuenta de servicio que creaste. El comando usa el asunto que asignaste antes 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
Reemplaza lo siguiente:
PROJECT_NUMBER
: El número numérico del proyecto de Google Cloud asociado con el ID de tu proyecto.POOL_ID
: El ID del grupo de identidades para cargas de trabajo.MAPPED_SUBJECT
: La cuenta de servicio de Kubernetes del reclamo en tu token de ID que asignaste agoogle.subject
. Por ejemplo, si asignastegoogle.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 otorgar roles en cualquier recurso de Google Cloud que admita políticas de permisos de IAM. La sintaxis del identificador principal depende del recurso de Kubernetes. Si deseas obtener una lista de identificadores compatibles, consulta Identificadores principales para la Workload Identity Federation for GKE.
Ahora puedes implementar una carga de trabajo que use la cuenta de servicio de Kubernetes para acceder a los recursos de Google Cloud a los que otorgaste acceso.
Alternativa: Usa la identidad temporal como cuenta de servicio de IAM para otorgar acceso
Para configurar tu cuenta de servicio de Kubernetes para que use la suplantación de identidad de la cuenta de servicio de IAM, haz lo siguiente:
Crea una ServiceAccount de Kubernetes, si aún no lo hiciste:
kubectl create serviceaccount KSA_NAME --namespace NAMESPACE
Reemplaza lo siguiente:
KSA_NAME
: Es un nombre para la ServiceAccount.NAMESPACE
: Es el espacio de nombres en el que se creará la ServiceAccount.
Crea una cuenta de servicio de IAM que represente la carga de trabajo.
No es necesario que la cuenta de servicio esté en el mismo proyecto que el grupo de identidades para cargas de trabajo, pero debes especificar el proyecto que contiene la cuenta de servicio cuando te refieras a ella.
gcloud iam service-accounts create IAM_SA_NAME \ --project=IAM_SA_PROJECT_ID
Reemplaza lo siguiente:
IAM_SA_NAME
: el nombre de la cuenta de servicioIAM_SA_PROJECT_ID
: el ID del proyecto de la cuenta de servicio.
Otorga acceso a tu cuenta de servicio de IAM a los recursos específicos de Google Cloud a los que deseas 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_PROJECT_ID.iam.gserviceaccount.com" \ --role="ROLE"
Reemplaza lo siguiente:
IAM_SA_PROJECT_ID
: Es el ID del proyecto en el que creaste tu cuenta de servicio.IAM_SA_NAME
: el nombre de la cuenta de servicioROLE
: Con el nombre del rol, por ejemplo,roles/container.clusterViewer
Otorga acceso a la cuenta de servicio de Kubernetes para que actúe en nombre 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 \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \ --role=roles/iam.workloadIdentityUser
Reemplaza lo siguiente:
IAM_SA_NAME
: el nombre de la cuenta de servicioPROJECT_ID
: Es el ID del proyecto en el que ejecutas Kubernetes.IAM_SA_PROJECT_NUMBER
: El número de proyecto del proyecto en el que creaste tu cuenta de servicioPOOL_ID
: El ID del grupo de identidades para cargas de trabajo.MAPPED_SUBJECT
: La cuenta de servicio de Kubernetes del reclamo en tu token de ID que asignaste agoogle.subject
. Por ejemplo, si asignastegoogle.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 la autorización de cuentas de servicio de IAM a fin de acceder a las APIs de Google Cloud, consulta la página Comprende las cuentas de servicio.
Ahora puedes implementar una carga de trabajo que use la cuenta de servicio de Kubernetes y la cuenta de servicio de IAM para acceder a los recursos de Google Cloud a los que otorgaste acceso.
Implementa la carga de trabajo de Kubernetes
Para implementar 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/PROVIDER_ID \ --service-account=SERVICE_ACCOUNT_EMAIL \ --credential-source-file=/var/run/service-account/token \ --credential-source-type=text \ --output-file=credential-configuration.json
Reemplaza lo siguiente:
PROJECT_NUMBER
: El número del proyecto que contiene el grupo de identidades para cargas de trabajo.POOL_ID
: El ID del grupo de identidades para cargas de trabajoPROVIDER_ID
: El ID del proveedor de grupo de identidades para cargas de trabajoSERVICE_ACCOUNT_EMAIL
: Es la dirección de correo electrónico de la cuenta de servicio si configuraste tu cuenta de servicio de Kubernetes para usar la identidad temporal como cuenta de servicio. Omite esta marca si configuraste tu cuenta de servicio de Kubernetes para usar el acceso directo a los recursos.
El archivo de configuración de credenciales permite que las bibliotecas cliente de Cloud, gcloud CLI y Terraform determinen lo siguiente:
- Dónde obtener credenciales externas
- Qué grupo y proveedor de identidades para cargas de trabajo usar
- Qué cuenta de servicio actuará en nombre de ella
Importa el archivo de configuración de credenciales como un ConfigMap.
kubectl create configmap CONFIGMAP_NAME \ --from-file credential-configuration.json \ --namespace NAMESPACE
Reemplaza lo siguiente:
CONFIGMAP_NAME
: Es el nombre del ConfigMap.NAMESPACE
: Es el espacio de nombres en el que se creará el ConfigMap.
Implementar una carga de trabajo y dejar que use la cuenta de servicio de Kubernetes y ConfigMap.
Crea un manifiesto y configúralo de la siguiente manera:
- Activa un volumen de token proyectado para que la carga de trabajo pueda obtener un token de cuenta de servicio de Kubernetes desde un archivo local. Configura el volumen para que el token de la cuenta de servicio de Kubernetes use el público que espera el proveedor de grupos de identidades para cargas de trabajo.
- Activa 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 la federación de identidades para cargas de trabajo.
- Agrega una variable de entorno
GOOGLE_APPLICATION_CREDENTIALS
que contenga la ruta del archivo de configuración de credenciales para que las cargas de trabajo puedan encontrar el archivo.
El siguiente es un manifiesto de ejemplo que usa la cuenta de servicio de Kubernetes y ConfigMap para permitir que Google Cloud CLI 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/PROVIDER_ID expirationSeconds: 3600 path: token - name: workload-identity-credential-configuration configMap: name: CONFIGMAP_NAME
Puedes seguir el mismo enfoque para permitir que las herramientas y las cargas de trabajo que usan una de las siguientes bibliotecas cliente encuentren las credenciales automáticamente:
C++
Las bibliotecas cliente de Google Cloud para C++ admiten la federación de identidades para cargas de trabajo desde la versión v2.6.0. Para usar la federación de identidades para cargas de trabajo, debes compilar las bibliotecas cliente con la versión 1.36.0 o posterior de gRPC.
Go
Las bibliotecas cliente para Go admiten la federación de identidades para cargas de trabajo 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 para cargas de trabajo 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 para cargas de trabajo 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 queGoogleAuth
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 elREADME
del paquetegoogle-auth-library
.Python
Las bibliotecas cliente para Python admiten la federación de identidades para cargas de trabajo 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 paquetegoogle-auth
.gcloud
Para autenticar con la federación de identidades para cargas de trabajo, usa el comando
gcloud auth login
:gcloud auth login --cred-file=FILEPATH.json
Reemplaza
FILEPATH
por la ruta de acceso al archivo de configuración de credenciales.La asistencia para la federación de identidades para cargas de trabajo en gcloud CLI está disponible en la versión 363.0.0 y posteriores de gcloud CLI.
Terraform
El proveedor de servicios de Google Cloud admite la federación de identidades para 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 autenticar a través de la federación de identidades para cargas de trabajo, usa el comando
gcloud auth login
de la siguiente manera:gcloud auth login --cred-file=FILEPATH.json
Reemplaza
FILEPATH
por la ruta de acceso al archivo de configuración de credenciales.La compatibilidad con la federación de identidades para cargas de trabajo en bq está disponible en la versión 390.0.0 y posteriores de gcloud CLI.
De manera opcional, ejecuta el siguiente comando para verificar que la autenticación funcione correctamente:
kubectl exec example --namespace NAMESPACE -- gcloud auth print-access-token
¿Qué sigue?
- Obtén más información sobre la federación de Workload Identity.
- Obtén más información sobre las prácticas recomendadas para usar la federación de Workload Identity.
- Consulta cómo puedes administrar grupos y proveedores de identidades para cargas de trabajo.