Résoudre les problèmes d'authentification des identités de charge de travail gérées pour GKE

Ce document décrit les solutions aux erreurs courantes liées aux identités de charge de travail gérées.

Si le pod de charge de travail Google Kubernetes Engine (GKE) n'a pas pu être déployé avec les certificats montés, utilisez la commande suivante pour vérifier l'état du pod :

kubectl describe pod POD_NAME -n POD_NAMESPACE

Le résultat de la commande inclut les événements de pod générés par le kubelet et gke-spiffe-controller. Consultez ces événements pour obtenir des messages d'erreur spécifiques, qui peuvent inclure l'un des éléments suivants :

PermissionDenied erreurs

Cette section décrit les erreurs qui renvoient un code d'erreur RPC PermissionDenied.

PRIVATE_CA_AUTHORIZATION_FAILURE

Cette erreur ressemble à ceci :

Permission denied while issuing the certificate: failed to issue the certificate from the GKE Auth: rpc error: code = PermissionDenied desc = Permission 'privateca.caPools.get' denied on resource 'privateca.googleapis.com/projects/CA_POOL_PROJECT_NUMBER/locations/REGION/caPools/CA_POOL_ID' (or it may not exist). Ensure that the CaPool exists and you have authorized the Managed Workload Identity to request certificates from the CaPool.

Cette erreur s'est produite, car le rôle CA Service Workload Certificate Requester (roles/privateca.workloadCertificateRequester) est manquant dans le pool d'identités de charge de travail sur le pool d'autorités de certification subordonné ou parce que le pool d'autorités de certification n'existe pas.

Pour résoudre cette erreur, attribuez le rôle au pool :

gcloud privateca pools add-iam-policy-binding SUBORDINATE_CA_POOL_ID \
   --project=CA_POOL_PROJECT_ID \
   --location=REGION \
   --role=roles/privateca.workloadCertificateRequester \
   --member="principal://iam.googleapis.com/projects/WIP_PROJECT_NUMBER/name/locations/global/workloadIdentityPools/TRUST_DOMAIN_NAME"

Remplacez les éléments suivants :

  • SUBORDINATE_CA_POOL_ID : ID du pool d'autorités de certification subordonnée
  • CA_POOL_PROJECT_ID : ID du projet du pool d'autorités de certification
  • REGION : région de l'autorité de certification subordonnée
  • WIP_PROJECT_NUMBER : numéro du projet de pool d'identités de charge de travail
  • TRUST_DOMAIN_NAME : nom du domaine approuvé. En fonction du type de pool, formatez le nom comme suit :
    • Pool géré par Google : PROJECT_ID.svc.id.goog
    • Pool autogéré : POOL_NAME.global.POOL_HOST_PROJECT_NUMBER.workload.id.goog

WORKLOAD_IDENTITY_NOT_FOUND, WORKLOAD_POOL_NOT_FOUND ou WORKLOAD_NAMESPACE_NOT_FOUND

Cette erreur ressemble à ceci :

failed to issue the certificate from the GKE Auth: rpc error: code = PermissionDenied desc = Permission denied on resource 'projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_NAME/... (or it may not exist).

Cette erreur correspond à WORKLOAD_IDENTITY_NOT_FOUND, WORKLOAD_POOL_NOT_FOUND ou WORKLOAD_NAMESPACE_NOT_FOUND. Elle se produit lorsque le pool d'identités de charge de travail, l'espace de noms du pool d'identités de charge de travail ou la ressource d'identité gérée n'existent pas, ou lorsqu'ils sont désactivés ou supprimés. Notez que cette erreur renvoie PermissionDenied au lieu de NotFound pour éviter de révéler l'inexistence de la ressource.

Pour résoudre cette erreur, vérifiez l'existence et l'état de votre pool d'identités de charge de travail et de ses sous-ressources dans IAM. Assurez-vous qu'ils sont correctement configurés et qu'ils ne sont pas désactivés ni supprimés.

FailedPrecondition erreurs

Cette section décrit les erreurs qui renvoient un code d'erreur RPC FailedPrecondition, qui indique généralement une configuration manquante ou incorrecte.

WORKLOAD_IDENTITY_INVALID_CONFIGURATION

La description du pod peut inclure l'un des messages suivants :

failed to issue the certificate from the GKE Auth: rpc error: code = FailedPrecondition desc = There are no CaPools configured for certificate issuance. Ensure you have added certificate issuance configuration to the workload identity pool 'projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/WI_POOL_NAME', which contains at least one CaPool.

ou

failed to issue the certificate from the GKE Auth: rpc error: code = FailedPrecondition desc = Missing Certificate issuance configuration in the Trust Domain. Ensure you have added certificate issuance configuration to the workload identity pool 'projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/WI_POOL_NAME' which contains at least one CaPool.

Cette erreur (WORKLOAD_IDENTITY_INVALID_CONFIGURATION) s'est produite, car le pool d'identités de charge de travail n'a pas été configuré avec une configuration d'émission de certificats (CIC), ou parce que la CIC configurée ne contient pas au moins un pool d'autorités de certification.

Pour résoudre cette erreur, créez une CIC contenant au moins un pool d'autorités de certification et utilisez-la pour mettre à jour le pool d'identités de charge de travail.

CERTIFICATE_AUTHORITY_NOT_FOUND

Cette erreur ressemble à ceci :

failed to issue the certificate from the GKE Auth: rpc error: code = FailedPrecondition desc = Failed to request certificates from the CaPool... There are no enabled CAs in the CaPool. Ensure that there is at least one enabled Certificate Authority to issue a certificate.

Cette erreur (CERTIFICATE_AUTHORITY_NOT_FOUND) indique qu'aucune autorité de certification n'a été trouvée pour l'émission de certificats dans le pool d'AC configuré par le client.

Pour résoudre cette erreur, vérifiez qu'une autorité de certification existe dans le pool d'autorités de certification configuré et qu'elle est activée pour l'émission de certificats.

CA_POOL_REGION_MISMATCH

Cette erreur ressemble à ceci :

failed to issue the certificate from the GKE Auth: rpc error: code = FailedPrecondition desc = Unable to find a CaPool in the workload's region. Ensure you have setup a subordinate CaPool in 'WORKLOAD_REGION' and added it to the certificate issuance configuration of the Workload Identity Pool...

Cette erreur (CA_POOL_REGION_MISMATCH) indique qu'aucun pool d'autorité de certification n'a été configuré pour la région spécifique de la charge de travail.

Pour résoudre cette erreur, configurez un pool d'autorité de certification supplémentaire pour la région de la charge de travail dans le pool d'identités de charge de travail, ou déployez la charge de travail dans une région qui dispose déjà d'un pool d'autorité de certification configuré.

ResourceExhausted erreurs

Cette section décrit les erreurs qui renvoient un code d'erreur RPC ResourceExhausted.

PRIVATE_CA_QUOTA_EXCEEDED

Cette erreur ressemble à ceci :

failed to issue the certificate from the GKE Auth: rpc error: code = ResourceExhausted desc = Quota exceeded for quota metric 'QUOTA_METRIC' and limit 'QUOTA_LIMIT' of service 'privateca.googleapis.com' for consumer 'project_number:PROJECT_NUMBER'.

Cette erreur (PRIVATE_CA_QUOTA_EXCEEDED) se produit lorsque vous configurez votre pool d'identité de charge de travail pour utiliser une autorité de certification personnalisée et qu'une tentative d'émission de certificat a dépassé un quota ou une limite établis liés à CA Service. Cette erreur ne se produit pas si vous utilisez l'autorité de certification par défaut gérée par Google.

  • QUOTA_METRIC et QUOTA_LIMIT : métrique et limite de quota spécifiques qui ont été dépassées. Par exemple, privateca.googleapis.com/enterprise_certificate_issuance et CertsPerEnterpriseCaPerMinute.

Pour résoudre cette erreur, consultez vos quotas et limites CA Service dans la console Google Cloud et demandez une augmentation de quota si nécessaire.

InvalidArgument erreurs

Cette section décrit les erreurs qui renvoient un code d'erreur RPC InvalidArgument.

PRIVATE_CA_KEY_ALGORITHM_MISMATCH

Cette erreur ressemble à ceci :

failed to issue the certificate from the GKE Auth: rpc error: code = InvalidArgument desc = Public key algorithm is not permitted by the CaPool's issuance policy. Ensure that the requested keyAlgorithm 'KEY_ALGO_IN_CSR' is permitted by the CAs in the CaPool 'privateca.googleapis.com/projects/PROJECT_NAME/locations/WORKLOAD_REGION/caPools/CA_POOL_NAME'.

Cette erreur (PRIVATE_CA_KEY_ALGORITHM_MISMATCH) indique que l'algorithme de clé spécifié dans la demande de certificat est incompatible avec les restrictions du pool d'autorités de certification configuré. Cela ne se produit que lorsque vous configurez un algorithme de clé personnalisé dans la configuration d'émission de certificats (CIC) et que vous mettez à jour le pool d'identités de charge de travail.

Pour résoudre cette erreur, vérifiez que l'algorithme configuré dans le CIC du pool d'identités de charge de travail est compatible avec les algorithmes acceptés par la règle d'émission du pool d'AC.

Unknown erreurs

Cette section décrit les erreurs qui renvoient un code d'erreur RPC Unknown.

UNKNOWN_PRIVATE_CA_CLIENT_ERROR

Cette erreur ressemble à ceci :

failed to issue the certificate from the GKE Auth: rpc error: code = Unknown desc = Failed to get certificates using the CaPool... PRIVATE_CA_ERROR_MESSAGE

Cette erreur (UNKNOWN_PRIVATE_CA_CLIENT_ERROR) indique qu'une erreur client inconnue, telle qu'un argument non valide fourni à l'API, s'est produite lors de l'appel du service CA.

Pour résoudre cette erreur, examinez le message d'erreur spécifique renvoyé par l'API CA Service afin d'identifier l'argument non valide ou le problème de configuration côté client, puis corrigez-le.

Latence de propagation du groupe de confiance

Lorsque vous mettez à jour ou faites pivoter une CA autogérée, une latence de propagation d'environ cinq minutes est nécessaire avant que les modifications ne prennent effet sur les "clusters GKE". En effet, le gke-spiffe-controller vérifie l'appartenance et récupère les groupes de confiance toutes les cinq minutes.

Cette latence ne se produit pas si vous utilisez l'autorité de certification gérée par Google.

Si vous mettez à jour une CA autogérée, patientez au moins cinq minutes pour que les modifications soient prises en compte.