En este documento, se explica cómo solucionar errores comunes relacionados con Autentica cargas de trabajo en otras cargas de trabajo a través de mTLS.
Para obtener más información, consulta Soluciona problemas de la federación de identidades para cargas de trabajo.
Antes de comenzar
-
Si aún no lo hiciste, configura la autenticación.
La autenticación verifica tu identidad para acceder a los servicios y las APIs de Google Cloud . Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:
-
Instala Google Cloud CLI. Después de la instalación, inicializa Google Cloud CLI con el siguiente comando:
gcloud initSi usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
- Configura una región y una zona predeterminadas.
-
No existe el directorio de credenciales generado
Si recibes un error que indica que el directorio /var/run/secrets/workload-spiffe-credentials no existe, haz lo siguiente:
Asegúrate de que tu instancia de procesamiento admita la autenticación de carga de trabajo a carga de trabajo con una de las siguientes interfaces para verificar que las identidades de cargas de trabajo administradas estén habilitadas:
Console
En la consola de Google Cloud , ve a la página Instancias de VM.
En la columna Nombre de la página Instancias de VM, haz clic en el nombre de la instancia para ver detalles adicionales sobre ella.
En la sección Seguridad y acceso de la página Detalles, verifica que "Certificados de identidad de carga de trabajo" tenga el valor "Habilitado".
gcloud
Para ver si la función de identidades para cargas de trabajo administradas está habilitada para una instancia de procesamiento, usa el comando
gcloud alpha compute instances describe.gcloud alpha compute instances describe INSTANCE_NAME \ --zone=ZONE \ --format="table(name,zone,identityCertificate)"Reemplaza lo siguiente:
INSTANCE_NAME: El nombre de la instancia.ZONE: Es la zona en la que se encuentra la instancia.
REST
Para ver los detalles de una instancia de procesamiento, realiza una solicitud
GETal métodoinstances.get. Si agregas un parámetro de consulta$fieldsa la solicitud, puedes restringir el resultado solo a los campos que te interesan.GET https://compute.googleapis.com/compute/alpha/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME$fields=name,identityCertificate,identity
Reemplaza lo siguiente:
PROJECT_ID: ID del proyecto en el que se encuentra la instanciaZONE: Es la zona en la que se encuentra la instancia.INSTANCE_NAME: Es el nombre de la instancia.
Revisa los valores de instancia para
identityCertificateyidentity.Si la propiedad
identityCertificateestá establecida enfalse, esta instancia de procesamiento no admite esta función.Para resolver este problema, crea una instancia nueva que admita la autenticación de carga de trabajo a carga de trabajo. Para obtener más información, consulta Habilita identidades de cargas de trabajo administradas en VMs existentes.
Asegúrate de que la VM ejecute un SO invitado con la versión 20231103.01 o posterior del agente invitado de Compute Engine. Usa la CLI de gcloud para fin de ver el resultado del puerto en serie para determinar la versión actual del agente invitado de Compute Engine:
gcloud compute instances get-serial-port-output INSTANCE_NAME | grep "GCE Agent Started"Reemplaza INSTANCE_NAME por el nombre de la instancia de procesamiento.
Para actualizar el agente invitado de Compute Engine, consulta Actualiza el entorno invitado.
Consulta los registros del servicio para verificar que el temporizador
gce-workload-cert-refresh.timerde systemd pudo recuperar correctamente las credenciales de la carga de trabajo y el paquete de confianza.# View timer logs to see when the gce-workload-cert-refresh.timer last ran journalctl -u gce-workload-cert-refresh.timer # View service logs from gce-workload-cert-refresh.service journalctl -u gce-workload-cert-refresh.service
El directorio de credenciales generado solo contiene el archivo config_status
El directorio de credenciales generado, /var/run/secrets/workload-spiffe-credentials, podría contener solo el archivo config_status por varios motivos. Sigue estos pasos para solucionar el problema.
Verifica el contenido del archivo
config_statuspara asegurarte de que la función de identidades de cargas de trabajo administradas esté habilitada. Si la función no se habilita con los valores adecuados, el archivo de registro contendrá el mensaje de errorworkload certificate feature not enabled.Para resolver este problema, crea una instancia de procesamiento nueva que admita la autenticación de carga de trabajo a carga de trabajo con uno de los siguientes métodos:
Verifica el contenido del archivo
config_statuspara asegurarte de que no haya errores debido a valores de atributos faltantes o a una configuración no válida para la emisión de certificados o la configuración de confianza. Si existen tales errores, sigue los pasos que se indican en Actualiza la emisión de certificados y la configuración de confianza para actualizar los valores de configuración.Asegúrate de que se hayan otorgado los permisos correctos a las identidades para cargas de trabajo administradas en el grupo de identidades para cargas de trabajo para acceder a los grupos de AC subordinados. Usa el siguiente comando:
gcloud privateca pools get-iam-policy SUBORDINATE_CA_POOL_ID \ --location=SUBORDINATE_CA_POOL_REGION
Reemplaza lo siguiente:
- SUBORDINATE_CA_POOL_ID: el ID del grupo de CA subordinado.
- SUBORDINATE_CA_POOL_REGION: la región del grupo de AC subordinado.
El resultado de este comando debería contener lo siguiente:
bindings: - members: - principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/POOL_ID/* - role: roles/privateca.poolReader - members: - principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/POOL_ID/* role: roles/privateca.workloadCertificateRequesterEn el ejemplo anterior, ocurre lo siguiente:
- PROJECT_NUMBER: el número de tu proyecto.
- POOL_ID es el ID del grupo de Workload Identity
Si no ves un resultado similar al del ejemplo anterior, otorga los permisos necesarios como se describe en Autoriza identidades para cargas de trabajo administradas para solicitar certificados del grupo de AC.
Si el archivo
config_statusno contiene mensajes de error, verifica el valor deiam.googleapis.com/workload-identitydentro del archivo. El valor debe coincidir con lo siguiente:spiffe://POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
En el ejemplo anterior, ocurre lo siguiente:
- PROJECT_NUMBER es el número del proyecto que contiene el grupo de identidades para cargas de trabajo administradas.
- POOL_ID es el ID del grupo de Workload Identity
- NAMESPACE_ID es el ID del espacio de nombres en el grupo de Workload Identity.
- MANAGED_IDENTITY_ID es el ID de la identidad para cargas de trabajo administrada.
Si el valor de
iam.googleapis.com/workload-identityes incorrecto, debes crear una instancia de procesamiento nueva con el valor correcto, ya que el valor de la identidad administrada solo se puede actualizar durante la creación de la instancia.Si el archivo
config_statusno contiene mensajes de error, asegúrate de que la configuración de confianza contenga una entrada válida para el dominio de confianza SPIFFEPOOL_ID.global.PROJECT_NUMBER.workload.id.goog, que corresponde al dominio de confianza SPIFFE en la identidad administrada asignada a la instancia de procesamiento. Para obtener más información, consulta Cómo definir la configuración de confianza.Si el archivo
config_statuscontiene mensajes de error con el código de errorINTERNAL_ERROR, comunícate con el servicio de Atención al cliente de Cloud o con tu contacto de Google Cloud y envíales el mensaje de error.