Dokumen ini menjelaskan cara memecahkan masalah error umum yang terkait dengan Mengautentikasi beban kerja ke beban kerja lain melalui mTLS.
Sebelum memulai
-
Jika Anda belum melakukannya, siapkan autentikasi.
Autentikasi adalah
proses verifikasi identitas Anda untuk mengakses layanan dan API Google Cloud.
Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat mengautentikasi ke Compute Engine dengan memilih salah satu opsi berikut:
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
-
Direktori kredensial yang dihasilkan tidak ada
Jika Anda mendapatkan error bahwa direktori /var/run/secrets/workload-spiffe-credentials
tidak ada, lakukan hal berikut:
Pastikan VM Anda mendukung autentikasi workload ke workload dengan menjalankan perintah berikut dari dalam VM.
curl "http://metadata.google.internal/computeMetadata/v1/instance/gce-workload-certificates/config-status" -H "Metadata-Flavor: Google"
Jika responsnya adalah kode error
HTTP 404
dengan pesan error berikut, berarti VM ini tidak mendukung fitur ini.The requested URL /computeMetadata/v1/instance/gce-workload-certificates/config-status was not found on this server. That's all we know.
Untuk mengatasinya, buat VM baru yang mendukung autentikasi workload ke workload, menggunakan salah satu metode berikut:
Jika responsnya adalah kode error
HTTP 404
dengan pesan errorworkload certificate feature not enabled
, VM mendukung identitas beban kerja terkelola, tetapi fitur tersebut tidak diaktifkan. Untuk mengaktifkan fitur ini di VM, 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 VM_NAME | grep "GCE Agent Started"
Ganti VM_NAME dengan nama VM.
Untuk mengupdate agen tamu Compute Engine, lihat Memperbarui lingkungan tamu.
Periksa log layanan untuk memverifikasi bahwa
gce-workload-cert-refresh.timer
berhasil 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 dihasilkan,
/var/run/secrets/workload-spiffe-credentials
, mungkin hanya berisi
config_status
karena berbagai alasan. Gunakan langkah-langkah berikut untuk
memecahkan masalah ini.
Periksa konten file
config_status
untuk memastikan bahwa fitur Workload Identity terkelola diaktifkan. Jika fitur tidak diaktifkan menggunakan metadata VM yang sesuai, file log akan berisi pesan errorworkload certificate feature not enabled
.Untuk mengatasi masalah ini, buat VM baru yang mendukung autentikasi workload ke workload, menggunakan salah satu metode berikut:
Periksa isi file
config_status
untuk memastikan tidak ada error karena nilai atribut tidak ada atau konfigurasi tidak valid untuk penerbitan sertifikat atau konfigurasi kepercayaan. Jika error tersebut ada, perbarui nilai konfigurasi dengan mengikuti langkah-langkah di Memperbarui konfigurasi penerbitan dan kepercayaan sertifikat.Pastikan izin yang benar diberikan ke identitas workload terkelola di workload identity pool untuk mengakses kumpulan CA dependen. 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 subordinate CA pool.
- SUBORDINATE_CA_POOL_REGION: region kumpulan CA subordinat.
Output perintah ini harus berisi hal berikut:
bindings: - members: - principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/* - role: roles/privateca.poolReader - members: - principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/* role: roles/privateca.workloadCertificateRequester
Pada contoh sebelumnya:
- PROJECT_NUMBER adalah nomor project Anda.
- POOL_ID adalah ID workload identity pool.
Jika Anda tidak melihat output yang mirip dengan contoh sebelumnya, berikan izin yang diperlukan seperti yang dijelaskan dalam Memberi otorisasi identitas workload terkelola untuk meminta sertifikat dari kumpulan CA.
Jika file
config_status
tidak berisi pesan error, periksa nilaiiam.googleapis.com/workload-identity
dalam file.Nilai tersebut harus cocok dengan hal 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 workload identity pool terkelola.
- POOL_ID adalah ID workload identity pool.
- NAMESPACE_ID adalah ID namespace dalam workload identity pool.
- MANAGED_IDENTITY_ID adalah ID identitas workload terkelola.
Jika nilai untuk
iam.googleapis.com/workload-identity
salah, Anda harus membuat VM baru dengan nilai yang benar karena nilai identitas terkelola hanya dapat diperbarui selama pembuatan VM.Jika file
config_status
tidak 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 VM. Untuk mengetahui informasi selengkapnya, lihat Menentukan konfigurasi kepercayaan.Jika file
config_status
berisi pesan error dengan kode errorINTERNAL_ERROR
, hubungi Cloud Customer Care atau kontak Google Cloud Anda dengan pesan error tersebut.
Membuat kueri endpoint server metadata menampilkan error 404
Jika Anda mendapatkan respons 404
saat membuat kueri endpoint workload-identities
atau trust-anchors
, pastikan VM mendukung identitas workload terkelola dengan menjalankan perintah berikut dari dalam VM:
curl "http://metadata.google.internal/computeMetadata/v1/instance/gce-workload-certificates/config-status" -H "Metadata-Flavor: Google"
Jika responsnya adalah kode error
404
HTTP dengan pesan error berikut:The requested URL /computeMetadata/v1/instance/gce-workload-certificates/config-status was not found on this server. That's all we know.
VM tidak mendukung identitas workload terkelola. Untuk mengatasi masalah ini, lakukan salah satu langkah berikut:
Jika responsnya adalah kode error
404
HTTP dengan pesan errorworkload certificate feature not enabled
, VM ini mendukung identitas beban kerja terkelola, tetapi fitur tersebut tidak diaktifkan. Buat VM baru dengan fitur yang diaktifkan, atau buat template instance dan grup instance terkelola baru.Pastikan izin yang benar diberikan ke workload identity pool untuk mengakses kumpulan CA subordinat dengan menjalankan 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 kumpulan CA subordinat.
- SUBORDINATE_CA_POOL_REGION: region kumpulan CA subordinat.
Output perintah ini harus berisi hal berikut, dengan PROJECT_NUMBER adalah nomor project dari project Anda dan POOL_ID adalah ID workload identity pool.
bindings: - members: - principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/* - role: roles/privateca.poolReader - members: - principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/* - role: roles/privateca.workloadCertificateRequester
Jika output Anda tidak berisi nilai ini, berikan izin yang benar, seperti yang dijelaskan dalam Memberi otorisasi identitas workload terkelola untuk meminta sertifikat dari kumpulan CA.
Pastikan nilai
iam.googleapis.com/workload-identity
sudah benar dan cocok dengan hal berikut:spiffe://POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
Jika nilainya tidak cocok, Anda harus membuat VM baru karena nilai identitas terkelola tidak dapat diperbarui setelah membuat VM.
Pastikan trust config berisi entri yang valid untuk domain kepercayaan SPIFFE
POOL_ID.global.PROJECT_NUMBER.workload.id.goog
, yang sesuai dengan domain kepercayaan SPIFFE pada identitas terkelola yang ditetapkan ke VM.