Résoudre les problèmes liés au serveur LDAP
Ce document fournit des conseils de dépannage pour les problèmes de serveur LDAP dans GKE Identity Service.
Problème de connectivité
Lorsque vous configurez GKE Identity Service, vous pouvez rencontrer des problèmes de connectivité lorsque vous essayez de vous connecter à un serveur LDAP. Le problème de connectivité peut également se produire lorsque le certificat utilisé pour identifier le serveur LDAP ne correspond pas au certificat mentionné dans l'objet ClientConfig.
Message d'erreur
Les messages suivants s'appliquent aux erreurs qui se produisent lors de l'exécution de la commande gcloud anthos auth login
.
ERROR: LDAP login failed: could not obtain an STS token: Post "https://127.0.0.1:15001/sts/v1beta/token": failed to obtain an endpoint for deployment anthos-identity-service/ais: Unauthorized
ERROR: Configuring Anthos authentication failed
Solution
Vous pouvez résoudre les problèmes de l'une des manières suivantes :
- Si GKE Identity Service ne parvient pas à se connecter au serveur LDAP, procédez comme suit :
- Pour vérifier si le trafic réseau peut atteindre le serveur LDAP (fournisseur d'identité) à partir du cluster, utilisez
telnet
,nc
ou une commande similaire pour vous connecter au serveur LDAP. Pour vous connecter au serveur LDAP, vous devez exécuter la commande dans le nœud ou le pod sur lequel s'exécute GKE Identity Service. - Si la commande réussit, le pod GKE Identity Service doit se connecter au serveur LDAP.
- Si la commande échoue, cela signifie qu'il y a un problème de connectivité réseau. Vous devez vérifier vos paramètres réseau ou contacter votre administrateur réseau pour résoudre le problème de connexion.
- Pour vérifier si le trafic réseau peut atteindre le serveur LDAP (fournisseur d'identité) à partir du cluster, utilisez
- Vérifiez que le certificat public de la configuration est au format correct et qu'il correspond à votre serveur LDAP dans les cas suivants :
- Vous utilisez LDAP avec TLS.
- Vous vous authentifiez auprès de LDAP avec un compte de service. Vous utilisez un certificat pour identifier le compte de service auprès du serveur LDAP.
Problème d'authentification
Un problème d'authentification se produit dans l'un des cas suivants :
- Les paramètres du fournisseur LDAP ne sont pas configurés correctement dans l'objet ClientConfig pour GKE Identity Service.
- Les identifiants utilisateur fournis n'existent pas sur le serveur LDAP.
- Le serveur LDAP est inactif.
Message d'erreur
Les messages suivants s'appliquent aux erreurs qui se produisent lors de l'exécution de la commande gcloud anthos auth login
.
ERROR: LDAP login failed: could not obtain an STS token: Post "https://127.0.0.1:15001/sts/v1beta/token": failed to obtain an endpoint for deployment anthos-identity-service/ais: Unauthorized
ERROR: Configuring Anthos authentication failed
Solution
En tant qu'administrateur de cluster, consultez les journaux de GKE Identity Service et résolvez les problèmes d'authentification en utilisant les techniques suivantes :
Can't contact LDAP server
: pour plus d'informations sur la résolution de ce problème, consultez la section Problèmes de connectivité.Attempting to bind as the LDAP service account
: GKE Identity Service tente de se connecter au serveur LDAP à l'aide des identifiants de compte de service fournis dans l'objet ClientConfig. L'absence de ce message de journal indique un problème de connectivité.Successfully completed BIND as LDAP service account
: GKE Identity Service peut se connecter au serveur LDAP et utiliser son compte de service pour l'authentification des utilisateurs. L'absence de ce message de journal indique un problème de configuration.Successfully found an entry for the user in the database
: une entrée utilisateur existe sur le serveur LDAP. Cela implique que les champsbaseDN
,filter
etloginAttribute
sont correctement configurés pour récupérer les utilisateurs. Ce message ne s'affiche que lorsque la verbosité de la journalisation est supérieure au niveau par défaut. Pour en savoir plus sur l'activation des journaux, consultez la section Activer le journal de débogage.Attempting to BIND as the user to verify their credentials
: GKE Identity Service tente de vérifier les identifiants utilisateur.Successfully completed LDAP authentication
: l'authentification de l'utilisateur a réussi. L'absence de ce message de journal indique des identifiants non valides.
Le jeton d'authentification est arrivé à expiration
Une fois la connexion établie, il se peut que le jeton d'authentification ait expiré.
Message d'erreur
ERROR: You must be logged in to the server (Unauthorized)
Solution
Vous pouvez résoudre le problème en vous reconnectant au serveur.
Problème lié à la liaison de rôle RBAC à l'utilisateur ou au groupe
Ce problème se produit lorsque l'authentification réussit, mais que l'autorisation échoue en raison de l'absence de liaison de rôles RBAC à l'utilisateur ou au groupe. Par exemple, ce problème persiste lorsque vous essayez d'exécuter la commande kubectl get pods
.
Message d'erreur
Error from server (Forbidden): <SERVICE or PODS> is forbidden: <MORE DETAILS>
Solution
Pour résoudre le problème, procédez comme suit :
- Connectez-vous à votre serveur LDAP pour afficher les groupes de l'utilisateur cible.
- Vérifiez que votre rôle Kubernetes et vos liaisons de rôles sont correctement définis et qu'ils correspondent aux valeurs dans votre annuaire LDAP. Un administrateur peut aider à vérifier les liaisons de rôles via l'emprunt d'identité d'utilisateur Kubernetes.
- Mettez à jour la liaison de rôle de sorte que le groupe de l'utilisateur cible soit autorisé à effectuer l'action requise.
- Vérifiez que les valeurs de
baseDN
et, éventuellement, defilter
etidentifierAttribute
pour les groupes sont correctes. GKE Identity Service utilise la configuration de groupe de ces champs pour interroger tous les groupes auxquels l'utilisateur appartient. SibaseDN
est vide, aucun groupe n'est fourni au serveur d'API Kubernetes. Aucun message de ce type n'est enregistré. SibaseDN
n'est pas vide, GKE Identity Service interroge la base de données pour obtenir les groupes de l'utilisateur.- Si la requête aboutit, les groupes sont fournis au serveur d'API Kubernetes.
- Si la requête échoue, les groupes ne sont pas fournis au serveur d'API Kubernetes. Dans ce cas, vous devez corriger les valeurs de configuration
baseDN
etfilter
pour les groupes.
L'utilisateur appartient à plusieurs groupes
Ce problème se produit lorsqu'un utilisateur appartient à plusieurs groupes.
Message d'erreur
could not obtain an STS token: STS token exceeds allowed size limit. Possibility of too many groups associated with the credentials provided.
Solution
En tant qu'administrateur de cluster, vous devez configurer le champ filter
dans ClientConfig de manière à réduire le nombre de groupes renvoyés par la requête au serveur LDAP.
Problème de compatibilité des versions
Ce problème se produit en cas de non-concordance de compatibilité des versions entre GKE Identity Service et la version installée de Google Cloud CLI.
Message d'erreur
unable to parse STS Token Response
could not obtain an STS token: JSON parse error: The request was malformed.
could not obtain an STS token: Grant type must confirm that the request is intended for a token exchange.
could not obtain an STS token: Requested token type must correspond to an access token.
could not obtain an STS token: Subject token type must be a valid token type supported for token exchange.
Solution
Vous devez mettre à niveau l'utilitaire gcloud et GKE Identity Service vers la dernière version disponible.
Code d'état d'échec d'authentification 401
Ce problème se produit lorsque le serveur d'API Kubernetes ne parvient pas à authentifier le service et renvoie un code d'erreur 401.
Message d'erreur
ERROR: LDAP login failed: STSToken() failed: could not obtain an STS token: Post "https://127.0.0.1:15001/sts/v1beta/token": DialContext() failed: podEndpoint() failed to obtain an endpoint for deployment anthos-identity-service/ais: Unauthorized
ERROR: Configuring Anthos authentication failed
Solution
Vous pouvez résoudre ce problème de l'une des manières suivantes :
- Vérifiez que le pod GKE Identity Service est à l'état
running
à l'aide de la commande suivante :kubectl get pods -l k8s-app=ais -n anthos-identity-service --kubeconfig USER_CLUSTER_KUBECONFIG
- Vérifiez la configuration LDAP dans ClientConfig à l'aide de la commande suivante :
kubectl get clientconfig -n kube-public -o jsonpath='{.items[].spec.authentication[].ldap}' --kubeconfig USER_CLUSTER_KUBECONFIG
- Consultez les journaux pour obtenir des informations détaillées sur l'erreur. Pour plus d'informations sur la journalisation, consultez la section Utiliser la journalisation et la surveillance pour les composants système.