Risolvere i problemi relativi al server LDAP

Questo documento fornisce indicazioni per la risoluzione dei problemi del server LDAP in GKE Identity Service.

Problema di connettività

Quando configuri GKE Identity Service, potresti riscontrare problemi di connettività prilikom prilikom di provare a connetterti a un server LDAP. Il problema di connettività può verificarsi anche quando il certificato utilizzato per identificare il server LDAP non corrisponde al certificato indicato in ClientConfig.

Messaggio di errore

I messaggi che seguono sono applicabili agli errori che si verificano quando Esecuzione del 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

Soluzione

Puoi risolvere i problemi in uno dei seguenti modi:

  • Se GKE Identity Service non riesce a connettersi al server LDAP:
    • Per verificare se il traffico di rete è in grado di raggiungere il server LDAP (provider di identità) dal cluster, utilizza telnet, nc o un comando simile per connetterti al server LDAP. Per connetterti al server LDAP, devi eseguire il comando nel nodo o nel pod su cui è in esecuzione GKE Identity Service.
    • Se il comando ha esito positivo, il pod GKE Identity Service dovrebbe connettersi al server LDAP.
    • Se il comando non va a buon fine, significa che si è verificato un problema di connettività di rete. Devi controllare le impostazioni di rete o contattare l'amministratore di rete per risolvere il problema di connessione.
  • Verifica che il certificato pubblico nella configurazione sia formattato correttamente e corrisponda al tuo server LDAP per i seguenti casi:
    • Utilizzi LDAP con TLS.
    • Per eseguire l'autenticazione su LDAP devi utilizzare un account di servizio. Per identificare l'account di servizio con il server LDAP si utilizza un certificato.

Problema di autenticazione

Un problema di autenticazione si verifica in uno dei seguenti casi:

  • Le impostazioni del provider LDAP non sono configurate correttamente in ClientConfig per GKE Identity Service.
  • Le credenziali utente fornite non esistono sul server LDAP.
  • Il server LDAP non è attivo.
di Gemini Advanced.

Messaggio di errore

I seguenti messaggi sono applicabili agli errori che si verificano durante l'esecuzione del 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

Soluzione

In qualità di amministratore del cluster, esamina i log di GKE Identity Service e risolvi i problemi di autenticazione nei seguenti modi:

  • Can't contact LDAP server: per saperne di più su come risolvere questo problema, consulta i problemi di connettività.
  • Attempting to bind as the LDAP service account: il servizio di identità GKE sta tentando di connettersi al server LDAP utilizzando le credenziali dell'account di servizio fornite in ClientConfig. L'assenza di questo messaggio di log indica la presenza di un problema di connettività.
  • Successfully completed BIND as LDAP service account: GKE Identity Service è in grado di connettersi correttamente al server LDAP e di utilizzare il relativo account di servizio per l'autenticazione degli utenti. L'assenza di questo messaggio di log indica la presenza di un problema di configurazione.
  • Successfully found an entry for the user in the database: nel server LDAP è presente una voce utente. Ciò implica che i campi baseDN, filter e loginAttribute siano configurati correttamente per recuperare gli utenti. Questo messaggio viene visualizzato solo quando il livello di dettaglio del logging è superiore al livello predefinito. Per ulteriori informazioni sull'abilitazione dei log, consulta Attivare il log di debug.
  • Attempting to BIND as the user to verify their credentials: il servizio di identità GKE sta tentando di verificare le credenziali utente.
  • Successfully completed LDAP authentication: l'autenticazione utente è riuscita. L'assenza di questo messaggio di log indica credenziali non valide.

Il token di autenticazione è scaduto

Nonostante l'accesso riuscito, puoi riscontrare problemi quando il token di autenticazione è scaduto.

Messaggio di errore

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

Soluzione

Puoi risolvere il problema accedendo nuovamente al server.

Problema con l'associazione del ruolo RBAC all'utente o al gruppo

Questo problema si verifica quando l'autenticazione è andata a buon fine, ma l'autorizzazione non è andata a buon fine a causa dell'assenza di ruoli RBAC associati all'utente o al gruppo. Ad esempio, questo problema persiste quando provi a emettere il comando kubectl get pods.

Messaggio di errore

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

Soluzione

Per risolvere il problema:

  1. Accedi al server LDAP per visualizzare i gruppi dell'utente di destinazione.
  2. Verifica che le associazioni di ruolo e ruolo Kubernetes siano definite correttamente e corrispondano ai valori nella directory LDAP. Un amministratore può aiutarti a verificare le associazioni di ruoli tramite la rappresentazione degli utenti di Kubernetes.
  3. Aggiorna l'associazione dei ruoli in modo che il gruppo dell'utente di destinazione sia autorizzato a eseguire l'azione richiesta.
  4. Verifica che i valori di baseDN e, facoltativamente, di filter e identifierAttribute per i gruppi siano corretti. GKE Identity Service utilizza la configurazione dei gruppi di questi campi per eseguire query su tutti i gruppi a cui appartiene l'utente. Se il campo baseDN è vuoto, non vengono forniti gruppi al server API Kubernetes. Non ci sono messaggi registrati in una richiesta di questo tipo. Se il campo baseDN non è vuoto, il servizio di identità GKE esegue una query nel database per trovare i gruppi dell'utente.
    • Se la query ha esito positivo, i gruppi vengono forniti al server API Kubernetes.
    • Se la query non va a buon fine, i gruppi non vengono forniti al server dell'API Kubernetes. In questo caso, devi correggere i valori di configurazione baseDN e filter per i gruppi.

L'utente appartiene a più gruppi

Questo problema si verifica quando un utente appartiene a più gruppi.

Messaggio di errore

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

Soluzione

In qualità di amministratore del cluster, devi configurare il campo filter in ClientConfig per ridurre il numero di gruppi restituiti dalla query al server LDAP.

Problema di compatibilità delle versioni

Questo problema si verifica quando c'è una mancata corrispondenza di compatibilità delle versioni tra GKE Identity Service e la versione di Google Cloud CLI installata.

Messaggio di errore

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

Soluzione

Devi eseguire l'upgrade dell'utilità gcloud e di GKE Identity Service alla versione più recente disponibile.

Codice di stato non riuscita per l'autenticazione 401

Questo problema si verifica quando il server API Kubernetes non è in grado di autenticare e restituisce un codice di errore 401.

Messaggio di errore

  • 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

Soluzione

Puoi risolvere il problema in uno dei seguenti modi:

  • Verifica se il pod di GKE Identity Service è in stato running utilizzando il seguente comando:
    kubectl get pods -l k8s-app=ais -n anthos-identity-service --kubeconfig USER_CLUSTER_KUBECONFIG
  • Verifica la configurazione LDAP in ClientConfig utilizzando il seguente comando:
    kubectl get clientconfig -n kube-public -o jsonpath='{.items[].spec.authentication[].ldap}' --kubeconfig USER_CLUSTER_KUBECONFIG
  • Esamina i log per informazioni dettagliate sull'errore. Per ulteriori informazioni sul logging, consulta Utilizzo del logging e del monitoraggio per i componenti di sistema.