Autenticar en las APIs de Google Cloud desde cargas de trabajo de flotas de confianza mixta

En esta página se explica cómo configurar tus aplicaciones para que se autentiquen enGoogle Cloud APIs como la API Compute Engine o la API AI Platform desde flotas que tengan un modelo de confianza mixto. Si tu flota tiene un modelo de confianza compartida en toda la flota, consulta Autenticar en APIs desde cargas de trabajo de flotas de confianza compartida Google Cloud .

Esta página está dirigida a administradores y operadores de la plataforma, así como a ingenieros de seguridad que quieran autenticarse de forma programática desde cargas de trabajo de la flota en las APIs de Google Cloud. Para obtener más información sobre los roles de usuario y las tareas de ejemplo que mencionamos en la documentación, consulta Roles y tareas comunes de usuario de GKE. Google Cloud

Antes de leer esta página, asegúrate de que conoces los siguientes conceptos:

Acerca de la federación de identidades de cargas de trabajo de flotas en entornos de confianza mixta

La federación de identidades de cargas de trabajo de flotas te permite asignar roles de gestión de identidades y accesos enGoogle Cloud APIs y recursos a entidades de tu flota, como cargas de trabajo de un espacio de nombres específico. De forma predeterminada, el proyecto host de tu flota usa un grupo de identidades de cargas de trabajo gestionado por Google para aprovisionar identidades de entidades de toda la flota. Sin embargo, en entornos de confianza mixta, como flotas multiinquilino o proyectos host de flotas que ejecutan clústeres independientes, te recomendamos que configures un grupo de identidades de carga de trabajo autogestionado independiente para un subconjunto de tus cargas de trabajo y clústeres.

Las entidades que usan un grupo de Workload Identity autogestionado tienen identificadores diferentes en las políticas de IAM que las entidades que usan el grupo de Workload Identity gestionado por Google del proyecto host de la flota. De esta forma, se asegura de que, al conceder acceso a las principales de un espacio de nombres de flota específico, no se conceda acceso por error a ninguna otra principal que coincida con el identificador.

Los grupos de identidades de carga de trabajo autogestionados requieren que uses ámbitos de equipo. Los permisos de equipo te permiten controlar el acceso a subconjuntos de recursos de flota por equipos. Asigna ámbitos de equipo específicos a clústeres de miembros de la flota concretos para permitir que ese equipo despliegue cargas de trabajo en esos clústeres. En un ámbito de equipo, los miembros del equipo solo pueden desplegar cargas de trabajo en espacios de nombres de flota.

Usar grupos de identidades de carga de trabajo autogestionados para proporcionar identidades a cargas de trabajo de ámbito de equipo tiene ventajas como las siguientes:

  • Asegúrate de que las concesiones de acceso a entidades de espacios de nombres de la flota no se apliquen por error a entidades de otros espacios de nombres o clústeres.
  • Configura un conjunto de clústeres de flota para obtener identidades del grupo autogestionado vinculándolos a un ámbito de equipo y configurando el grupo autogestionado como proveedor de identidades en esos clústeres.
  • Configura un subconjunto de los clústeres vinculados de un ámbito de equipo para obtener identidades del grupo autogestionado configurando solo el grupo autogestionado como proveedor de identidades en clústeres específicos.

Ejemplo de igualdad de identidades en un entorno de confianza mixta

Veamos la siguiente situación:

  • Tienes dos clústeres de miembros de la flota: frontend-cluster y finance-cluster.
  • No has configurado ningún grupo de identidades de carga de trabajo autogestionado.
  • Crea un finance-team ámbito de equipo y un finance-ns espacio de nombres de flota en el ámbito de equipo.
  • Vincula el clúster finance-cluster al ámbito del equipo finance-team.
  • Asigna un rol de gestión de identidades y accesos a la finance-sa cuenta de servicio de Kubernetes en el espacio de nombres de la flota finance-ns.

Las cargas de trabajo que cumplan los siguientes criterios compartirán la misma identidad:

  • Se ejecuta en el espacio de nombres de la flota finance-ns.
  • Usa la finance-sa ServiceAccount.

Sin embargo, si alguien del clúster frontend-cluster crea un espacio de nombres de Kubernetes finance-ns y una cuenta de servicio finance-sa, obtendrá la misma identidad que las cargas de trabajo del clúster finance-cluster. Esto se debe a que toda la flota usa el grupo de identidades de carga de trabajo gestionado por Google del proyecto host de la flota y a que el identificador principal no especifica un clúster host.

Veamos los siguientes cambios en la situación anterior:

  • Configura un grupo de identidades de carga de trabajo autogestionado en tu flota.
  • Configuras el clúster finance-cluster para obtener identidades del grupo autogestionado en lugar del grupo gestionado por Google.
  • Crea una concesión de rol de gestión de identidades y accesos que especifique el grupo autogestionado en el identificador de la entidad principal en lugar del grupo gestionado por Google.

Las cargas de trabajo que se ejecutan en el espacio de nombres de la flota finance-ns en finance-cluster ahora obtienen una identidad del grupo autogestionado. Sin embargo, las entidades del espacio de nombres de Kubernetes finance-ns del clúster frontend-cluster siguen obteniendo identidades del grupo de identidades de carga de trabajo gestionado por Google del proyecto host de la flota.

Estos cambios ofrecen las siguientes ventajas:

  • Puedes asignar roles explícitamente a entidades en el espacio de nombres finance-ns fleet.
  • Las entidades del clúster frontend-cluster no pueden obtener el mismo acceso porque las identidades del clúster frontend-cluster proceden del grupo de identidades de carga de trabajo gestionado por Google.

Antes de empezar

  • Asegúrate de que tienes 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 ya están instaladas.

  • Asegúrate de haber inicializado gcloud CLI para usarlo con tu proyecto.

Requisitos

Debes usar funciones de gestión de equipos de la flota, como los permisos de equipo y los espacios de nombres de la flota. En las instrucciones de esta página se explica cómo configurar un ámbito de equipo y un espacio de nombres de flota de ejemplo.

Preparar los clústeres

Para 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 configurarse correctamente para usar la federación de Workload Identity de la flota. En las siguientes secciones se describe cómo configurar la federación de identidades de cargas de trabajo de la flota para diferentes tipos de clústeres.

GKE

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

  1. Habilita la federación de Workload Identity para GKE en tu clúster de Google Kubernetes Engine, si aún no lo has hecho.
  2. Registra el clúster en la flota.

También puedes habilitar Workload Identity Federation para GKE durante el proceso de creación de clústeres y registro de flotas.

Clústeres externos Google Cloud

Los siguientes tipos de clústeres habilitan automáticamente la federación de Workload Identity 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 bare metal
  • GKE en AWS
  • GKE en Azure

Clústeres vinculados

Los clústeres adjuntos de EKS y AKS registrados mediante la API GKE Multi-Cloud se registran con la federación de Workload Identity de la flota habilitada de forma predeterminada. Los otros clústeres adjuntos se pueden registrar con la federación de identidades de cargas de trabajo de la flota habilitada si cumplen los requisitos necesarios. Sigue las instrucciones correspondientes a tu tipo de clúster en Registrar un clúster.

Configurar un grupo de identidades de carga de trabajo de gestión de identidades y accesos

En esta sección, creará un grupo de identidades de carga de trabajo de IAM en el proyecto host de la flota y dará acceso al nuevo grupo al agente de servicio de la flota.

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

    gcloud iam workload-identity-pools create POOL_NAME \
        --location=global \
        --project=POOL_HOST_PROJECT_ID \
        --mode=TRUST_DOMAIN
    

    Haz los cambios siguientes:

    • POOL_NAME: nombre del nuevo grupo de identidades de carga de trabajo.
    • POOL_HOST_PROJECT_ID: el ID del proyecto en el que quieres crear el grupo de identidades de carga de trabajo autogestionado. Puedes usar cualquier proyecto, incluido el proyecto de host de tu flota. Google Cloud
  2. Asigna el rol Administrador de grupos de Workload Identity de IAM (roles/iam.workloadIdentityPoolAdmin) al agente de servicio de la flota en el nuevo grupo de Workload Identity:

    gcloud iam workload-identity-pools add-iam-policy-binding POOL_NAME \
        --project=POOL_HOST_PROJECT_ID \
        --location=global \
        --member=serviceAccount:service-FLEET_HOST_PROJECT_NUMBER@gcp-sa-gkehub.iam.gserviceaccount.com \
        --role=roles/iam.workloadIdentityPoolAdmin \
        --condition=None
    

    Sustituye FLEET_HOST_PROJECT_NUMBER por el número del proyecto host de la flota.

Añadir el grupo autogestionado a la configuración de tu flota

En esta sección, habilitará los grupos autogestionados con la federación de identidades de cargas de trabajo de la flota y añadirá el grupo que ha creado a la configuración de la flota. En esta sección también se explica cómo crear un ámbito de equipo y un espacio de nombres de flota. Si tu flota ya tiene configurados los ámbitos de equipo y los espacios de nombres de flota, sáltate esos pasos.

  1. Habilita la federación de identidades de cargas de trabajo de la flota a nivel de flota:

    gcloud beta container fleet workload-identity enable \
      --project=FLEET_HOST_PROJECT_ID
    

    Sustituye FLEET_HOST_PROJECT_ID por el ID del proyecto host de tu flota.

  2. Añade el grupo de identidades de carga de trabajo autogestionado a la configuración de la flota:

    gcloud beta container fleet workload-identity scope-tenancy-pool set POOL_NAME
    

    Sustituye POOL_NAME por el nombre de tu grupo de identidades de carga de trabajo autogestionado. Este valor tiene la siguiente sintaxis:

    POOL_NAME.global.POOL_HOST_PROJECT_NUMBER.workload.id.goog
    
  3. Crea un nuevo ámbito de equipo. Si ya tienes un ámbito de equipo y un espacio de nombres de flota, ve a la sección Verificar la configuración del grupo de identidades de carga de trabajo.

    gcloud container fleet scopes create SCOPE_NAME
    

    Sustituye SCOPE_NAME por el nombre de tu nuevo ámbito de equipo.

  4. Crea un espacio de nombres de flota en el ámbito del equipo:

    gcloud container fleet scopes namespaces create NAMESPACE_NAME \
        --scope=SCOPE_NAME
    

    Sustituye NAMESPACE_NAME por el nombre de tu nuevo espacio de nombres de flota.

  5. Vincula un clúster de tu flota al ámbito del equipo:

    gcloud container fleet memberships bindings create BINDING_NAME \
        --membership=FLEET_CLUSTER_NAME \
        --location=global \
        --scope=SCOPE_NAME
    

    Haz los cambios siguientes:

    • BINDING_NAME: el nombre de tu nuevo enlace de miembro.
    • FLEET_CLUSTER_NAME: el nombre del clúster de la flota que se va a vincular al ámbito del equipo.

Verificar la configuración del grupo de identidades de carga de trabajo

En esta sección, comprobará que la configuración de su grupo de identidades de carga de trabajo autogestionado se ha realizado correctamente.

  1. Describe la configuración de la pertenencia a la flota:

    gcloud container fleet memberships describe FLEET_CLUSTER_NAME \
        --location=global
    

    Sustituye FLEET_CLUSTER_NAME por el nombre de un clúster de flota que esté enlazado a cualquier ámbito de equipo de tu flota.

    El resultado debería ser similar al siguiente:

    authority:
    ...
      scopeTenancyIdentityProvider: https://gkehub.googleapis.com/projects/FLEET_HOST_PROJECT_ID/locations/global/memberships/FLEET_CLUSTER_NAME
      scopeTenancyWorkloadIdentityPool: POOL_NAME.global.FLEET_HOST_PROJECT_NUMBER.workload.id.goog
      workloadIdentityPool: FLEET_HOST_PROJECT_ID.svc.id.goog
    ...
    

    Este resultado debe contener los siguientes campos:

    • scopeTenancyIdentityProvider: el proveedor de identidades de las cargas de trabajo que se ejecutan en espacios de nombres de flotas dentro de los ámbitos de equipo. El valor es un identificador de recurso de tu clúster.
    • scopeTenancyWorkloadIdentityPool: el grupo de identidades de carga de trabajo del que obtienen identificadores las cargas de trabajo de los espacios de nombres de la flota que se encuentran en los ámbitos del equipo. El valor es tu grupo de identidades de carga de trabajo autogestionado, con el formato POOL_NAME.global.FLEET_HOST_PROJECT_NUMBER.workload.id.goog.
    • workloadIdentityPool: el nombre del pool de identidades de cargas de trabajo gestionado por Google del proyecto host de la flota, desde el que todas las demás cargas de trabajo de la flota obtienen identidades de forma predeterminada.
  2. Opcional: Comprueba si tu grupo de identidades de carga de trabajo tiene un espacio de nombres con el mismo nombre que el espacio de nombres de tu flota:

    gcloud iam workload-identity-pools namespaces list \
        --workload-identity-pool=POOL_NAME \
        --location=global
    

    El resultado debería ser similar al siguiente:

    ---
    description: Fleet namespace NAMESPACE_NAME
    name: projects/FLEET_HOST_PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_NAME/namespaces/NAMESPACE_NAME
    state: ACTIVE
    

Tu flota ahora puede usar el grupo de identidades de carga de trabajo autogestionado para obtener identidades para las cargas de trabajo que se ejecutan en los espacios de nombres de la flota. Para empezar a usar el grupo autogestionado, configura cómo obtienen identidades los clústeres específicos, tal como se describe en la siguiente sección.

Hacer que las cargas de trabajo usen grupos autogestionados para las identidades

Para que las cargas de trabajo usen el grupo autogestionado, configura espacios de nombres de flotas específicos en los clústeres miembros de la flota mediante un ConfigMap de Kubernetes. Esta configuración por clúster y por espacio de nombres te permite reducir aún más el ámbito de las concesiones de acceso de espacios de nombres de toda la flota a cargas de trabajo que se ejecutan en espacios de nombres de flota específicos en clústeres concretos.

  1. Conéctate al clúster miembro de la flota:

    gcloud container clusters get-credentials FLEET_CLUSTER_NAME \
        --project=CLUSTER_PROJECT_ID \
        --location=CLUSTER_LOCATION
    

    Haz los cambios siguientes:

    • FLEET_CLUSTER_NAME: el nombre de un miembro de la flota que ya está vinculado a un ámbito de equipo.
    • CLUSTER_PROJECT_ID: el ID de proyecto del clúster proyecto.
    • CLUSTER_LOCATION: la ubicación del clúster.
  2. Obtén el nombre completo del grupo de identidades de carga de trabajo autogestionado. Lo necesitarás más adelante.

    kubectl get membership membership -o json | jq -r ".spec.scope_tenancy_workload_identity_pool"
    

    El resultado debería ser similar al siguiente:

    POOL_NAME.global.FLEET_HOST_PROJECT_NUMBER.workload.id.goog
    
  3. Obtiene el nombre del proveedor de identidades de los ámbitos de equipo. Necesitarás estos datos más adelante.

    kubectl get membership membership -o json | jq -r ".spec.scope_tenancy_identity_provider"
    

    El resultado debería ser similar al siguiente:

    https://gkehub.googleapis.com/projects/FLEET_HOST_PROJECT_ID/locations/global/memberships/FLEET_CLUSTER_NAME
    
  4. En un editor de texto, guarde el siguiente manifiesto YAML de un ConfigMap como self-managed-pool.yaml:

    kind: ConfigMap
    apiVersion: v1
    metadata:
      namespace: NAMESPACE_NAME
      name: google-application-credentials
    data:
      config: |
        {
          "type": "external_account",
          "audience": "identitynamespace:SELF_MANAGED_POOL_FULL_NAME: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"
          }
        }
    

    Haz los cambios siguientes:

    • NAMESPACE_NAME: el nombre del espacio de nombres de la flota.
    • SELF_MANAGED_POOL_FULL_NAME: el nombre completo del grupo de identidades de carga de trabajo autogestionado de los resultados de los pasos anteriores de esta sección. Por ejemplo, example-pool.global.1234567890.workload.id.goog.
    • IDENTITY_PROVIDER: el nombre del proveedor de identidades de la salida de los pasos anteriores de esta sección. Por ejemplo: https://gkehub.googleapis.com/projects/1234567890/locations/global/memberships/example-cluster.
  5. Despliega el ConfigMap en tu clúster:

    kubectl create -f self-managed-pool.yaml
    

Al implementar el ConfigMap, se indica a GKE que las cargas de trabajo de ese espacio de nombres deben usar el grupo de identidades de carga de trabajo autogestionado para obtener identidades.

Asignar roles de gestión de identidades y accesos a principales

En esta sección, crearás una cuenta de servicio de Kubernetes en un espacio de nombres de una flota y le asignarás un rol de gestión de identidades y accesos. Los pods que usen esta cuenta de servicio podrán acceder a los recursos de Google Cloud a los que les concedas el rol.

  1. Crea una Kubernetes ServiceAccount en el espacio de nombres de tu flota:

    kubectl create serviceaccount SERVICEACCOUNT_NAME \
        --namespace=NAMESPACE_NAME
    

    Haz los cambios siguientes:

    • SERVICEACCOUNT_NAME: el nombre de tu nuevo ServiceAccount.
    • NAMESPACE_NAME: el nombre del espacio de nombres de la flota.
  2. Asigna un rol de gestión de identidades y accesos a la cuenta de servicio. El siguiente comando de ejemplo asigna el rol Visor de objetos de Storage (roles/storage.objectViewer) en un segmento a la cuenta de servicio:

    gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
        --member=principal://iam.googleapis.com/projects/FLEET_HOST_PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_NAME.global.FLEET_HOST_PROJECT_NUMBER.workload.id.goog/subject/ns/NAMESPACE_NAME/sa/SERVICEACCOUNT_NAME \
        --role=roles/storage.objectViewer \
        --condition=None
    

La marca member contiene el identificador principal de la nueva cuenta de servicio que has creado. Las solicitudes que envían tus cargas de trabajo a las APIs de Google Cloudusan un token de acceso federado. Este token de acceso federado incluye el identificador principal de la entidad que envía la solicitud. Si la entidad principal de una política de permiso que concede un rol en el recurso de destino coincide con la entidad principal del token de acceso federado, se puede continuar con la autenticación y la autorización.

Desplegar cargas de trabajo que usen el grupo autogestionado

Los manifiestos de Kubernetes que apliques en el espacio de nombres de tu flota deben configurarse para obtener identidades del grupo autogestionado. Las cargas de trabajo que implementes y que necesiten llamar a las APIs de Google Cloud deben incluir los siguientes campos:

  • metadata.namespace: el nombre del espacio de nombres de la flota.
  • spec.serviceAccountName: el nombre de la cuenta de servicio de Kubernetes en el espacio de nombres de la flota.
  • spec.containers.env: una variable de entorno llamada GOOGLE_APPLICATION_CREDENTIALS que indica la ruta al archivo de credenciales predeterminadas de la aplicación (ADC).
  • spec.containers.volumeMounts: un volumen de solo lectura que permite al contenedor usar el token de portador de ServiceAccount.
  • spec.volumes: un volumen proyectado que monta un token de ServiceAccount en el Pod. La audiencia del token es el grupo de identidades de carga de trabajo autogestionado. El ConfigMap que contiene la configuración de federación de identidades de cargas de trabajo de la flota es una fuente del volumen.

Para ver un ejemplo de un archivo de manifiesto configurado correctamente, consulta la sección Verificar la autenticación de una carga de trabajo.

Verificar la autenticación de una carga de trabajo

En esta sección se proporcionan instrucciones opcionales para verificar que has configurado correctamente el grupo de identidades de carga de trabajo autogestionado. Para ello, se enumeran los contenidos de un segmento de Cloud Storage de ejemplo. Crea un segmento, asigna un rol en el segmento a una cuenta de servicio en un espacio de nombres de flota e implementa un pod para intentar acceder al segmento.

  1. Crea un segmento de Cloud Storage:

    gcloud storage buckets create gs://FLEET_HOST_PROJECT_ID-workload-id-bucket \
        --location=LOCATION \
        --project=FLEET_HOST_PROJECT_ID
    
  2. Asigna el rol roles/storage.objectViewer al ServiceAccount en el espacio de nombres de la flota:

    gcloud storage buckets add-iam-policy-binding gs://FLEET_HOST_PROJECT_ID-workload-id-bucket \
        --condition=None \
        --role=roles/storage.objectViewer \
        --member=principal://iam.googleapis.com/projects/FLEET_PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_NAME.global.FLEET_HOST_PROJECT_NUMBER.workload.id.goog/subject/ns/NAMESPACE_NAME/sa/SERVICEACCOUNT_NAME
    

    Haz los cambios siguientes:

    • FLEET_HOST_PROJECT_NUMBER: el número de proyecto de tu proyecto host de flota.
    • POOL_NAME: el nombre de tu grupo de identidades de carga de trabajo autogestionado.
    • NAMESPACE_NAME: el nombre del espacio de nombres de la flota en el que quieras ejecutar el pod.
    • SERVICEACCOUNT_NAME: nombre de la KubernetesServiceAccount que debe usar el pod.
  3. Guarda el siguiente archivo de manifiesto como pod-bucket-access.yaml:

    apiVersion: v1
    kind: Pod
    metadata:
      name: bucket-access-pod
      namespace:  NAMESPACE_NAME
    spec:
      serviceAccountName: SERVICEACCOUNT_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: POOL_NAME.global.FLEET_HOST_PROJECT_NUMBER.workload.id.goog
              expirationSeconds: 172800
          - configMap:
              name: my-cloudsdk-config
              optional: false
              items:
              - key: "config"
                path: "google-application-credentials.json"
    

    Haz los cambios siguientes:

    • NAMESPACE_NAME: el nombre del espacio de nombres de la flota en el que quieras ejecutar el pod.
    • SERVICEACCOUNT_NAME: nombre de la KubernetesServiceAccount que debe usar el pod.
    • POOL_NAME: el nombre de tu grupo de identidades de carga de trabajo autogestionado.
    • FLEET_HOST_PROJECT_NUMBER: el número de proyecto de tu proyecto host de flota.
  4. Despliega el pod en tu clúster:

    kubectl apply -f pod-bucket-access.yaml
    
  5. Abre una sesión de shell en el pod:

    kubectl exec -it bucket-access-pod -n NAMESPACE_NAME -- /bin/bash
    
  6. Intenta enumerar los objetos del segmento:

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

    El resultado es el siguiente:

    {
      "kind": "storage#objects"
    }
    

También puedes verificar que un espacio de nombres y una ServiceAccount similares en un clúster miembro de otra flota no podrán afirmar la misma identidad. En un clúster que use la federación de identidades de cargas de trabajo de la flota, pero no tenga un espacio de nombres de la flota o una configuración de grupo autogestionado, sigue estos pasos:

  1. Crea un espacio de nombres de Kubernetes con el mismo nombre que el espacio de nombres de la flota en el que has configurado el grupo de identidades de carga de trabajo autogestionado.
  2. Crea una cuenta de servicio de Kubernetes con el mismo nombre que la cuenta de servicio a la que has concedido un rol de gestión de identidades y accesos en secciones anteriores.
  3. Implementa un pod que use el mismo ServiceAccount y espacio de nombres, pero en el que el campo spec.volumes.projected.sources.serviceAccountToken especifique el grupo de cargas de trabajo gestionado por Google. Este grupo tiene la siguiente sintaxis:

    FLEET_HOST_PROJECT_ID.svc.id.goog
    
  4. Intenta acceder al segmento de Cloud Storage desde una sesión de shell en el pod.

La salida debe ser un error 401: Unauthorized, porque el identificador principal del pod que usa el grupo de identidades de carga de trabajo gestionado por Google es diferente del identificador principal del pod que usa el grupo autogestionado.

Siguientes pasos