Risolvere i problemi relativi al provider OIDC

Questo documento fornisce indicazioni per la risoluzione dei problemi relativi ai provider di identità OIDC e AzureAD in GKE Identity Service.

Formattazione errata del certificato

Questo problema si verifica quando il valore del certificato presenta errori di formattazione. I problemi di formattazione possono corrispondere a valori di certificato non codificati in base64 e a valori codificati in base64 ma errati. Il problema può verificarsi anche se il certificato non è firmato da un'autorità di certificazione radice o se non viene fornita una catena di attendibilità formattata correttamente.

Messaggi di errore

Di seguito sono riportati alcuni esempi di messaggi di errore per scenari in cui il formato del certificato non è corretto:

  • Certificato non codificato in base64: Failed creating HTTP client to fetch the Discovery URI "<Discovery-document URI>" with error: Unable to decode data field, the value should be Base64 encoded

  • Certificato non formattato correttamente o codificato in base64 ma errato: Unable to connect to 'https://example.com', encountered the following error: Problem with the SSL CA cert (path? access rights?). Details: error setting certificate verify locations: CAfile: /tmp/example.pem CApath: none (The certificate could not be read, this is most likely because it's empty or contains a formatting error. Please check your configuration.)

  • Certificato non formattato correttamente o codificato in base64 ma errato: Failed fetching the Discovery URI "<Discovery-document URI>" with error: Unable to load TLS certificates.

Soluzione

Puoi risolvere i problemi in uno dei seguenti modi:

  • Il valore del certificato che fornisci in ClientConfig deve essere una stringa con codifica Base64 e formato PEM. Per saperne di più, vedi Codificare i certificati CA.
  • Se il tuo provider non utilizza certificati firmati da un'autorità di certificazione radice, devi configurare GKE Identity Service con una catena di attendibilità dei certificati. Per ulteriori informazioni, vedi Certificati intermedi.

Valore del certificato errato

Questo problema si verifica quando il certificato ha un valore non corrispondente. In questo caso, la formattazione dei certificati è corretta, ma non corrispondono al server. Può anche indicare che nella configurazione non erano presenti certificati.

Un valore del certificato può essere considerato errato in uno dei seguenti scenari:

  • In ClientConfig viene condiviso un valore del certificato errato. Un valore del certificato non è corretto quando il issuer del certificato del server non corrisponde al subject del certificato configurato.
  • Il certificato in ClientConfig non è una stringa con codifica Base64.
  • La catena di certificati non viene fornita quando i certificati intermedi vengono utilizzati per emettere il certificato server.

Messaggio di errore

Di seguito sono riportati alcuni esempi di messaggi di errore per scenari in cui si verifica una mancata corrispondenza nel valore del certificato:

  • La catena di certificati non è completa o non corrisponde al server: SSL peer certificate was not OK. Details: SSL certificate problem: unable to get local issuer certificate

  • La catena di certificati non è completa (corrisponde a una catena parziale non valida che non inizia dalla radice o non è contigua): Failed fetching the Discovery URI "<Discovery-document URI>" with error: The server's TLS certificate did not match expectations.

  • La catena di certificati è valida, ma non corrisponde al server OIDC: AIS was expecting the server to have a different certificate

  • La catena di certificati è valida, ma non corrisponde al server OIDC: Failed fetching the Discovery URI "<Discovery-document URI>" with error: The server's TLS certificate did not match expectations.

Soluzione

Il valore del certificato che fornisci in ClientConfig deve includere una catena di certificati formattata correttamente che corrisponda al fornitore di identità. Per ulteriori informazioni su come formattare e codificare i certificati, consulta Codificare i certificati CA.

I comandi kubectl non vanno a buon fine quando si utilizza un file kubeconfig generato dal comando gcloud anthos auth login

Quando utilizzi il comando gcloud anthos auth login con OIDC su macchine Windows per generare un file kubeconfig per l'accesso al cluster, i comandi kubectl potrebbero non riuscire con il seguente messaggio di errore: The command line is too long. Questo problema si verifica in particolare sui sistemi Windows e non interessa le macchine Linux che utilizzano lo stesso file kubeconfig. La causa principale è correlata alle dimensioni del token di autenticazione generato da Azure Active Directory (Azure AD) quando un utente appartiene a un numero elevato di gruppi (circa 70-200 gruppi, a seconda della lunghezza dei nomi dei gruppi).

Questo token di grandi dimensioni causa l'esecuzione di kubectl comandi non riuscita perché supera la lunghezza massima della riga di comando consentita da Windows, ovvero 8191 caratteri.

Messaggio di errore

$ kubectl --kubeconfig test-kubeconfig.yml get nodes

The command line is too long.
The command line is too long.
E0102 11:02:29.115256 24320 memcache.go:265] couldn't get current server API group list: Get "https://10.35.0.86:443/api?timeout=32s": getting credentials: exec: executable gcloud failed with exit code 1
The command line is too long.
E0102 11:02:29.350238 24320 memcache.go:265] couldn't get current server API group list: Get "https://10.35.0.86:443/api?timeout=32s": getting credentials: exec: executable gcloud failed with exit code 1
The command line is too long.
E0102 11:02:30.062811 24320 memcache.go:265] couldn't get current server API group list: Get "https://10.35.0.86:443/api?timeout=32s": getting credentials: exec: executable gcloud failed with exit code 1
Unable to connect to the server: getting credentials: exec: executable gcloud failed with exit code 1

Soluzione

Per risolvere il problema, segui questi passaggi:

  • Esegui l'upgrade alla versione 1.28 o successive del cluster GKE

    Se esegui una versione del cluster GKE precedente alla 1.28, ti consigliamo di eseguire l'upgrade alla versione supportata.

  • Ridurre le iscrizioni ai gruppi dell'utente interessato

    La riduzione del numero di gruppi a cui appartiene l'utente che esegue l'autenticazione al di sotto della soglia problematica (circa 70 gruppi) può risolvere il problema.

  • Aumentare le iscrizioni ai gruppi dell'utente interessato

    La funzionalità Microsoft Entra ID ha un limite per il numero di gruppi emessi in un token. Avere tra 70 e 200 iscrizioni a gruppi potrebbe causare problemi di autenticazione. Tuttavia, puoi risolvere i problemi del provider di identità aumentando il numero di appartenenze al gruppo oltre questo limite. A causa del comportamento di questo limite, Azure AD omette i gruppi da id_token quando il numero di appartenenze diventa eccessivamente elevato, impedendo alla riga di comando di diventare troppo lunga e risolvendo così i problemi del provider di identità. Per confermare il limite e per ulteriori dettagli, consulta la documentazione di Microsoft Entra ID.