En este documento se explica cómo solucionar errores habituales relacionados con la autenticación de cargas de trabajo en otras cargas de trabajo mediante mTLS.
Antes de empezar
-
Si aún no lo has hecho, configura la autenticación.
La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos 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 la CLI de Google Cloud ejecutando el siguiente comando:
gcloud init
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
- Set a default region and zone.
-
No existe el directorio de credenciales generado
Si aparece un error que indica que el directorio /var/run/secrets/workload-spiffe-credentials
no existe, haz lo siguiente:
Comprueba que tu VM admita la autenticación de carga de trabajo a carga de trabajo ejecutando el siguiente comando desde la VM.
curl "http://metadata.google.internal/computeMetadata/v1/instance/gce-workload-certificates/config-status" -H "Metadata-Flavor: Google"
Si la respuesta es un código de error
HTTP 404
con el siguiente mensaje de error, significa que esta VM no admite esta función.The requested URL /computeMetadata/v1/instance/gce-workload-certificates/config-status was not found on this server. That's all we know.
Para solucionar este problema, cree una VM que admita la autenticación de carga de trabajo a carga de trabajo mediante uno de los siguientes métodos:
Si la respuesta es un código de error
HTTP 404
con el mensaje de errorworkload certificate feature not enabled
, significa que la VM admite identidades de carga de trabajo gestionadas, pero la función no está habilitada. Para habilitar la función en la VM, consulta Habilitar identidades de carga de trabajo gestionadas en VMs que ya tienes.
Asegúrate de que la VM ejecute un SO invitado con la versión 20231103.01 o una posterior del agente invitado de Compute Engine. Usa la CLI de gcloud para ver la salida del puerto serie y determinar la versión actual del agente invitado de Compute Engine:
gcloud compute instances get-serial-port-output VM_NAME | grep "GCE Agent Started"
Sustituye VM_NAME por el nombre de la VM.
Para actualizar el agente invitado de Compute Engine, consulta Actualizar el entorno invitado.
Consulta los registros de servicio para verificar que
gce-workload-cert-refresh.timer
haya podido obtener correctamente las credenciales de 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
, puede contener solo el archivo config_status
por varios motivos. Sigue estos pasos para solucionar el problema.
Comprueba el contenido del archivo
config_status
para asegurarte de que la función de identidades de carga de trabajo gestionadas esté habilitada. Si la función no se habilita mediante los metadatos de VM adecuados, el archivo de registro contiene el mensaje de errorworkload certificate feature not enabled
.Para resolver este problema, crea una VM que admita la autenticación de carga de trabajo a carga de trabajo mediante uno de los siguientes métodos:
Compruebe el contenido del archivo
config_status
para asegurarse de que no haya errores debido a que faltan valores de atributos o a que la configuración no sea válida para la emisión de certificados o la configuración de confianza. Si se producen errores de este tipo, actualiza los valores de configuración siguiendo los pasos que se indican en Actualizar la configuración de emisión y confianza de certificados.Asegúrate de que se hayan concedido los permisos correctos a las identidades de carga de trabajo gestionadas del grupo de identidades de carga de trabajo para acceder a los grupos de CAs subordinadas. Usa el siguiente comando:
gcloud privateca pools get-iam-policy SUBORDINATE_CA_POOL_ID \ --location=SUBORDINATE_CA_POOL_REGION
Haz los cambios siguientes:
- SUBORDINATE_CA_POOL_ID: ID del grupo de CAs subordinadas.
- SUBORDINATE_CA_POOL_REGION: la región del grupo de AC subordinado.
La salida de este comando debe contener lo siguiente:
bindings: - members: - principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/* - role: roles/privateca.poolReader - members: - principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/* role: roles/privateca.workloadCertificateRequester
En el ejemplo anterior:
- PROJECT_NUMBER es el número de proyecto.
- POOL_ID es el ID del grupo de identidades de carga de trabajo.
Si no ves un resultado similar al del ejemplo anterior, concede los permisos necesarios tal como se describe en Autorizar identidades de carga de trabajo gestionadas para solicitar certificados del grupo de ACs.
Si el archivo
config_status
no contiene ningún mensaje de error, compruebe el valor deiam.googleapis.com/workload-identity
en el 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:
- PROJECT_NUMBER es el número del proyecto que contiene el grupo de identidades de carga de trabajo gestionado.
- POOL_ID es el ID del grupo de identidades de carga de trabajo.
- NAMESPACE_ID es el ID del espacio de nombres del grupo de identidades de carga de trabajo.
- MANAGED_IDENTITY_ID es el ID de la identidad de la carga de trabajo gestionada.
Si el valor de
iam.googleapis.com/workload-identity
es incorrecto, debe crear una nueva VM con el valor correcto, ya que el valor de la identidad gestionada solo se puede actualizar durante la creación de la VM.Si el archivo
config_status
no contiene ningún mensaje de error, asegúrese de que la configuración de confianza contenga una entrada válida para el dominio de confianza de SPIFFEPOOL_ID.global.PROJECT_NUMBER.workload.id.goog
, que se corresponde con el dominio de confianza de SPIFFE de la identidad gestionada asignada a la VM. Para obtener más información, consulta Definir la configuración de confianza.Si el archivo
config_status
contiene algún mensaje de error con el código de errorINTERNAL_ERROR
, ponte en contacto con el equipo de Asistencia de Google Cloud o con tu Google Cloud contacto e indica el mensaje de error.
Al consultar los endpoints del servidor de metadatos, se devuelve un error 404
Si recibes una respuesta 404
al consultar el endpoint workload-identities
o trust-anchors
, asegúrate de que la VM admita las identidades de carga de trabajo gestionadas ejecutando el siguiente comando desde la VM:
curl "http://metadata.google.internal/computeMetadata/v1/instance/gce-workload-certificates/config-status" -H "Metadata-Flavor: Google"
Si la respuesta es un código de error HTTP
404
con el siguiente mensaje de error:The requested URL /computeMetadata/v1/instance/gce-workload-certificates/config-status was not found on this server. That's all we know.
La VM no admite identidades de carga de trabajo gestionadas. Para solucionar el problema, haz una de las siguientes acciones:
Si la respuesta es un código de error HTTP
404
con el mensaje de errorworkload certificate feature not enabled
, significa que esta VM admite identidades de carga de trabajo gestionadas, pero la función no está habilitada. Crea una VM con la función habilitada o crea una plantilla de instancia y un grupo de instancias gestionado.Asegúrate de que se han concedido los permisos correctos al grupo de identidades de carga de trabajo para acceder a los grupos de CAs subordinadas ejecutando el siguiente comando:
gcloud privateca pools get-iam-policy SUBORDINATE_CA_POOL_ID \ --location=SUBORDINATE_CA_POOL_REGION
Haz los cambios siguientes:
- SUBORDINATE_CA_POOL_ID: ID del grupo de ACs subordinadas.
- SUBORDINATE_CA_POOL_REGION: la región del grupo de AC subordinado.
El resultado de este comando debe contener lo siguiente, donde PROJECT_NUMBER es el número de proyecto de su proyecto y POOL_ID es el ID del grupo de identidades de carga de trabajo.
bindings: - members: - principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/* - role: roles/privateca.poolReader - members: - principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/* - role: roles/privateca.workloadCertificateRequester
Si el resultado no contiene estos valores, concede los permisos correctos, tal como se describe en Autorizar identidades de carga de trabajo gestionadas para solicitar certificados del grupo de ACs.
Asegúrate de que el valor de
iam.googleapis.com/workload-identity
sea correcto y coincida con lo siguiente:spiffe://POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
Si el valor no coincide, debe crear una VM, ya que el valor de la identidad gestionada no se puede actualizar después de crear la VM.
Asegúrate de que la configuración de confianza contenga una entrada válida para el dominio de confianza de SPIFFE
POOL_ID.global.PROJECT_NUMBER.workload.id.goog
, que corresponda al dominio de confianza de SPIFFE de la identidad gestionada asignada a la VM.