Dokumen ini menjelaskan cara memecahkan masalah umum terkait Mengautentikasi beban kerja ke beban kerja lain melalui mTLS.
Sebelum memulai
-
Siapkan autentikasi, jika Anda belum melakukannya.
Autentikasi adalah proses verifikasi identitas Anda untuk akses ke layanan dan API Google Cloud.
Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke Compute Engine sebagai berikut.
-
Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:
gcloud init
- Menetapkan 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 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, 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 beban kerja, menggunakan salah satu metode berikut:
Jika responsnya adalah kode error
HTTP 404
dengan pesan errorworkload certificate feature not enabled
, berarti VM mendukung identitas workload terkelola, tetapi fitur tersebut tidak diaktifkan. Untuk mengaktifkan fitur pada VM, lihat Mengaktifkan identitas workload terkelola pada 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 memperbarui agen tamu Compute Engine, lihat Memperbarui lingkungan tamu.
Periksa log layanan untuk memverifikasi bahwa
gce-workload-cert-refresh.timer
berhasil mengambil kredensial workload 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 identitas beban kerja terkelola diaktifkan. Jika fitur ini 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 beban kerja, menggunakan salah satu metode berikut:
Periksa konten file
config_status
untuk memastikan bahwa tidak ada error akibat nilai atribut yang tidak ada atau konfigurasi yang tidak valid untuk penerbitan sertifikat atau konfigurasi kepercayaan. Jika terjadi error tersebut, perbarui nilai konfigurasi dengan mengikuti langkah-langkah di artikel Memperbarui penerbitan sertifikat dan konfigurasi kepercayaan.Pastikan izin yang benar diberikan ke identitas workload terkelola di kumpulan workload identity untuk mengakses kumpulan CA subordinate. 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 kumpulan CA subordinate.
- SUBORDINATE_CA_POOL_REGION: region dari kumpulan CA subordinate.
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 dari project Anda.
- POOL_ID adalah ID dari kumpulan workload identity.
Jika Anda tidak melihat output yang serupa dengan contoh sebelumnya, berikan izin yang diperlukan seperti yang dijelaskan di Mengizinkan identitas beban kerja terkelola untuk meminta sertifikat dari kumpulan CA.
Jika file
config_status
tidak berisi pesan error, periksa nilaiiam.googleapis.com/workload-identity
dalam file.Nilainya 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 kumpulan workload identity terkelola.
- POOL_ID adalah ID dari kumpulan workload identity.
- NAMESPACE_ID adalah ID namespace dalam kumpulan identitas workload.
- MANAGED_IDENTITY_ID adalah ID identitas workload yang dikelola.
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 bahwa 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 Layanan Pelanggan Cloud atau kontak Google Cloud Anda yang berisi 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 HTTP
404
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 ini tidak diaktifkan. Buat VM baru dengan fitur tersebut diaktifkan, atau buat template instance dan grup instance terkelola baru.Pastikan izin yang benar telah diberikan ke kumpulan workload identity untuk mengakses kumpulan CA subordinate 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 dari kumpulan CA subordinate.
Output perintah ini harus berisi hal berikut, dengan PROJECT_NUMBER adalah nomor project project Anda dan POOL_ID adalah ID kumpulan workload identity.
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 Mengizinkan identitas beban kerja terkelola untuk meminta sertifikat dari kumpulan CA.
Pastikan nilai
iam.googleapis.com/workload-identity
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 konfigurasi kepercayaan 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.