Dokumen ini menjelaskan cara menyiapkan penyediaan otomatis dan pengelolaan siklus proses identitas beban kerja terkelola untuk Compute Engine. Anda mengonfigurasi kumpulan CA untuk menerbitkan sertifikat menggunakan Certificate Authority Service (CA), yang merupakan layanan Google Cloud yang sangat tersedia dan skalabel yang menyederhanakan dan mengotomatiskan deployment, pengelolaan, dan keamanan layanan CA. Setiap VM disediakan dengan kredensial X.509 dari kumpulan CA yang dikonfigurasi. Kredensial ini kemudian dapat digunakan untuk membuat koneksi mTLS.
Dengan identitas workload terkelola untuk Compute Engine, Anda dapat menerapkan komunikasi yang saling diautentikasi dan dienkripsi antara dua VM Compute Engine. Aplikasi beban kerja yang berjalan di VM yang dikonfigurasi dapat menggunakan kredensial X.509 untuk mTLS per VM. Sertifikat mTLS ini dirotasi dan dikelola secara otomatis untuk Anda oleh Layanan Certificate Authority.
Sebelum memulai
Konfigurasikan Google Cloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Konfigurasikan Google Cloud CLI untuk menggunakan project yang diizinkan untuk penagihan dan kuota.
gcloud config set billing/quota_project PROJECT_ID
Ganti
PROJECT_ID
dengan ID project yang ditambahkan ke daftar yang diizinkan untuk pratinjau identitas beban kerja terkelola.- Tinjau dokumentasi Ringkasan identitas workload terkelola.
-
Enable the Compute Engine API:
gcloud services enable compute.googleapis.com
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan guna membuat VM yang menggunakan sertifikat identitas beban kerja terkelola untuk autentikasi ke beban kerja lain, minta administrator untuk memberi Anda peran IAM berikut pada project:
-
Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1
) -
Service Account User (
roles/iam.serviceAccountUser
)
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Ringkasan
Untuk menggunakan identitas workload terkelola bagi aplikasi, Anda harus melakukan tugas berikut:
Administrator Keamanan:
- Buat identitas workload terkelola di workload identity pool.
- Menentukan kebijakan pengesahan workload.
- Mengonfigurasi Certificate Authority Service untuk menerbitkan sertifikat bagi workload identity terkelola.
- Memberi otorisasi identitas beban kerja terkelola untuk meminta sertifikat dari kumpulan CA.
- Tentukan konfigurasi kepercayaan dan penerbitan sertifikat.
Compute Administrator:
- Dapatkan file konfigurasi untuk mengupload metadata partner.
- Aktifkan identitas workload terkelola untuk workload yang berjalan di Compute Engine:
- Untuk VM perorangan
- Untuk grup instance terkelola (MIG).
- Mengakses kredensial beban kerja di VM Linux.
Mengonfigurasi identitas workload terkelola di Identity and Access Management
Ikuti petunjuk di Mengonfigurasi autentikasi workload identity terkelola .
Petunjuk ini menjelaskan cara menyelesaikan hal berikut:
- Membuat workload identity pool.
- Buat namespace di workload identity pool. Anda menggunakan namespace untuk membuat batasan administratif bagi workload identity terkelola, misalnya, namespace untuk setiap aplikasi yang dimiliki oleh organisasi Anda.
- Buat identitas workload terkelola di namespace dalam workload identity pool. Misalnya, Anda dapat membuat namespace untuk aplikasi dan membuat identitas terkelola dalam namespace tersebut untuk microservice yang mendukung aplikasi tersebut.
- Membuat akun layanan. VM Compute Engine dapat diberi otorisasi untuk menerima identitas workload terkelola berdasarkan akun layanan Google Cloud yang dilampirkan ke VM.
- Buat kebijakan pengesahan beban kerja yang memungkinkan beban kerja Anda diberi kredensial untuk identitas beban kerja terkelola. Agar dapat mengeluarkan kredensial untuk identitas workload terkelola, workload harus berada dalam project tertentu dan memiliki akun layanan yang dilampirkan.
- Konfigurasikan Certificate Authority Service untuk menerbitkan sertifikat bagi identitas workload terkelola:
- Mengonfigurasi kumpulan root CA
- Mengonfigurasi CA bawahan
- Memberi otorisasi identitas workload terkelola untuk meminta sertifikat dari kumpulan CA
Mendapatkan file konfigurasi untuk mengupload metadata partner
Administrator keamanan Anda membuat file JSON yang berisi hal berikut:
- Konfigurasi untuk workload identity
- Konfigurasi penerbitan sertifikat
- Konfigurasi kepercayaan
File ini harus diberi nama CONFIGS.json
. Anda menggunakan file ini saat membuat template instance untuk MIG atau saat membuat VM individual.
File CONFIGS.json
akan terlihat seperti berikut:
{ "wc.compute.googleapis.com": { "entries": { "certificate-issuance-config": { "primary_certificate_authority_config": { "certificate_authority_config": { "ca_pool": "projects/PROJECT_ID/locations/SUBORDINATE_CA_POOL_REGION/caPools/SUBORDINATE_CA_POOL_ID" } }, "key_algorithm": "rsa-2048" }, "trust-config": { "POOL_ID.global.PROJECT_NUMBER.workload.id.goog": { "trust_anchors": [{ "ca_pool": "projects/PROJECT_ID/locations/SUBORDINATE_CA_POOL_REGION/caPools/SUBORDINATE_CA_POOL_ID" }] } } } }, "iam.googleapis.com": { "entries": { "workload-identity": "spiffe://POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID" } } }
Mengaktifkan identitas workload terkelola untuk Grup Instance Terkelola (MIG)
Grup instance terkelola (MIG) adalah grup instance virtual machine (VM) yang Anda perlakukan sebagai satu entity. Setiap VM dalam MIG dibuat menggunakan template instance. Agar VM di MIG dapat menggunakan identitas beban kerja terkelola, Anda harus menentukan konfigurasi di template instance.
Membuat template instance
Buat template instance dengan mengaktifkan fitur workload identity terkelola. Kemudian, gunakan template ini untuk membuat grup instance terkelola (MIG).
gcloud
Gunakan perintah gcloud beta compute instance-templates create
untuk membuat template instance baru yang mengaktifkan workload identity terkelola.
gcloud beta compute instance-templates create INSTANCE_TEMPLATE_NAME \ --service-account SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --metadata enable-workload-certificate=true \ --partner-metadata-from-file CONFIGS.json
Anda dapat menambahkan flag tambahan saat membuat template instance untuk menyesuaikan VM yang dibuatnya, seperti menentukan jenis mesin dan image, bukan menggunakan nilai default.
Ganti kode berikut:
- INSTANCE_TEMPLATE_NAME: nama untuk template baru.
- SERVICE_ACCOUNT_NAME: nama akun layanan yang diizinkan untuk menerima identitas terkelola.
- PROJECT_ID: ID project tempat akun layanan dibuat.
- CONFIGS.json: File konfigurasi yang berisi konfigurasi penerbitan sertifikat, konfigurasi kepercayaan, dan ID workload terkelola.
Untuk mengetahui informasi selengkapnya, lihat Membuat template instance.
Membuat grup instance terkelola dari template
Buat grup instance terkelola yang menggunakan template instance yang mengaktifkan identitas beban kerja terkelola. Untuk mengetahui detail tentang cara membuat template instance, lihat Membuat template instance.
gcloud
Buat MIG menggunakan template instance dan
perintah gcloud compute instance-groups managed create
.
gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \ --size=SIZE \ --template=INSTANCE_TEMPLATE_NAME \ --zone=ZONE
Ganti kode berikut:
- INSTANCE_GROUP_NAME: ID unik untuk grup instance terkelola. Untuk mengetahui detail tentang nama yang valid, lihat Nama resource.
- SIZE: ukuran grup instance terkelola
- INSTANCE_TEMPLATE_NAME: nama template instance yang akan digunakan saat membuat VM di MIG.
- ZONE: zona tempat VM dibuat
Untuk informasi mendetail tentang cara membuat MIG, lihat Skenario dasar untuk membuat grup instance terkelola (MIG)
Mengaktifkan identitas workload terkelola untuk setiap VM
Anda dapat mengaktifkan identitas beban kerja terkelola untuk VM saat membuat VM atau dengan memperbarui metadata partner untuk VM yang ada.
Membuat VM dengan identitas workload terkelola yang diaktifkan
Saat membuat VM, untuk mengaktifkan fitur identitas beban kerja terkelola untuk VM, Anda harus melakukan hal berikut:
- Menentukan akun layanan yang akan digunakan VM
- Tetapkan atribut metadata
enable-workload-certificate
ketrue
Tentukan konfigurasi penerbitan sertifikat dan informasi konfigurasi kepercayaan sebagai metadata partner.
gcloud
Gunakan perintah gcloud beta compute instances create
untuk membuat VM baru. Gunakan file CONFIGS.json
yang disediakan oleh administrator keamanan Anda, atau dibuat dengan mengikuti petunjuk di bagian Membuat file konfigurasi untuk mengupload metadata partner.
Buat VM dengan fitur identitas workload terkelola diaktifkan.
gcloud beta compute instances create INSTANCE_NAME \ --zone=INSTANCE_ZONE \ --service-account SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --metadata enable-workload-certificate=true \ --partner-metadata-from-file CONFIGS.json
Anda dapat menambahkan baris tambahan ke perintah untuk mengonfigurasi VM, seperti jenis mesin dan image, bukan menggunakan nilai default. Untuk mengetahui informasi selengkapnya, baca Membuat dan memulai instance VM.
Ganti kode berikut:
- INSTANCE_NAME: nama unik untuk VM. Untuk mengetahui detail tentang nama instance yang valid, lihat Memberi nama resource.
- INSTANCE_ZONE: zona tempat VM dibuat.
- SERVICE_ACCOUNT_NAME: nama akun layanan yang diizinkan untuk menerima identitas terkelola.
- PROJECT_ID: ID project tempat akun layanan dibuat.
- CONFIGS.json: Nama file konfigurasi yang berisi konfigurasi penerbitan sertifikat, konfigurasi kepercayaan, dan konfigurasi identitas beban kerja terkelola.
Mengaktifkan identitas workload terkelola di VM yang ada
Untuk mengaktifkan identitas beban kerja terkelola bagi VM yang ada, update VM untuk mengonfigurasi hal berikut:
- Jika VM belum memiliki akun layanan yang terpasang, buat dan pasang akun layanan ke VM.
- Tetapkan atribut metadata
enable-workload-certificate
ketrue
. - Tentukan konfigurasi penerbitan sertifikat dan informasi konfigurasi kepercayaan sebagai metadata partner.
Mulai ulang VM.
gcloud
Tugas ini menggunakan file CONFIGS.json
yang disediakan oleh administrator keamanan
Anda, atau dibuat dengan mengikuti petunjuk di
Membuat file konfigurasi untuk mengupload metadata partner.
Jika VM belum memiliki akun layanan yang dilampirkan, lampirkan akun layanan ke VM.
Perbarui metadata untuk VM yang ada guna mengaktifkan Workload Identity terkelola.
gcloud beta compute instances add-metadata VM_NAME \ --zone=ZONE \ --metadata enable-workload-certificate=true
Ganti kode berikut:
- VM_NAME: nama VM
- ZONE: zona tempat VM berada
Perbarui konfigurasi untuk VM yang ada guna menambahkan file konfigurasi.
gcloud beta compute instances update VM_NAME \ --zone=ZONE \ --partner-metadata-from-file CONFIGS.json
Ganti kode berikut:
- VM_NAME: nama VM
- ZONE: zona tempat VM berada
- CONFIGS.json: File konfigurasi yang berisi konfigurasi penerbitan sertifikat, konfigurasi kepercayaan, dan ID workload terkelola.
Menghentikan VM.
gcloud beta compute instances stop VM_NAME \ --zone=ZONE
Ganti kode berikut:
- VM_NAME: nama VM
- ZONE: zona tempat VM berada.
Mulai VM.
gcloud beta compute instances start VM_NAME \ --zone=ZONE
Ganti kode berikut:
- VM_NAME: nama VM
- ZONE: zona tempat VM berada.
Mengakses kredensial workload di VM Linux
Setelah berhasil mengonfigurasi autentikasi workload ke workload menggunakan mTLS, Anda dapat mengakses kredensial yang dikeluarkan di VM.
Ada dua cara untuk mengakses kredensial identitas workload yang dikelola Compute Engine dan paket kepercayaan terkait:
- Sistem file di VM
- Server metadata Compute Engine
Mengakses kredensial workload dan paket kepercayaan menggunakan sistem file di VM
Metode ini menempatkan kredensial X.509 dan paket kepercayaan di jalur tertentu di dalam sistem file VM. Aplikasi dapat langsung membaca kredensial dan paket kepercayaan dari sistem file. Untuk contoh cara mengambil kredensial, lihat contoh berikut di GitHub:
VM harus menjalankan agen tamu Compute Engine versi 20231103.01 atau yang lebih baru. Gunakan perintah berikut untuk memeriksa versi agen tamu Compute Engine di VM Anda:
gcloud beta compute instances get-serial-port-output INSTANCE_NAME \ --zone=ZONE | grep "GCE Agent Started"
Jika versi agen tamu kurang dari 20231103.01, Anda dapat mengupdatenya dengan mengikuti petunjuk di Memperbarui lingkungan tamu.
Agar kredensial workload dan paket kepercayaan tersedia di sistem file VM, selesaikan langkah-langkah berikut:
Instal atau update agen tamu Compute Engine ke versi 20231103.01 atau yang lebih baru. Agen tamu melakukan hal berikut:
- Otomatis mengambil kredensial dan paket kepercayaan dari server metadata Compute Engine.
- Memastikan penulisan atomik ke sistem file saat memperbarui sertifikat X.509 dan kunci pribadi yang sesuai.
- Otomatis memuat ulang kredensial dan paket kepercayaan, misalnya, saat sertifikat mTLS dirotasi.
Setelah Anda menginstal atau mengupdate agen tamu Compute Engine di OS tamu, tugas refresh workload akan membuat direktori
/var/run/secrets/workload-spiffe-credentials
dan menetapkan izin direktori ke0755 (rwxr-xr-x)
.Direktori tersebut berisi file berikut yang dibuat dengan izin
0644 (rw-r--r--)
:private_key.pem
: kunci pribadi berformat PEMcertificates.pem
: paket sertifikat X.509 berformat PEM yang dapat ditampilkan ke VM lain sebagai rantai sertifikat klien, atau digunakan sebagai rantai sertifikat server.ca_certificates.pem
: paket sertifikat X.509 berformat PEM untuk digunakan sebagai anchor kepercayaan saat memvalidasi sertifikat peer.spiffe://POOL_ID.global.PROJECT_NUMBER.workload.id.goog
config_status
: file log yang berisi pesan error.
Aplikasi dapat membaca sertifikat, kunci pribadi, dan paket kepercayaan dari sistem file secara langsung untuk membuat koneksi mTLS.
Mengakses kredensial beban kerja dan paket kepercayaan menggunakan server metadata
Aplikasi yang berjalan di VM Compute Engine dapat langsung mengkueri endpoint server metadata dan mengambil kredensial serta paket kepercayaan. Aplikasi bertanggung jawab untuk memeriksa endpoint server metadata secara berkala untuk menemukan kredensial baru dan update pada trust bundle.
Server metadata Compute Engine mengekspos tiga endpoint HTTP untuk mengaktifkan penggunaan fitur identitas beban kerja terkelola oleh aplikasi yang berjalan di dalam VM.
gce-workload-certificates/config-status
: Endpoint yang berisi error dalam nilai konfigurasi yang diberikan melalui metadata VM.gce-workload-certificates/workload-identities
: Endpoint identitas yang dikelola oleh platform kontrol Compute Engine. Endpoint ini berisi sertifikat X.509 dan kunci pribadi untuk domain kepercayaan VM.gce-workload-certificates/trust-anchors
: Endpoint yang berisi kumpulan sertifikat tepercaya untuk validasi rantai sertifikat X.509 peer.
Untuk mempelajari lebih lanjut cara membuat kueri metadata untuk instance VM, lihat artikel Tentang metadata VM.
Untuk mengakses kredensial workload dan paket kepercayaan menggunakan server metadata, aplikasi Anda harus melakukan hal berikut:
Buat kueri endpoint
gce-workload-certificates/config-status
. Pastikan kode respons HTTP adalah200
dan respons tidak berisi errorpartnerMetadataConfigsErrors
. Jika error tersebut ada, perbarui konfigurasi yang sesuai dengan nilai yang valid dengan mengikuti langkah-langkah yang dibahas di Memperbarui konfigurasi penerbitan dan kepercayaan sertifikat.Untuk memeriksa nilainya, Anda dapat menjalankan perintah berikut di VM:
curl "http://metadata.google.internal/computeMetadata/v1/instance/gce-workload-certificates/config-status" -H "Metadata-Flavor: Google"
Endpoint
config-status
menampilkan respons JSON dengan struktur berikut:{ "partnerMetadataConfigsErrors": { "errors": { // A map of errors keyed by attribute name. "ATTRIBUTE_NAME" : "ERROR_DETAILS", ... } } }
Buat kueri endpoint
gce-workload-certificates/workload-identities
. Pastikan kode respons HTTP adalah200
. Endpoint menampilkan respons JSON dengan struktur berikut:{ "workloadCredentials": { // Credentials for the VM's trust domains "spiffe://POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID": { "certificatePem" : "X.509 certificate or certificate chain", "privateKeyPem" : "Private for X.509 leaf certificate" } } }
Ekstrak
certificatePem
danprivateKeyPem
. Kedua nilai tersebut harus dibaca dari respons yang sama untuk menghindari ketidakcocokan antara kunci pribadi dan publik jika identitas workload terkelola diperbarui oleh infrastruktur Compute Engine.Buat kueri endpoint
gce-workload-certificates/trust-anchors
. Pastikan kode respons HTTP adalah200
. Respons hanya akan berisi anchor kepercayaan untuk domain kepercayaan SPIFFE, jika ditentukan. Jika tidak, kueri akan menampilkan error. Endpointtrust-anchors
menampilkan respons JSON dengan struktur berikut:{ "trustAnchors": { // Trust bundle for the VM's trust domains "POOL_ID.global.PROJECT_NUMBER.workload.id.goog": { "trustAnchorsPem" : "Trust bundle containing the X.509 roots certificates" } } }
Konten
trustAnchorsPem
berisi paket kepercayaan yang kemudian dapat digunakan untuk mengautentikasi kredensial X.509 peer saat membuat koneksi mTLS.
Memperbarui kredensial dan paket kepercayaan
Bidang kontrol Compute Engine secara otomatis merotasi kredensial identitas beban kerja terkelola dan anchor kepercayaan secara berkala.
Jika aplikasi Anda menggunakan sistem file untuk mengakses kredensial workload dan trust bundle, agen tamu Compute Engine akan otomatis memuat ulang kredensial dan trust bundle, misalnya, saat sertifikat mTLS dirotasi.
Jika aplikasi Anda membuat kueri server metadata, aplikasi yang berjalan di VM harus membuat kueri endpoint server metadata secara berkala untuk mendapatkan kumpulan kredensial workload identity terkelola dan paket kepercayaan terbaru. Jika tidak dilakukan, aplikasi dapat rusak karena masa berlaku sertifikat habis atau perubahan pada paket kepercayaan, yang dapat menyebabkan kegagalan pembentukan koneksi mTLS. Google menyarankan agar aplikasi membuat kueri server metadata untuk kredensial workload identity terkelola dan paket kepercayaan setiap 5 menit.
Memperbarui konfigurasi penerbitan dan kepercayaan sertifikat
Anda dapat mengubah konfigurasi penerbitan sertifikat dan konfigurasi kepercayaan untuk VM yang menggunakan workload identity terkelola.
Memperbarui template instance untuk grup instance terkelola
Untuk memperbarui konfigurasi penerbitan sertifikat dan nilai konfigurasi kepercayaan dalam template instance, Anda harus membuat template baru dengan nilai baru. Oleh karena itu, memperbarui konfigurasi penerbitan sertifikat dan konfigurasi kepercayaan untuk grup instance terkelola (MIG) yang ada tidak didukung.
Mengupdate setiap VM Compute Engine
Untuk memperbarui konfigurasi penerbitan sertifikat dan konfigurasi kepercayaan, perbarui
konten file CONFIGS.json
dan gunakan
perintah gcloud beta compute instances update
untuk menerapkan update:
gcloud beta compute instances update INSTANCE_NAME \ --partner-metadata-from-file FILENAME.json
Ganti kode berikut:
- INSTANCE_NAME: Nama VM yang nilai konfigurasinya Anda update
- FILENAME: Nama file konfigurasi yang diubah, misalnya
CONFIGS.json
Memecahkan masalah
Untuk menemukan metode mendiagnosis dan menyelesaikan error umum yang terkait dengan pengambilan kredensial workload, lihat dokumentasi Memecahkan masalah autentikasi workload ke workload.
Langkah selanjutnya
- Pelajari konsep berikut lebih lanjut: