Soluciona problemas del servidor LDAP

En este documento, se proporciona orientación para solucionar problemas del servidor LDAP en GKE Identity Service.

Problema de conectividad

Cuando configuras GKE Identity Service, puedes tener problemas de conectividad mientras intentas conectarte a un servidor LDAP. El problema de conectividad también puede ocurrir cuando el certificado que se usó para identificar el servidor LDAP no coincide con el certificado mencionado en ClientConfig.

Mensaje de error

Los siguientes mensajes se aplican a errores que ocurren cuando se ejecuta 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 maneras:

  • Si GKE Identity Service no se puede conectar al servidor LDAP, haz lo siguiente:
    • Para verificar si algún tráfico de red puede llegar al servidor LDAP (proveedor de identidad) 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 ejecuta GKE Identity Service.
    • Si el comando se ejecuta de forma correcta, el Pod de GKE Identity Service debe conectarse al servidor LDAP.
    • Si el comando falla, indica que hay un problema con la conectividad de red. Debes verificar la configuración de red o comunicarte con el administrador de red para resolver el problema de conexión.
  • Verifica que el certificado público en la configuración tenga el formato correcto y coincida con tu servidor LDAP para los siguientes casos:
    • Usas LDAP con TLS.
    • Debes autenticarte en LDAP con una cuenta de servicio. Debes usar un certificado para identificar la cuenta de servicio con el servidor LDAP.

Problema de autenticación

Un problema de autenticación se produce en uno de los siguientes casos:

  • La configuración del proveedor de LDAP no está establecida correctamente en el ClientConfig para GKE Identity Service.
  • Las credenciales de usuario que proporcionaste no existen en el servidor LDAP.
  • El servidor LDAP está inactivo.

Mensaje de error

Los siguientes mensajes se aplican a errores que ocurren cuando se ejecuta 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 GKE Identity Service y resuelve los problemas de autenticación de las siguientes maneras:

  • Can't contact LDAP server: para obtener más información sobre cómo resolver este problema, consulta Problemas de conectividad.
  • Attempting to bind as the LDAP service account: GKE Identity Service intenta conectarse al servidor de LDAP a través de las credenciales de la cuenta de servicio proporcionadas en el ClientConfig. La ausencia de este mensaje de registro indica 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. La ausencia de este mensaje de registro indica 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 recuperar usuarios. Este mensaje solo se muestra cuando la verbosidad del registro está por encima del nivel predeterminado. Para obtener más información sobre cómo habilitar los registros, consulta Habilita el registro de depuración.
  • Attempting to BIND as the user to verify their credentials: GKE Identity Service intenta verificar las credenciales del usuario.
  • Successfully completed LDAP authentication: la autenticación de usuario se realizó correctamente. La ausencia de este mensaje de registro indica que las credenciales no son válidas.

El token de autenticación venció

A pesar de acceder correctamente, puedes experimentar problemas por los que el token de autenticación haya vencido.

Mensaje de error

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

Solución

Para resolver el problema, vuelve a acceder al servidor.

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

Este problema se produce cuando la autenticación se realiza de forma correcta, pero la autorización falla debido a la ausencia de vinculaciones de roles de RBAC al usuario o 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 resolver el problema, haz lo siguiente:

  1. Accede a tu servidor LDAP para ver los grupos del usuario objetivo.
  2. Verifica si el rol de Kubernetes y las vinculaciones de roles están definidos correctamente y si coinciden con los valores de tu directorio LDAP. Un administrador puede ayudar a verificar las vinculaciones de roles a través de la identidad temporal de usuarios de Kubernetes.
  3. Actualiza la vinculación de roles de modo que el grupo del usuario objetivo esté autorizado para realizar la acción requerida.
  4. Verifica que los valores de baseDN y, de forma opcional, filter y identifierAttribute de los grupos sean correctos. GKE Identity Service 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 proporcionan grupos al servidor de la API de Kubernetes. No hay mensajes registrados en ese caso. Si baseDN no está vacío, GKE Identity Service consulta la base de datos para los grupos del usuario.
    • Si la consulta se realiza de forma correcta, 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, debes corregir los valores de configuración baseDN y filter para 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 el ClientConfig para reducir la cantidad de grupos que muestra la consulta al servidor LDAP.

Problema de compatibilidad de versiones

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

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 de gcloud y GKE Identity Service a la versión más reciente disponible.

Código de estado con errores de autenticación 401

Este problema se produce cuando el servidor de la API de Kubernetes no puede autenticar el servicio y muestra un 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

Puedes resolver este problema de una de las siguientes maneras:

  • Verifica si el Pod de GKE Identity Service está en el estado running a través del siguiente comando:
    kubectl get pods -l k8s-app=ais -n anthos-identity-service --kubeconfig USER_CLUSTER_KUBECONFIG
    
  • Verifica la configuración de LDAP en el ClientConfig a través del siguiente comando:
    kubectl get clientconfig -n kube-public -o jsonpath='{.items[].spec.authentication[].ldap}' --kubeconfig USER_CLUSTER_KUBECONFIG
    
  • Revisa los registros para obtener información detallada sobre el error. Si deseas obtener más información sobre el registro, consulta Usa el registro y la supervisión para los componentes del sistema.