Memecahkan masalah penyedia OIDC

Dokumen ini memberikan panduan pemecahan masalah untuk masalah penyedia identitas OIDC dan AzureAD di GKE Identity Service.

Pemformatan sertifikat salah

Masalah ini terjadi saat nilai sertifikat memiliki error pemformatan. Masalah pemformatan dapat sesuai dengan nilai sertifikat yang tidak dienkode base64 dan nilai yang dienkode base64 tetapi salah. Masalah ini juga dapat muncul jika sertifikat tidak ditandatangani oleh certificate authority root atau rantai kepercayaan yang diformat dengan benar tidak diberikan.

Pesan error

Berikut adalah contoh pesan error untuk skenario saat format sertifikat salah:

  • Sertifikat yang tidak dienkode 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

  • Sertifikat yang tidak diformat dengan benar atau dienkode base64 tetapi salah: 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.)

  • Sertifikat yang tidak diformat dengan benar atau dienkode base64 tetapi salah: Failed fetching the Discovery URI "<Discovery-document URI>" with error: Unable to load TLS certificates.

Solusi

Anda dapat mengatasi masalah ini dengan salah satu cara berikut:

  • Nilai sertifikat yang Anda berikan di ClientConfig harus berupa string yang dienkode base64 dan string berformat PEM. Untuk mengetahui informasi selengkapnya, lihat Encode sertifikat CA.
  • Jika penyedia Anda tidak menggunakan sertifikat yang ditandatangani oleh certificate authority root, Anda harus mengonfigurasi Layanan Identitas GKE dengan rantai kepercayaan sertifikat. Untuk mengetahui informasi selengkapnya, lihat Sertifikat perantara.

Nilai sertifikat salah

Masalah ini terjadi saat sertifikat memiliki nilai yang tidak cocok. Dalam hal ini, pemformatan sertifikat sudah benar, tetapi tidak cocok dengan server. Error ini juga dapat menunjukkan bahwa tidak ada sertifikat dalam konfigurasi.

Nilai sertifikat dapat dianggap tidak akurat dalam salah satu skenario berikut:

  • Nilai sertifikat yang salah dibagikan di ClientConfig. Nilai sertifikat salah jika issuer sertifikat server tidak cocok dengan subject sertifikat yang dikonfigurasi.
  • Sertifikat di ClientConfig bukan string berenkode base64.
  • Rantai sertifikat tidak disediakan saat sertifikat perantara digunakan untuk menerbitkan sertifikat server.

Pesan error

Contoh berikut adalah pesan error untuk skenario saat terjadi ketidakcocokan pada nilai sertifikat:

  • Rantai sertifikat tidak lengkap atau tidak cocok dengan server: SSL peer certificate was not OK. Details: SSL certificate problem: unable to get local issuer certificate

  • Rantai sertifikat tidak lengkap (sesuai dengan rantai parsial yang tidak valid yang tidak dimulai dari root atau tidak berdekatan): Failed fetching the Discovery URI "<Discovery-document URI>" with error: The server's TLS certificate did not match expectations.

  • Rantai sertifikat valid, tetapi tidak cocok dengan server OIDC: AIS was expecting the server to have a different certificate

  • Rantai sertifikat valid, tetapi tidak cocok dengan server OIDC: Failed fetching the Discovery URI "<Discovery-document URI>" with error: The server's TLS certificate did not match expectations.

Solusi

Nilai sertifikat yang Anda berikan di ClientConfig harus menyertakan rantai sertifikat yang diformat dengan benar dan cocok dengan penyedia identitas. Untuk mengetahui informasi selengkapnya tentang cara memformat dan mengenkode sertifikat, lihat Mengenkode sertifikat CA.

Perintah kubectl gagal saat menggunakan file kubeconfig yang dihasilkan oleh perintah gcloud anthos auth login

Saat Anda menggunakan perintah gcloud anthos auth login dengan OIDC di komputer Windows untuk membuat file kubeconfig untuk akses cluster, perintah kubectl mungkin gagal dengan pesan error berikut: The command line is too long. Masalah ini terjadi secara khusus di sistem Windows dan tidak memengaruhi komputer Linux yang menggunakan file kubeconfig yang sama. Penyebab utamanya terkait dengan ukuran token autentikasi yang dibuat oleh Azure Active Directory (Azure AD) saat pengguna tergabung dalam sejumlah besar grup (sekitar 70 hingga 200 grup, bergantung pada panjang nama grup).

Token besar ini menyebabkan eksekusi perintah kubectl gagal karena melebihi panjang maksimum command line yang diizinkan oleh Windows, yaitu 8.191 karakter.

Pesan error

$ 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

Solusi

Untuk menyelesaikan masalah ini, lakukan tindakan berikut:

  • Upgrade ke cluster GKE versi 1.28 atau yang lebih baru

    Jika Anda menjalankan versi cluster GKE yang lebih lama dari 1.28, sebaiknya upgrade ke versi yang didukung.

  • Mengurangi keanggotaan grup pengguna yang terpengaruh

    Mengurangi jumlah grup yang diikuti pengguna yang melakukan autentikasi hingga di bawah batas masalah (sekitar 70 grup) dapat menyelesaikan masalah ini.

  • Menambah keanggotaan grup pengguna yang terpengaruh

    Fitur Microsoft Entra ID memiliki batas untuk jumlah grup yang dikeluarkan dalam token. Memiliki keanggotaan grup antara 70 hingga 200 dapat menyebabkan masalah autentikasi. Namun, Anda dapat menyelesaikan masalah penyedia identitas dengan meningkatkan jumlah keanggotaan grup di luar batas ini. Karena perilaku batas ini, Azure AD menghilangkan grup dari id_token saat jumlah keanggotaan menjadi terlalu besar, sehingga mencegah command line menjadi terlalu panjang dan menyelesaikan masalah penyedia identitas. Tinjau dokumentasi Microsoft Entra ID untuk mengonfirmasi batas dan mengetahui detail selengkapnya.