Questo documento fornisce indicazioni sulla risoluzione dei problemi di identità e autorizzazione.
Mantenere aggiornato gcloud anthos auth
Puoi evitare molti problemi comuni verificando che i componenti dell'installazione
gcloud anthos auth
siano aggiornati.
Ci sono due parti da verificare, perché il comando gcloud anthos auth
prevede una logica nel componente principale gcloud
e in un componente anthos-auth
pacchettizzato separatamente.
Aggiorna gcloud
:
gcloud components update
Aggiorna anthos-auth
:
gcloud components install anthos-auth
Configurazione del provider non valida
Se la configurazione del tuo provider di identità non è valida, verrà visualizzata una schermata di errore del provider di identità dopo aver fatto clic su ACCESSO. Segui le istruzioni specifiche del provider per configurare correttamente il provider o il cluster.
Autorizzazioni non valide
Se completi il flusso di autenticazione, ma continui a non vedere i dettagli del cluster, assicurati di aver concesso le autorizzazioni RBAC corrette all'account che hai utilizzato con OIDC. Tieni presente che potrebbe essere un account diverso da quello che usi per accedere a Google Cloud Console.
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 questo problema, nel file di configurazione del cluster aggiungi prompt=consent
nel campo authentication.oidc.extraParams
. Quindi, genera nuovamente il file di autenticazione del client.
Token di aggiornamento scaduto
Questo 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 login
.
gkectl create-login-config non riesce a recuperare clientconfig
Questo problema si verifica quando il file kubeconfig passato a
gkectl create-login-config
non è associato a un cluster utente o se la risorsa personalizzata ClientConfig
non viene visualizzata durante la creazione del cluster.
Error getting clientconfig using KUBECONFIG
Per risolvere il problema, assicurati di avere il file kubeconfig corretto per il cluster utente. Quindi controlla se l'oggetto ClientConfig è nel cluster:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get clientconfig default -n kube-public
gkectl create-login-config non riesce a causa di un nome di cluster duplicato
Questo problema si verifica se tenti di scrivere i dati di configurazione dell'accesso contenenti un nome cluster già esistente 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 questo problema, utilizza il flag --output
per specificare un nuovo file di destinazione.
Se non fornisci --output
, questi dati di configurazione dell'accesso vengono scritti in un file denominato kubectl-anthos-config.yaml
nella directory corrente.
L'accesso all'autenticazione gcloud anthos non riesce con proxyconnect tcp
Questo problema si verifica quando si verifica un errore nelle configurazioni delle variabili di ambiente https_proxy
o HTTPS_PROXY
. Se è presente un elemento https://
specificato nelle variabili di ambiente, le librerie client HTTP GoLang potrebbero non riuscire se il proxy è configurato per gestire le connessioni HTTPS utilizzando altri protocolli, ad esempio SOCK5.
Possibile messaggio di errore:
proxyconnect tcp: tls: first record does not look like a TLS handshake
Per risolvere questo problema, modifica le variabili di ambiente https_proxy
e HTTPS_PROXY
in modo da omettere https:// prefix
. Su Windows, modifica le variabili di ambiente del sistema. Ad esempio, cambia 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 viene utilizzato kubeconfig generato da gcloud anthos auth login
Questo problema si verifica quando il server API Kubernetes non è in grado di autorizzare l'utente. Ciò può verificarsi se i RBAC appropriati sono mancanti o errati oppure si è verificato un errore nella configurazione OIDC per il cluster.
Unauthorized
Per risolvere il problema:
Nel file kubeconfig generato da
gcloud anthos auth login
, copia il 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.
Il file
authentication.oidc
nel file di configurazione del cluster utente contiene i campigroup
eusername
, che vengono utilizzati per impostare i flag--oidc-group-claim
e--oidc-username-claim
nel server API Kubernetes. Quando viene presentato al server API, il token viene inoltrato ad Anthos Identity Service, che restituisce i valorigroup-claim
eusername-claim
estratti al server AIP. Il server API utilizza la risposta per verificare che l'utente o il gruppo corrispondente disponga delle autorizzazioni corrette.Verifica che le dichiarazioni impostate per
group
euser
nella sezioneauthentication.oidc
del file di configurazione del cluster siano presenti nel token ID.Controlla i RBAC che sono stati applicati.
Verifica che sia presente un RBAC con le autorizzazioni corrette per l'utente specificato da
username-claim
o da uno dei gruppi elencatigroup-claim
del passaggio precedente. Il nome dell'utente o del gruppo nell'RBAC deve avere come prefisso il valoreusernameprefix
ogroupprefix
specificato nel file di configurazione del cluster utente.Tieni presente che se
usernameprefix
è vuoto eusername
è un valore diverso daemail
, il prefisso viene impostato suissuerurl#
per impostazione predefinita. Per disattivare i prefissi nome utente, impostausernameprefix
su-
.Per ulteriori informazioni sui prefissi utente e gruppo, consulta l'articolo sull'autenticazione con OIDC.
Tieni presente che il server API di Kubernetes tratta una barra rovesciata come un carattere di escape. Pertanto, se il nome dell'utente o del gruppo contiene
\\
, il server API lo legge come un singolo\
durante l'analisi del token ID. Di conseguenza, l'associazione dei ruoli RBAC applicata per questo utente o gruppo deve contenere solo una singola barra rovesciata o potrebbe essere visualizzato un erroreUnauthorized
.File di configurazione del cluster:
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 all'utente il ruolo
pod-reader
cluster. Nota la singola barra nel campo del nome invece di una doppia barra:ClusterRoleBinding di 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
ClusterRoleBinding utente:
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 di Kubernetes.
Se il plug-in OIDC configurato nel server API Kubernetes non si avvia correttamente, il server API restituisce un errore
Unauthorized
quando viene visualizzato il token ID. Per verificare se si sono verificati problemi con il plug-in OIDC nel server API, esegui:kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG logs statefulset/kube-apiserver -n USER_CLUSTER_NAME