Questo documento aiuta a risolvere i problemi di autenticazione in Google Distributed Cloud. Vengono fornite informazioni e indicazioni generali sulla risoluzione dei problemi, nonché informazioni specifiche per OpenID Connect (OIDC) e Lightweight Directory Access Protocol (LDAP).
L'autenticazione OIDC e LDAP utilizza GKE Identity Service. Prima di poter utilizzare GKE Identity Service con Google Distributed Cloud, devi configurare o provider di identità. Se non hai configurato un provider di identità per GKE Identity Service, segui le istruzioni per uno dei seguenti provider più comuni:
Esamina il Guida alla risoluzione dei problemi relativi al provider di identità del servizio di identità GKE per informazioni su come abilitare e rivedere i log delle identità e testare la connettività.
Se hai bisogno di ulteriore assistenza, contatta Assistenza clienti Google Cloud.
Risoluzione dei problemi generali
I seguenti suggerimenti per la risoluzione dei problemi possono essere utili per problemi generali di autenticazione e autorizzazione con Google Distributed Cloud. Se questi problemi non si applicano o se hai problemi con OIDC o LDAP, vai alla sezione sulla risoluzione dei problemi di GKE Identity Service.
Mantieni aggiornato gcloud anthos auth
Per evitare molti problemi comuni, verifica che i componenti
L'installazione di gcloud anthos auth
è aggiornata.
Esistono due elementi che devono essere verificati. Il comando gcloud anthos auth
ha una logica nel componente principale di Google Cloud CLI e un componente anthos-auth
impacchettato separatamente.
Per aggiornare Google Cloud CLI:
gcloud components update
Per aggiornare il componente
anthos-auth
:gcloud components install anthos-auth
Configurazione del provider non valida
Se la configurazione del provider di identità non è valida, verrà visualizzato un errore schermata dal tuo provider di identità dopo aver fatto clic su ACCEDI. Segui le istruzioni specifiche del provider per configurare correttamente il provider o il tuo cluster.
Configurazione non valida
Se la console Google Cloud non riesce a leggere la configurazione OIDC dal tuo cluster, il pulsante ACCEDI è disattivato. Per la risoluzione dei problemi relativi alla configurazione OIDC del cluster, consulta la sezione Risoluzione dei problemi relativi a OIDC di questo documento.
Autorizzazioni non valide
Se completi il flusso di autenticazione, ma ancora non vedi i dettagli di cluster, assicurati di aver concesso all'account le autorizzazioni RBAC corrette utilizzato con OIDC. Potrebbe essere un account diverso da quello che usi per accedere alla console Google Cloud.
Token di aggiornamento mancante
Il seguente problema si verifica quando il server di autorizzazione richiede il consenso. ma il parametro di autenticazione richiesto non è stato fornito.
Error: missing 'RefreshToken' field in 'OAuth2Token' in credentials struct
Per risolvere il problema, nella risorsa ClientConfig
aggiungi prompt=consent
al campo authentication.oidc.extraParams
. Quindi, rigenera il client.
di autenticazione.
Token di aggiornamento scaduto
Il seguente problema si verifica quando il token di aggiornamento nel file kubeconfig è scaduto:
Unable to connect to the server: Get {DISCOVERY_ENDPOINT}: x509:
certificate signed by unknown authority
Per risolvere il problema, esegui di nuovo il comando gcloud anthos auth login
.
L'accesso gcloud anthos auth non va a buon fine e: proxyconnect tcp
Questo problema si verifica quando si verifica un errore nelle configurazioni delle variabili di ambiente https_proxy
o HTTPS_PROXY
. Se nelle variabili di ambiente è specificato https://
, le librerie client HTTP di GoLang potrebbero non riuscire se il proxy è configurato per gestire le connessioni HTTPS utilizzando altri protocolli come SOCK5.
Potrebbe essere restituito il seguente messaggio di errore di esempio:
proxyconnect tcp: tls: first record does not look like a TLS handshake
Per risolvere il problema, modifica le variabili di ambiente https_proxy
e HTTPS_PROXY
per omettere https:// prefix
. Su Windows, modifica il sistema
variabili di ambiente. Ad esempio, modifica il valore della variabile di ambiente https_proxy
da https://webproxy.example.com:8000
a webproxy.example.com:8000
.
L'accesso al cluster non riesce quando si utilizza kubeconfig generato da gcloud anthos auth login
Questo problema si verifica quando il server dell'API Kubernetes non è in grado di autorizzare l'utente. Ciò può accadere se gli RBAC appropriati mancano o sono errati oppure si è verificato un errore nella configurazione OIDC per il cluster. Potrebbe essere visualizzato il seguente errore di esempio:
Unauthorized
Per risolvere il problema, completa i seguenti passaggi:
Nel file kubeconfig generato da
gcloud anthos auth login
, copia valore diid-token
.kind: Config ... users: - name: ... user: auth-provider: config: id-token: xxxxyyyy
Installa jwt-cli ed esegui:
jwt ID_TOKEN
Verifica la configurazione OIDC.
La risorsa
ClientConfig
ha i campigroup
eusername
. Questi vengono utilizzati per impostare--oidc-group-claim
e--oidc-username-claim
nel server API Kubernetes. Quando il token viene presentato al server API, lo inoltra a GKE Identity Service, che restituiscegroup-claim
eusername-claim
estratti al server API. L'API server utilizza la risposta per verificare che il gruppo o l'utente corrispondente abbia le autorizzazioni corrette.Verifica che le rivendicazioni impostate per
group
euser
inClientConfig
risorse sono presenti nel token ID.Controlla gli RBAC applicati.
Verifica che esista un RBAC con le autorizzazioni corrette per l'utente specificato da
username-claim
o da uno dei gruppi elencatigroup-claim
da al passaggio precedente. Il nome dell'utente o del gruppo in RBAC deve essere con prefissousernameprefix
ogroupprefix
specificato inClientConfig
risorsa.Se
usernameprefix
è vuoto eusername
è un valore diverso daemail
,issuerurl#
è il prefisso predefinito. Per disattivare i prefissi nome utente, imposta Dausernameprefix
a-
.Per ulteriori informazioni sui prefissi utente e di gruppo, consulta Autenticazione con OIDC.
ClientConfig
risorsa:oidc: ... username: "unique_name" usernameprefix: "-" group: "group" groupprefix: "oidc:"
Token ID:
{ ... "email": "cluster-developer@example.com", "unique_name": "EXAMPLE\cluster-developer", "group": [ "Domain Users", "EXAMPLE\developers" ], ... }
Le seguenti associazioni RBAC concedono a questo gruppo e utente il ruolo del cluster
pod-reader
. Nota la singola barra nel campo del nome anziché una doppia barra:ClusterRoleBinding del gruppo:
apiVersion: kind: ClusterRoleBinding metadata: name: example-binding subjects: - kind: Group name: "oidc:EXAMPLE\developers" apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: pod-reader apiGroup: rbac.authorization.k8s.io
Utente ClusterRoleBinding:
apiVersion: kind: ClusterRoleBinding metadata: name: example-binding subjects: - kind: User name: "EXAMPLE\cluster-developer" apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: pod-reader apiGroup: rbac.authorization.k8s.io
Controlla i log del server API Kubernetes.
Se il plug-in OIDC configurato nel server API Kubernetes non si avvia correttamente, il server API restituisce un errore
Unauthorized
quando viene presentato il token ID. Per verificare se si sono verificati problemi con il plug-in OIDC in il server API, esegui:kubectl logs statefulset/kube-apiserver -n USER_CLUSTER_NAME \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Sostituisci quanto segue:
USER_CLUSTER_NAME
: il nome del cluster di utenti per cui visualizzare i log.ADMIN_CLUSTER_KUBECONFIG
: il file kubeconfig del cluster di amministrazione.
gkectl create-login-config non riesce a recuperare clientconfig
Questo problema si verifica quando il file kubeconfig passato
gkectl create-login-config
non è per un cluster utente o per ClientConfig
durante la creazione del cluster.
Error getting clientconfig using KUBECONFIG
Per risolvere il problema, assicurati di avere il file kubeconfig corretto per il tuo cluster di utenti. Poi controlla se la risorsa ClientConfig
è nel cluster:
kubectl get clientconfig default -n kube-public \
--kubeconfig USER_CLUSTER_KUBECONFIG
Sostituisci USER_CLUSTER_KUBECONFIG
con il percorso del file kubeconfig del cluster dell'utente.
gkectl create-login-config ha esito negativo a causa di un nome cluster duplicato
Questo problema si verifica se provi a scrivere dati di configurazione di accesso contenenti un nome cluster che esiste già nel file di destinazione. Ogni file di configurazione dell'accesso deve contenere nomi di cluster univoci.
error merging with file MERGE_FILE because MERGE_FILE contains a cluster with
the same name as the one read from KUBECONFIG. Please write to a new
output file
Per risolvere il problema, utilizza il flag --output
per specificare un nuovo file di destinazione.
Se non specifichi il valore --output
, questi dati di configurazione dell'accesso vengono scritti in un
denominato kubectl-anthos-config.yaml
nella directory corrente.
Risolvere i problemi relativi a OIDC
Quando l'autenticazione OIDC non funziona per Google Distributed Cloud, in genere il servizio
la specifica nella risorsa ClientConfig
non è stata configurata correttamente.
La risorsa ClientConfig
fornisce istruzioni per esaminare i log e
Specifica OIDC per identificare la causa di un problema OIDC.
Esamina il Guida alla risoluzione dei problemi relativi al provider di identità del servizio di identità GKE per informazioni su come abilitare e rivedere i log delle identità e testare la connettività. Dopo aver verificato che il servizio di identità GKE funzioni come previsto o se identifichi un problema, consulta le seguenti informazioni sulla risoluzione dei problemi relativi a OIDC.
Controlla la specifica OIDC nel cluster
Le informazioni OIDC per il cluster sono specificate nella sezione ClientConfig
nello spazio dei nomi kube-public
.
Utilizza
kubectl get
per stampare la risorsa OIDC per il cluster utente:kubectl --kubeconfig KUBECONFIG -n kube-public get \ clientconfig.authentication.gke.io default -o yaml
Sostituisci
KUBECONFIG
con il percorso del cluster utente kubeconfig.Esamina i valori dei campi per verificare che la specifica sia configurata correttamente per il provider OIDC.
Se identifichi un problema di configurazione nella specifica, riconfigura OIDC.
Se non riesci a diagnosticare e risolvere autonomamente il problema, contatta l'assistenza Google Cloud.
L'assistenza Google Cloud richiede Log di GKE Identity Service e la specifica OIDC per diagnosticare e risolvere i problemi OIDC.
Verificare che l'autenticazione OIDC sia abilitata
Prima di testare l'autenticazione OIDC, verifica che sia abilitata nel tuo cluster.
Esamina i log di GKE Identity Service:
kubectl logs -l k8s-app=ais -n anthos-identity-service
L'output di esempio seguente mostra che l'autenticazione OIDC è corretta attivato:
... I1011 22:14:21.684580 33 plugin_list.h:139] OIDC_AUTHENTICATION[0] started. ...
Se l'autenticazione OIDC non è attivata correttamente, vengono visualizzati errori simili al seguente esempio:
Failed to start the OIDC_AUTHENTICATION[0] authentication method with error:
Esamina gli errori specifici segnalati e prova a correggerli.
Testa l'autenticazione OIDC
Per utilizzare la funzionalità OIDC, utilizza una workstation con l'interfaccia utente e il browser abilitati. Tu non possono eseguire questi passaggi da una sessione SSH basata su testo. Per verificare che OIDC funzioni correttamente nel cluster, completa i seguenti passaggi:
- Scarica con Google Cloud CLI.
Per generare il file di configurazione di accesso, esegui il seguente
gcloud anthos create-login-config
comando:gcloud anthos create-login-config \ --output user-login-config.yaml \ --kubeconfig KUBECONFIG
Sostituisci
KUBECONFIG
con il percorso del file kubeconfig del cluster utente.Per autenticare l'utente, esegui il seguente comando:
gcloud anthos auth login --cluster CLUSTER_NAME \ --login-config user-login-config.yaml \ --kubeconfig AUTH_KUBECONFIG
Sostituisci quanto segue:
- CLUSTER_NAME con il nome del cluster utente su connettersi.
- AUTH_KUBECONFIG con il nuovo file kubeconfig da creare che include le credenziali per accedere al cluster. Per ulteriori informazioni, consulta Eseguire l'autenticazione nel cluster.
Dovresti visualizzare una pagina di consenso per l'accesso nel browser web predefinito della tua workstation locale. Fornisci informazioni di autenticazione valide per un utente in questa richiesta di accesso.
Dopo aver completato correttamente il passaggio di accesso precedente, verrà visualizzato un file kubeconfig viene generato nella directory corrente.
Per testare il nuovo file kubeconfig che include le tue credenziali, elenca i pod nel tuo cluster utente:
kubectl get pods --kubeconfig AUTH_KUBECONFIG
Sostituisci AUTH_KUBECONFIG con il percorso del nuovo kubeconfig generato nel passaggio precedente.
Potrebbe essere restituito il seguente messaggio di esempio che indica che puoi autenticarti correttamente, ma non sono assegnati controlli dell'accesso basati sui ruoli (RBAC) all'account:
Error from server (Forbidden): pods is forbidden: User "XXXX" cannot list resource "pods" in API group "" at the cluster scope
Esamina i log di autenticazione OIDC
Se non riesci ad autenticarti con OIDC, i log del servizio GKE Identity forniscono le informazioni più pertinenti e utili per il debug del problema.
Utilizza
kubectl logs
per stampare i log di GKE Identity Service:kubectl --kubeconfig KUBECONFIG \ -n anthos-identity-service logs \ deployment/ais --all-containers=true
Sostituisci
KUBECONFIG
con il percorso del cluster utente kubeconfig.Esamina i log per rilevare errori che possono aiutarti a diagnosticare i problemi di OIDC.
Ad esempio, la risorsa
ClientConfig
potrebbe contenere un errore ortografico nel campoissuerURL
, ad esempiohtps://accounts.google.com
(manca unt
inhttps
). I log di GKE Identity Service conterrebbero una voce come nell'esempio seguente:OIDC (htps://accounts.google.com) - Unable to fetch JWKs needed to validate OIDC ID token.
Se identifichi un problema di configurazione nei log, Riconfigura OIDC e correggere i problemi di configurazione.
Se non riesci a diagnosticare e risolvere autonomamente il problema, contatta l'assistenza Google Cloud.
L'assistenza Google Cloud ha bisogno dei log di GKE Identity Service e della specifica OIDC per diagnosticare e risolvere i problemi relativi a OIDC.
Problemi OIDC comuni
Se riscontri problemi con l'autenticazione OIDC, esamina i seguenti problemi comuni. Segui le indicazioni per risolvere il problema.
Nessun endpoint disponibile per il servizio "ais"
Quando salvi la risorsa ClientConfig
, viene visualizzato il seguente messaggio di errore
restituito:
Error from server (InternalError): Internal error occurred: failed calling webhook "clientconfigs.validation.com":
failed to call webhook: Post "https://ais.anthos-identity-service.svc:15000/admission?timeout=10s":
no endpoints available for service "ais"
Questo errore è causato dall'endpoint GKE Identity Service non funzionante. La Il pod del servizio di identità GKE non è in grado di gestire il webhook di convalida.
Per verificare che il pod Identity Service di GKE non sia in stato di esecuzione, esegui il seguente comando:
kubectl get pods -n anthos-identity-service \ --kubeconfig KUBECONFIG
Sostituisci
KUBECONFIG
con il percorso del cluster utente kubeconfig.L'output di esempio seguente indica che il pod GKE Identity Service è arresto anomalo:
NAME READY STATUS RESTARTS AGE ais-5949d879cd-flv9w 0/1 ImagePullBackOff 0 7m14s
Per capire perché il pod ha un problema, controlla gli eventi del pod:
kubectl describe pod -l k8s-app=ais \ -n anthos-identity-service \ --kubeconfig KUBECONFIG
Sostituisci
KUBECONFIG
con il percorso del file kubeconfig del cluster utente.L'output di esempio seguente segnala un errore di autorizzazione durante il pull del immagine:
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 10m default-scheduler Successfully assigned anthos-identity-service/ais-5949d879cd-flv9w to pool-1-76bbbb8798-dknz5 Normal Pulling 8m23s (x4 over 10m) kubelet Pulling image "gcr.io/gke-on-prem-staging/ais:hybrid_identity_charon_20220808_2319_RC00" Warning Failed 8m21s (x4 over 10m) kubelet Failed to pull image "gcr.io/gke-on-prem-staging/ais:hybrid_identity_charon_20220808_2319_RC00": rpc error: code = Unknown desc = failed to pull and unpack image "gcr.io/gke-on-prem-staging/ais:hybrid_identity_charon_20220808_2319_RC00": failed to resolve reference "gcr.io/gke-on-prem-staging/ais:hybrid_identity_charon_20220808_2319_RC00": pulling from host gcr.io failed with status code [manifests hybrid_identity_charon_20220808_2319_RC00]: 401 Unauthorized Warning Failed 8m21s (x4 over 10m) kubelet Error: ErrImagePull Warning Failed 8m10s (x6 over 9m59s) kubelet Error: ImagePullBackOff Normal BackOff 4m49s (x21 over 9m59s) kubelet Back-off pulling image "gcr.io/gke-on-prem-staging/ais:hybrid_identity_charon_20220808_2319_RC00"
Se gli eventi del pod segnalano un problema, continua la risoluzione dei problemi nelle aree interessate. Se hai bisogno di ulteriore assistenza, contatta l'assistenza Google Cloud.
Errore durante la lettura dei byte di risposta dal server
Nei log di GKE Identity Service potresti notare i seguenti errori:
E0516 07:24:38.314681 65 oidc_client.cc:207] Failed fetching the Discovery URI
"https://oidc.idp.cloud.example.com/auth/idp/k8sIdp/.well-known/openid-configuration" with error:
Failed reading response bytes from server.
E0516 08:24:38.446504 65 oidc_client.cc:223] Failed to fetch the JWKs URI
"https://oidc.idp.cloud.example.com/auth/idp/k8sIdp/certs" with error:
Failed reading response bytes from server.
Questi errori di rete potrebbero essere visualizzati nei log in uno dei seguenti modi:
Appaiono sporadicamente nel log: è probabile che gli errori di riserva non siano il problema principale e potrebbero essere problemi di rete intermittenti.
Il plug-in OIDC di GKE Identity Service ha un processo daemon sincronizza periodicamente l'URL di rilevamento OIDC ogni 5 secondi. Se la connessione di rete è instabile, questa richiesta di uscita potrebbe non riuscire. I fallimenti occasionali non influiscono sull'autenticazione OIDC. I dati esistenti memorizzati nella cache possono essere riutilizzate.
Se nei log vengono rilevati altri errori, continua con i passaggi di risoluzione dei problemi aggiuntivi.
Vengono visualizzate costantemente nel log oppure il servizio di identità GKE non è mai raggiunge correttamente l'endpoint noto: questi problemi continui indicare un problema di connettività tra il servizio di identità GKE e il tuo file OIDC o provider di identità.
I seguenti passaggi per la risoluzione dei problemi possono aiutare a diagnosticare questa connettività. problemi:
- Assicurati che un firewall non stia bloccando le richieste in uscita GKE Identity Service.
- Verifica che il server del provider di identità funzioni correttamente.
- Verifica che l'URL dell'emittente OIDC nella risorsa
ClientConfig
sia configurato correttamente. - Se hai attivato il campo proxy nella risorsa
ClientConfig
, controlla lo stato o il log del server proxy in uscita. - Testa la connettività tra il tuo pod GKE Identity Service e il server del provider di identità OIDC.
Devi aver eseguito l'accesso al server (accesso non autorizzato)
Quando provi ad accedere utilizzando l'autenticazione OIDC, potresti ricevere messaggio di errore seguente:
You must be logged in to the server (Unauthorized)
Questo errore è un problema generale di autenticazione Kubernetes che non presenta ulteriori informazioni. Tuttavia, questo errore indica un problema di configurazione.
Per determinare il problema, consulta le sezioni precedenti per controllare la specifica OIDC nel cluster e configurare la risorsa ClientConfig
.
Impossibile effettuare la richiesta di autenticazione webhook
Nei log di GKE Identity Service potresti visualizzare il seguente errore:
E0810 09:58:02.820573 1 webhook.go:127] Failed to make webhook authenticator request:
error trying to reach service: net/http: TLS handshake timeout
Questo errore indica che il server API non è in grado di stabilire la connessione con il pod di GKE Identity Service.
Per verificare se l'endpoint del servizio di identità GKE può essere raggiunto dal all'esterno, esegui questo comando
curl
:curl -k -s -o /dev/null -w "%{http_code}" -X POST \ https://APISERVER_HOST/api/v1/namespaces/anthos-identity-service/services/https:ais:https/proxy/authenticate -d '{}'
Sostituisci
APISERVER_HOST
con l'indirizzo dell'API server web.La risposta prevista è un codice di stato
HTTP 400
. Se la richiesta ha superato il tempo di attesa, riavvia il pod GKE Identity Service. Se l'errore persiste, significa che il server HTTP di GKE Identity Service non riesce ad avviarsi. Per ulteriori assistenza, contatta l'assistenza Google Cloud.
URL di accesso non trovato
Il seguente problema si verifica quando la console Google Cloud non riesce a raggiungere l'identità
o il provider di servizi di terze parti. Un tentativo di accesso viene reindirizzato a una pagina con URL not found
.
Per risolvere il problema, consulta i seguenti passaggi per la risoluzione dei problemi. Dopo ogni passaggio, prova ad accedere di nuovo:
Se il provider di identità non è raggiungibile sulla rete internet pubblica, attiva il Proxy HTTP OIDC per accedere utilizzando la console Google Cloud. Modifica
ClientConfig
risorsa personalizzata e impostauseHTTPProxy
sutrue
:kubectl edit clientconfig default -n kube-public --kubeconfig USER_CLUSTER_KUBECONFIG
Sostituisci
USER_CLUSTER_KUBECONFIG
con il percorso del file kubeconfig del cluster utente.Se il proxy HTTP è abilitato e continui a riscontrare questo errore, potrebbe esserci un problema con l'avvio del proxy. Visualizza i log del proxy:
kubectl logs deployment/clientconfig-operator -n kube-system --kubeconfig USER_CLUSTER_KUBECONFIG
Sostituisci
USER_CLUSTER_KUBECONFIG
con il percorso del tuo del cluster utente kubeconfig.Anche se il tuo provider di identità ha una CA nota, devi fornire un valore per
oidc.caPath
nella tua risorsa personalizzataClientConfig
affinché il proxy HTTP l'avvio riuscito.Se il server di autorizzazione richiede il consenso e non hai incluso i parametri
extraparam
prompt=consent
, modifica il parametroClientConfig
personalizzato risorsa e aggiungiprompt=consent
ai parametriextraparams
:kubectl edit clientconfig default -n kube-public --kubeconfig USER_CLUSTER_KUBECONFIG
Sostituisci
USER_CLUSTER_KUBECONFIG
con il percorso del tuo del cluster utente kubeconfig.Se le impostazioni di configurazione vengono modificate nel servizio di archiviazione, potrebbe essere necessario uscire esplicitamente dalle sessioni esistenti. Nella console Google Cloud, vai a nella pagina dei dettagli del cluster e seleziona Esci.
Risolvere i problemi relativi a LDAP
Se riscontri problemi con l'autenticazione LDAP, assicurati di aver configurato il tuo ambiente seguendo uno dei documenti di configurazione appropriati:
Devi anche assicurarti di compilare il segreto dell'account di servizio LDAP e di aver configurato la risorsa ClientConfig
per attivare l'autenticazione LDAP.
Consulta la guida alla risoluzione dei problemi relativi all'identity provider di GKE Identity Service per informazioni su come attivare e esaminare i log di identità e testare la connettività. Dopo aver confermato che il servizio di identità GKE funziona come previsto Identifica un problema, esamina le seguenti informazioni sulla risoluzione dei problemi LDAP.
Verificare che l'autenticazione LDAP sia abilitata
Prima di testare l'autenticazione LDAP, verifica che sia attiva nel tuo cluster.
Esamina i log di GKE Identity Service:
kubectl logs -l k8s-app=ais -n anthos-identity-service
L'esempio di output seguente mostra che l'autenticazione LDAP è attivata correttamente:
... I1012 00:14:11.282107 34 plugin_list.h:139] LDAP[0] started. ...
Se l'autenticazione LDAP non è attivata correttamente, vengono visualizzati errori simili all'esempio seguente:
Failed to start the LDAP_AUTHENTICATION[0] authentication method with error:
Esamina gli errori specifici segnalati e prova a correggerli.
Testare l'autenticazione LDAP
Per utilizzare la funzionalità LDAP, utilizza una workstation con l'interfaccia utente e il browser abilitati. Non puoi eseguire questi passaggi da una sessione SSH basata su testo. Per testare il protocollo LDAP che l'autenticazione funzioni correttamente nel cluster, completa i seguenti passaggi:
- Scarica con Google Cloud CLI.
Per generare il file di configurazione dell'accesso, esegui questo comando gcloud anthos create-login-config :
gcloud anthos create-login-config \ --output user-login-config.yaml \ --kubeconfig KUBECONFIG
Sostituisci
KUBECONFIG
con il percorso del cluster utente kubeconfig.Per autenticare l'utente, esegui il seguente comando:
gcloud anthos auth login --cluster CLUSTER_NAME \ --login-config user-login-config.yaml \ --kubeconfig AUTH_KUBECONFIG
Sostituisci quanto segue:
CLUSTER_NAME
con il nome del cluster utente su connettersi.AUTH_KUBECONFIG
con il nuovo file kubeconfig su che includa le credenziali per accedere al cluster. Per ulteriori informazioni, consulta Eseguire l'autenticazione nel cluster.
Dovresti ricevere una pagina per il consenso di accesso aperta nel browser web predefinito di dalla workstation locale. Fornisci informazioni di autenticazione valide per un utente in questa richiesta di accesso.
Dopo aver completato correttamente il passaggio di accesso precedente, verrà visualizzato un file kubeconfig viene generato nella directory corrente.
Per testare il nuovo file kubeconfig che include le tue credenziali, elenca i pod nel cluster di utenti:
kubectl get pods --kubeconfig AUTH_KUBECONFIG
Sostituisci AUTH_KUBECONFIG con il percorso del file kubeconfig del cluster dell'utente generato nel passaggio precedente.
Error from server (Forbidden): pods is forbidden: User "XXXX" cannot list resource "pods" in API group "" at the cluster scope
Problemi comuni relativi a LDAP
In caso di problemi con l'autenticazione LDAP, consulta le seguenti risorse comuni che le applicazioni presentino problemi di prestazioni. Segui le indicazioni per risolvere il problema.
Gli utenti non possono autenticarsi con le virgole nel loro CN
Quando utilizzi LDAP, potresti riscontrare problemi quando gli utenti non possono eseguire l'autenticazione se
il loro CN contiene una virgola, come CN="a,b"
. Se attivi il log di debug per GKE Identity Service, viene visualizzato il seguente messaggio di errore:
I0207 20:41:32.670377 30 authentication_plugin.cc:977] Unable to query groups from the LDAP server directory.example.com:636, using the LDAP service account
'CN=svc.anthos_dev,OU=ServiceAccount,DC=directory,DC=example,DC=com'.
Encountered the following error: Empty entries.
Questo problema si verifica perché il plug-in LDAP del servizio di identità GKE esegue il doppio sfuggimento della virgola. Questo problema si verifica solo nelle versioni Google Distributed Cloud 1.13 e in precedenza.
Per risolvere il problema, completa uno dei seguenti passaggi:
- Esegui l'upgrade del cluster a Google Distributed Cloud 1.13 o versioni successive.
- Scegli un altro
identifierAttribute
, ad esempiosAMAccountName
, di utilizzare la CN. - Rimuovi le virgole dall'interno del CN nella directory LDAP.
Errore di autenticazione con Google Cloud CLI 1.4.2
Con Google Cloud CLI anthos-auth
1.4.2, potresti visualizzare il seguente errore
quando esegui il 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
Nel log di GKE Identity Service, vedrai anche il seguente errore:
I0728 12:43:01.980012 26 authentication_plugin.cc:79] Stopping STS authentication, unable to decrypt the STS token:
Decryption failed, no keys in the current key set could decrypt the payload.
Per risolvere il problema, segui questi passaggi:
Verifica di utilizzare la versione 1.4.2 di Google Cloud CLI
anthos-auth
:gcloud anthos auth version
L'output di esempio seguente mostra che la versione è 1.4.2:
Current Version: v1.4.2
Se utilizzi Google Cloud CLI
anthos-auth
versione 1.4.2, esegui l'upgrade alla versione 1.4.3 o successiva.
Problemi comuni
Questa sezione descrive i problemi comuni di autenticazione e come risolverli.
Accesso alla workstation di amministrazione non disponibile a causa di un errore della chiave SSH permission denied
Quando tenti di connetterti alla workstation di amministrazione e
ricevi un messaggio "Permission denied"
simile all'esempio seguente:
Authorized users only. All activity may be monitored and reported.
TARGET_MACHINE: Permission denied (publickey).
Questo errore si verifica a causa dell'utilizzo di una chiave privata errata o dell'assenza di una chiave quando ti connetti alla workstation di amministrazione mediante SSH.
Per risolvere il problema, individua e utilizza la chiave SSH corretta. Se non riesci a trovare la chiave SSH corretta, genera una nuova coppia di chiavi SSH per la workstation di amministrazione seguendo i passaggi che seguono:
Crea una VM di recupero temporanea. Questa VM di recupero deve connettersi alla stessa rete e allo stesso datastore della VM della workstation di amministrazione attuale.
Spegni la VM workstation di amministrazione e la VM di recupero.
Collega il disco dati della VM della workstation di amministrazione alla VM di recupero. I dati In genere il disco è di 512 MB, a meno che tu non abbia specificato una dimensione disco diversa il file di configurazione della workstation di amministrazione, diverso dal disco di avvio.
Accendi la VM di recupero.
Connettiti alla Rescue VM tramite SSH.
Sul computer locale, genera una nuova coppia di chiavi SSH.
Sul computer locale, copia la nuova chiave pubblica SSH nella VM di recupero utilizzando il comando
ssh-copy-id
:ssh-copy-id -i ~/.ssh/NEW_SSH_KEY ubuntu@RESCUE_VM
Sostituisci quanto segue:
NEW_SSH_KEY
con il nome della nuova chiave SSH creato nel passaggio precedente.RESCUE_VM
con l'indirizzo IP o il FQDN della VM di recupero.
Sulla Rescue VM, monta il disco dati sulla Rescue VM:
sudo mkdir -p /mnt/ext-disk sudo mount DEVICE /mnt/ext-disk
Sostituisci
DEVICE
con l'identificatore univoco del tuo disco, ad esempio/dev/sdb1
.Sulla VM di recupero, copia la nuova chiave pubblica SSH nell'
authorized_keys
sul disco dati montato dalla VM della workstation di amministrazione.Visualizza i contenuti del file
authorized_keys
sulla VM di ripristino, che include la nuova chiave pubblica SSH copiata utilizzando il comandossh-copy-id
in un passaggio precedente:ls ~/.ssh/authorized_keys
Copia l'ultima voce di chiave pubblica SSH dal file
authorized_keys
, quindi per chiudere il file.Modifica il file
authorized_keys
sul disco di dati montato dalla VM della workstation di amministrazione:vi /mnt/ext-disk/.ssh/authorized_keys
Incolla i contenuti della chiave pubblica SSH dal file
authorized_keys
di sulla VM di recupero.Salva e chiudi il file
authorized_keys
sul disco dati montato dal tuo VM della workstation di amministrazione.Verifica che i file in
/mnt/ext-disk/.ssh/
abbiano le autorizzazioni corrette applicati:chown -R ubuntu /mnt/ext-disk/.ssh/* chmod -R 600 /mnt/ext-disk/.ssh/*
Esci dalla connessione SSH alla VM di recupero.
Arresta la VM di recupero.
Scollega il disco dati dalla VM di recupero e ricollegalo alla VM della workstation di amministrazione.
Accendi la workstation di amministrazione.
Dopo aver eseguito la VM, connettiti alla workstation di amministrazione utilizzando SSH e la nuova coppia di chiavi SSH.
ssh -i ~/.ssh/NEW_SSH_KEY ubuntu@ADMIN_VM
Sostituisci quanto segue:
NEW_SSH_KEY
con il nome della nuova chiave SSH che hai creato in un passaggio precedente e che hai copiato nella VM della workstation di amministrazione.RESCUE_VM
con l'indirizzo IP o il FQDN della VM della postazione di amministrazione.
Verifica di poter connetterti correttamente tramite SSH.
Elimina la VM di recupero.
Passaggi successivi
Se hai bisogno di ulteriore assistenza, contatta Assistenza clienti Google Cloud.