Dokumen ini menjelaskan cara memecahkan masalah error umum terkait Mengautentikasi beban kerja ke beban kerja lain melalui mTLS.
Untuk mengetahui informasi tambahan, lihat Memecahkan Masalah Workload Identity Federation.
Sebelum memulai
-
Siapkan autentikasi jika Anda belum melakukannya.
Autentikasi memverifikasi identitas Anda untuk mengakses layanan Google Cloud dan API. Untuk menjalankan
kode atau sampel dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke
Compute Engine dengan memilih salah satu opsi berikut:
-
Instal Google Cloud CLI. Setelah penginstalan, inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:
gcloud initJika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
- Tetapkan region dan zona default.
-
Direktori kredensial yang dibuat tidak ada
Jika Anda mendapatkan error bahwa direktori /var/run/secrets/workload-spiffe-credentials tidak ada, lakukan hal berikut:
Pastikan instance komputasi Anda mendukung autentikasi workload-ke-workload dengan menggunakan salah satu antarmuka berikut untuk memverifikasi bahwa identitas workload terkelola diaktifkan:
Konsol
Di konsol Google Cloud , buka halaman VM instances.
Di kolom Nama pada halaman Instance VM, klik nama instance untuk melihat detail tambahan tentang instance.
Di bagian Security and access pada halaman Details, verifikasi bahwa "Workload identity certificates" memiliki nilai "Enabled".
gcloud
Untuk melihat apakah fitur identitas workload terkelola diaktifkan untuk instance compute, gunakan perintah
gcloud alpha compute instances describe.gcloud alpha compute instances describe INSTANCE_NAME \ --zone=ZONE \ --format="table(name,zone,identityCertificate)"Ganti kode berikut:
INSTANCE_NAME: nama instance.ZONE: zona tempat instance berada.
REST
Untuk melihat detail instance komputasi, buat permintaan
GETke metodeinstances.get. Dengan menambahkan parameter kueri$fieldske permintaan, Anda dapat membatasi output hanya ke kolom yang diinginkan.GET https://compute.googleapis.com/compute/alpha/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME$fields=name,identityCertificate,identity
Ganti kode berikut:
PROJECT_ID: ID project tempat instance beradaZONE: zona tempat instance beradaINSTANCE_NAME: nama instance
Tinjau nilai instance untuk
identityCertificatedanidentity.Jika properti
identityCertificatedisetel kefalse, maka instance komputasi ini tidak mendukung fitur ini.Untuk mengatasi masalah ini, buat instance baru yang mendukung autentikasi workload-to-workload. Untuk mengetahui detailnya, lihat Mengaktifkan identitas workload terkelola di VM yang ada.
Pastikan VM menjalankan OS tamu dengan agen tamu Compute Engine versi 20231103.01 atau yang lebih baru. Gunakan gcloud CLI untuk melihat output port serial guna menentukan versi agen tamu Compute Engine saat ini:
gcloud compute instances get-serial-port-output INSTANCE_NAME | grep "GCE Agent Started"Ganti INSTANCE_NAME dengan nama instance komputasi.
Untuk mengupdate agen tamu Compute Engine, lihat Memperbarui lingkungan tamu.
Periksa log layanan untuk memverifikasi bahwa timer systemd
gce-workload-cert-refresh.timerberhasil mengambil kredensial beban kerja dan paket kepercayaan.# View timer logs to see when the gce-workload-cert-refresh.timer last ran journalctl -u gce-workload-cert-refresh.timer # View service logs from gce-workload-cert-refresh.service journalctl -u gce-workload-cert-refresh.service
Direktori kredensial yang dihasilkan hanya berisi file config_status
Direktori kredensial yang dibuat, /var/run/secrets/workload-spiffe-credentials, mungkin hanya berisi config_status karena berbagai alasan. Gunakan langkah-langkah berikut untuk memecahkan masalah ini.
Periksa isi file
config_statusuntuk memastikan fitur identitas beban kerja terkelola diaktifkan. Jika fitur tidak diaktifkan menggunakan nilai yang sesuai, file log akan berisi pesan errorworkload certificate feature not enabled.Untuk mengatasi masalah ini, buat instance komputasi baru yang mendukung autentikasi workload ke workload, menggunakan salah satu metode berikut:
Periksa isi file
config_statusuntuk memastikan tidak ada kesalahan karena nilai atribut tidak ada atau konfigurasi tidak valid untuk penerbitan sertifikat atau konfigurasi tepercaya. Jika error tersebut ada, perbarui nilai konfigurasi dengan mengikuti langkah-langkah di Memperbarui konfigurasi penerbitan dan kepercayaan sertifikat.Pastikan izin yang benar diberikan kepada identitas workload terkelola di workload identity pool untuk mengakses pool CA subordinat. Gunakan perintah berikut:
gcloud privateca pools get-iam-policy SUBORDINATE_CA_POOL_ID \ --location=SUBORDINATE_CA_POOL_REGION
Ganti kode berikut:
- SUBORDINATE_CA_POOL_ID: ID untuk pool CA bawahan.
- SUBORDINATE_CA_POOL_REGION: region pool CA bawahan.
Output perintah ini harus berisi hal berikut:
bindings: - members: - principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/POOL_ID/* - role: roles/privateca.poolReader - members: - principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/POOL_ID/* role: roles/privateca.workloadCertificateRequesterPada contoh sebelumnya:
- PROJECT_NUMBER adalah nomor project Anda.
- POOL_ID adalah ID workload identity pool.
Jika Anda tidak melihat output yang serupa dengan contoh sebelumnya, berikan izin yang diperlukan seperti yang dijelaskan dalam Mengizinkan identitas workload terkelola untuk meminta sertifikat dari kumpulan CA.
Jika file
config_statustidak berisi pesan error, periksa nilaiiam.googleapis.com/workload-identitydalam file.Nilai tersebut harus cocok dengan nilai berikut:spiffe://POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
Pada contoh sebelumnya:
- PROJECT_NUMBER adalah nomor project untuk project yang berisi managed workload identity pool.
- POOL_ID adalah ID workload identity pool.
- NAMESPACE_ID adalah ID namespace di workload identity pool.
- MANAGED_IDENTITY_ID adalah ID identitas workload terkelola.
Jika nilai untuk
iam.googleapis.com/workload-identitysalah, Anda harus membuat instance komputasi baru dengan nilai yang benar karena nilai identitas terkelola hanya dapat diperbarui selama pembuatan instance.Jika file
config_statustidak berisi pesan error, pastikan konfigurasi kepercayaan berisi entri yang valid untuk domain kepercayaan SPIFFEPOOL_ID.global.PROJECT_NUMBER.workload.id.goog, yang sesuai dengan domain kepercayaan SPIFFE pada identitas terkelola yang ditetapkan ke instance komputasi. Untuk mengetahui informasi selengkapnya, lihat Menentukan konfigurasi kepercayaan.Jika file
config_statusberisi pesan error dengan kode errorINTERNAL_ERROR, hubungi Cloud Customer Care atau kontak Google Cloud Anda dengan menyertakan pesan error tersebut.