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 elprincipal
oprincipalSet
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:
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.
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.
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.
- La variable de entorno
Cuando la carga de trabajo realiza una llamada a la API de Google Cloud, se realizan los siguientes pasos:
- 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. - 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.
- ADC incluye el token federado con la solicitud a la API.
- 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/ Reemplaza lo siguiente:
Selecciona la ServiceAccount por UID: principal://iam.googleapis.com/projects/ Reemplaza lo siguiente:
|
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.
- La versión más reciente de Google Cloud CLI, que incluye
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:
- Habilita Workload Identity Federation for GKE en tu clúster de Google Kubernetes Engine, si aún no está habilitada.
- 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:
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 sintaxisFLEET_PROJECT_ID.svc.id.goog
.
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.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 ServiceAccountGuarda 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" } }
Implementa el ConfigMap:
kubectl create -f adc-config-map.yaml
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:- Los datos del ConfigMap que implementaste como un archivo llamado
google-application-credentials.json
Este archivo es un archivo de configuración de credenciales de ADC. - El token de la cuenta de servicio de Kubernetes como
token
Kubernetes activa un JWT firmado para la cuenta de servicio como un archivo de token de cuenta de servicio proyectado.
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.- Los datos del ConfigMap que implementaste como un archivo llamado
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.
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 sintaxisFLEET_PROJECT_ID.svc.id.goog
.
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.
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.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 nombresdefault
.kubectl create serviceaccount KSA_NAME \ --namespace=NAMESPACE
Reemplaza lo siguiente:
KSA_NAME
: el nombre de la ServiceAccountNAMESPACE
: Es el nombre del espacio de nombres.
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.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.
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:- Los datos del ConfigMap que implementaste como un archivo llamado
google-application-credentials.json
Este archivo es un archivo de configuración de credenciales de ADC. - El token de la cuenta de servicio de Kubernetes como
token
Kubernetes activa un JWT firmado para la cuenta de servicio como un archivo de token de cuenta de servicio proyectado.
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.- Los datos del ConfigMap que implementaste como un archivo llamado
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.
Busca el número de proyecto numérico:
gcloud projects describe FLEET_PROJECT_ID \ --format="value(projectNumber)"
El resultado es similar a este:
1234567890
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.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 proyectoNAMESPACE
: 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.
Crea una sesión de shell en el Pod:
kubectl exec -it pods/my-pod --namespace=NAMESPACE -- /bin/bash
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.