Solucionar problemas con el servidor LDAP

En este documento se ofrecen directrices para solucionar problemas del servidor LDAP en GKE Identity Service.

Problema de conectividad

Cuando configuras GKE Identity Service, pueden surgir problemas de conectividad al intentar conectarte a un servidor LDAP. El problema de conectividad también puede producirse cuando el certificado utilizado para identificar el servidor LDAP no coincide con el certificado mencionado en ClientConfig.

Mensaje de error

Los siguientes mensajes se aplican a los errores que se producen al ejecutar el comando 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

Solución

Puedes resolver los problemas de una de las siguientes formas:

  • Si el servicio de identidades de GKE no puede conectarse al servidor LDAP, haz lo siguiente:
    • Para verificar si el tráfico de red puede llegar al servidor LDAP (proveedor de identidades) desde el clúster, usa telnet, nc o un comando similar para conectarte al servidor LDAP. Para conectarte al servidor LDAP, debes ejecutar el comando en el nodo o pod en el que se esté ejecutando GKE Identity Service.
    • Si el comando se ejecuta correctamente, el pod de Identity Service para GKE debería conectarse al servidor LDAP.
    • Si el comando falla, significa que hay un problema con la conectividad de red. Debes comprobar la configuración de tu red o ponerte en contacto con el administrador de la red para solucionar el problema de conexión.
  • Verifica que el certificado público de la configuración tenga el formato correcto y coincida con tu servidor LDAP en los siguientes casos:
    • Utilizas LDAP con TLS.
    • Te autenticas en LDAP con una cuenta de servicio. Utiliza un certificado para identificar la cuenta de servicio con el servidor LDAP.

Problema de autenticación

Se produce un problema de autenticación en uno de los siguientes casos:

  • Los ajustes del proveedor de LDAP no están configurados correctamente en ClientConfig para el servicio de identidad de GKE.
  • Las credenciales de usuario que has proporcionado no existen en el servidor LDAP.
  • El servidor LDAP no está operativo.

Mensaje de error

Los siguientes mensajes se aplican a los errores que se producen al ejecutar el comando 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

Solución

Como administrador del clúster, revisa los registros de Identity Service de GKE y resuelve los problemas de autenticación de las siguientes formas:

  • Can't contact LDAP server: Para obtener más información sobre cómo solucionar este problema, consulta Problemas de conectividad.
  • Attempting to bind as the LDAP service account: El servicio de identidad de GKE está intentando conectarse al servidor LDAP mediante las credenciales de la cuenta de servicio proporcionadas en ClientConfig. Si no aparece este mensaje de registro, significa que hay un problema de conectividad.
  • Successfully completed BIND as LDAP service account: GKE Identity Service puede conectarse correctamente al servidor LDAP y usar su cuenta de servicio para la autenticación de usuarios. Si no aparece este mensaje de registro, significa que hay un problema de configuración.
  • Successfully found an entry for the user in the database: existe una entrada de usuario en el servidor LDAP. Esto implica que los campos baseDN, filter y loginAttribute están configurados correctamente para obtener usuarios. Este mensaje solo se muestra cuando la verbosidad de los registros supera el nivel predeterminado. Para obtener más información sobre cómo habilitar los registros, consulta Habilitar el registro de depuración.
  • Attempting to BIND as the user to verify their credentials: GKE Identity Service está intentando verificar las credenciales del usuario.
  • Successfully completed LDAP authentication: la autenticación del usuario se ha realizado correctamente. Si no aparece este mensaje de registro, significa que las credenciales no son válidas.

El token de autenticación ha caducado

Aunque el inicio de sesión se haya realizado correctamente, puede que tengas problemas porque el token de autenticación haya caducado.

Mensaje de error

ERROR: You must be logged in to the server (Unauthorized)

Solución

Para solucionar el problema, vuelva a iniciar sesión en el servidor.

Problema con la vinculación de roles de RBAC al usuario o al grupo

Este problema se produce cuando la autenticación se realiza correctamente, pero la autorización falla porque no hay roles de RBAC vinculados al usuario o al grupo. Por ejemplo, este problema persiste cuando intentas ejecutar el comando kubectl get pods.

Mensaje de error

Error from server (Forbidden): <SERVICE or PODS> is forbidden: <MORE DETAILS>

Solución

Para solucionar el problema, haz lo siguiente:

  1. Inicia sesión en tu servidor LDAP para ver los grupos del usuario de destino.
  2. Verifica si tu rol y tus vinculaciones de roles de Kubernetes están definidos correctamente y coinciden con los valores de tu directorio LDAP. Un administrador puede ayudar a verificar las vinculaciones de roles mediante la suplantación de identidad de usuario de Kubernetes.
  3. Actualiza la vinculación de roles para que el grupo del usuario de destino esté autorizado a realizar la acción necesaria.
  4. Comprueba que los valores de baseDN y, opcionalmente, filter y identifierAttribute de los grupos sean correctos. El servicio de identidad de GKE usa la configuración de grupo de estos campos para consultar todos los grupos a los que pertenece el usuario. Si baseDN está vacío, no se proporciona ningún grupo al servidor de la API de Kubernetes. En ese caso, no se registra ningún mensaje. Si baseDN no está vacío, GKE Identity Service consulta la base de datos para obtener los grupos del usuario.
    • Si la consulta se realiza correctamente, los grupos se proporcionan al servidor de la API de Kubernetes.
    • Si la consulta no se realiza correctamente, los grupos no se proporcionan al servidor de la API de Kubernetes. En este caso, debe corregir los valores de configuración de baseDN y filter de los grupos.

El usuario pertenece a varios grupos

Este problema se produce cuando un usuario pertenece a varios grupos.

Mensaje de error

could not obtain an STS token: STS token exceeds allowed size limit. Possibility of too many groups associated with the credentials provided.

Solución

Como administrador del clúster, debes configurar el campo filter en ClientConfig para reducir el número de grupos que devuelve la consulta al servidor LDAP.

Problema de compatibilidad de versiones

Este problema se produce cuando hay una incompatibilidad de versiones entre GKE Identity Service y la versión instalada de la CLI de Google Cloud.

Mensaje de error

  • 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.

Solución

Debes actualizar la utilidad gcloud y GKE Identity Service a la última versión disponible.

Código de estado 401 (error de autenticación)

Este problema se produce cuando el servidor de la API de Kubernetes no puede autenticar el servicio y devuelve el código de error 401.

Mensaje de error

  • 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

Solución

Puede solucionar este problema de una de las siguientes formas:

  • Comprueba si el pod de Identity Service para GKE está en el estado running con el siguiente comando:
    kubectl get pods -l k8s-app=ais -n anthos-identity-service --kubeconfig USER_CLUSTER_KUBECONFIG
  • Comprueba la configuración LDAP en ClientConfig con el siguiente comando:
    kubectl get clientconfig -n kube-public -o jsonpath='{.items[].spec.authentication[].ldap}' --kubeconfig USER_CLUSTER_KUBECONFIG
  • Consulta los registros para obtener información detallada sobre el error. Para obtener más información sobre el registro, consulta Usar el registro y la monitorización de componentes del sistema.