Dokumen ini menjelaskan cara menyiapkan penyediaan otomatis dan pengelolaan siklus proses untuk identitas workload terkelola untuk Compute Engine. Anda mengonfigurasi kumpulan CA untuk menerbitkan sertifikat menggunakan Certificate Authority Service (CA), yang merupakan layanan Google Cloud yang skalabel dan sangat tersedia, 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 beban kerja terkelola untuk Compute Engine, Anda dapat mengimplementasikan komunikasi yang dienkripsi dan dienkripsi bersama antara dua VM Compute Engine. Aplikasi beban kerja yang berjalan pada VM yang dikonfigurasi dapat menggunakan kredensial X.509 untuk mTLS per VM. Sertifikat mTLS ini dirotasi secara otomatis dan dikelola untuk Anda oleh Certificate Authority Service.
Sebelum memulai
Mengonfigurasi Google Cloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Konfigurasi Google Cloud CLI agar menggunakan project yang diizinkan untuk penagihan dan kuota.
gcloud config set billing/quota_project PROJECT_ID
Ganti
PROJECT_ID
dengan ID project yang telah ditambahkan ke daftar yang diizinkan untuk pratinjau identitas workload terkelola.- Tinjau dokumentasi Ringkasan identitas workload terkelola.
-
Aktifkan API Compute Engine:
gcloud services enable compute.googleapis.com
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan guna membuat VM yang menggunakan sertifikat identitas workload terkelola untuk autentikasi ke workload lain, minta administrator untuk memberi Anda peran IAM berikut pada project:
-
Admin Instance Compute (v1) (
roles/compute.instanceAdmin.v1
) -
Service Account User (
roles/iam.serviceAccountUser
)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Ringkasan
Agar dapat menggunakan identitas workload terkelola untuk aplikasi, Anda harus melakukan tugas berikut:
Administrator Keamanan:
- Membuat identitas workload terkelola di kumpulan workload identity.
- Menentukan kebijakan pengesahan workload.
- Mengonfigurasi Certificate Authority Service untuk menerbitkan sertifikat bagi identitas beban kerja yang dikelola.
- Mengizinkan identitas beban kerja terkelola untuk meminta sertifikat dari kumpulan CA.
- Menentukan konfigurasi penerbitan sertifikat dan kepercayaan.
Administrator Compute:
- Dapatkan file konfigurasi untuk mengupload metadata partner.
- Aktifkan identitas workload terkelola untuk workload yang berjalan di Compute Engine:
- Untuk VM individual
- Untuk grup instance terkelola (MIG).
- Mengakses kredensial workload di VM Linux.
Mengonfigurasi identitas workload terkelola di Identity and Access Management
Ikuti petunjuk dalam Mengonfigurasi autentikasi identitas workload terkelola .
Petunjuk ini menjelaskan cara menyelesaikan hal berikut:
- Membuat workload identity pool.
- Buat namespace di kumpulan workload identity. Anda dapat menggunakan namespace untuk membuat batas administratif untuk identitas workload terkelola, misalnya, namespace untuk setiap aplikasi yang dimiliki organisasi Anda.
- Buat identitas workload terkelola dalam namespace di kumpulan workload identity. Misalnya, Anda dapat membuat namespace untuk aplikasi dan membuat identitas terkelola dalam namespace tersebut untuk microservice yang mendukung aplikasi tersebut.
- Buat akun layanan. VM Compute Engine dapat diberi otorisasi untuk menerima identitas workload terkelola berdasarkan akun layanan Google Cloud yang terpasang pada VM.
- Buat kebijakan pengesahan workload yang memungkinkan beban kerja Anda diberi kredensial untuk identitas workload terkelola. Agar menjadi kredensial penerbitan untuk identitas workload terkelola, beban kerja harus berada dalam project yang ditentukan dan memiliki akun layanan yang terkait.
- Konfigurasikan Certificate Authority Service agar dapat menerbitkan sertifikat untuk identitas workload
yang dikelola:
- Mengonfigurasi kumpulan root CA
- Mengonfigurasi subordinate CA
- 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
seharusnya mirip dengan berikut ini:
{ "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 beban kerja terkelola untuk Grup Instance Terkelola (MIG)
Grup instance terkelola (MIG) adalah sekelompok instance virtual machine (VM) yang Anda perlakukan sebagai entitas tunggal. Setiap VM dalam MIG dibuat menggunakan template instance. Agar VM di MIG dapat menggunakan identitas workload terkelola, Anda harus menentukan konfigurasi di template instance.
Membuat template instance
Buat template instance dengan mengaktifkan fitur identitas beban kerja terkelola. Kemudian, gunakan template ini untuk membuat grup instance terkelola (MIG).
gcloud
Gunakan perintah gcloud alpha compute instance-templates create
untuk
membuat template instance baru yang memungkinkan identitas workload terkelola.
gcloud alpha 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 lain 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 identitas workload terkelola.
Untuk mengetahui informasi selengkapnya, baca Membuat template instance.
Membuat grup instance terkelola dari template
Buat grup instance terkelola yang menggunakan template instance yang memungkinkan identitas beban kerja terkelola. Untuk mengetahui detail tentang cara membuat template instance, baca artikel 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 Resource nama.
- SIZE: ukuran grup instance terkelola
- INSTANCE_TEMPLATE_NAME: nama template instance yang akan digunakan saat membuat VM di MIG.
- ZONE: zona untuk membuat VM di
Untuk mengetahui informasi mendetail tentang cara membuat MIG, lihat Skenario dasar untuk membuat grup instance terkelola (MIG)
Mengaktifkan identitas workload terkelola untuk masing-masing VM
Anda dapat mengaktifkan identitas workload terkelola untuk VM baik saat membuat VM maupun dengan memperbarui metadata partner untuk VM yang sudah ada.
Buat VM dengan identitas workload terkelola aktif
Saat membuat VM, guna mengaktifkan fitur identitas workload terkelola untuk VM, Anda harus melakukan hal berikut:
- Tentukan akun layanan untuk VM yang akan digunakan
- Tetapkan atribut metadata
enable-workload-certificate
ketrue
Tentukan konfigurasi penerbitan sertifikat dan informasi konfigurasi kepercayaan sebagai metadata partner.
gcloud
Gunakan perintah gcloud alpha compute instances create
untuk membuat VM baru. Gunakan file CONFIGS.json
yang disediakan oleh administrator
keamanan Anda, atau yang dibuat dengan mengikuti petunjuk dalam
Membuat file konfigurasi untuk mengupload metadata partner.
Buat VM dengan mengaktifkan fitur identitas workload terkelola.
gcloud alpha 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 lebih lanjut, baca bagian Membuat dan memulai instance VM.
Ganti kode berikut:
- INSTANCE_NAME: nama unik untuk VM. Untuk mengetahui detail tentang nama instance yang valid, lihat Resource nama.
- 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 workload terkelola.
Mengaktifkan identitas workload terkelola pada VM yang ada
Untuk mengaktifkan identitas workload terkelola untuk VM yang ada, update VM untuk mengonfigurasi hal berikut:
- Tetapkan atribut metadata
enable-workload-certificate
ketrue
Tentukan konfigurasi penerbitan sertifikat dan informasi konfigurasi kepercayaan sebagai metadata partner.
gcloud
Tugas ini menggunakan file CONFIGS.json
yang disediakan oleh administrator
keamanan Anda, atau dibuat dengan mengikuti petunjuk dalam
Membuat file konfigurasi untuk mengupload metadata partner.
Perbarui konfigurasi untuk VM yang ada guna mengaktifkan identitas workload terkelola.
gcloud alpha compute instances update VM_NAME \ --zone=ZONE \ --metadata enable-workload-certificate=true \ --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 identitas workload terkelola.
Mengakses kredensial workload di VM Linux
Setelah berhasil mengonfigurasi workload ke autentikasi workload menggunakan mTLS, Anda dapat mengakses kredensial yang diterbitkan di VM.
Ada dua cara untuk mengakses kredensial identitas workload terkelola Compute Engine dan paket kepercayaan terkait:
- Sistem file di VM
- Server metadata Compute Engine
Akses kredensial workload dan paket kepercayaan menggunakan sistem file di VM
Metode ini menempatkan kredensial X.509 dan paket kepercayaan di jalur tertentu 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 alpha compute instances get-serial-port-output INSTANCE_NAME \ --zone=ZONE | grep "GCE Agent Started"
Jika versi agen tamu kurang dari 20231103.01, Anda dapat memperbaruinya 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:
- Secara otomatis mengambil kredensial dan paket kepercayaan dari server metadata Compute Engine.
- Memastikan operasi tulis atomik ke sistem file saat memperbarui sertifikat X.509 dan kunci pribadi yang sesuai.
- Memperbarui kredensial dan paket kepercayaan secara otomatis, misalnya, saat sertifikat mTLS dirotasi.
Setelah Anda menginstal atau mengupdate agen tamu Compute Engine di OS tamu, tugas refresh beban kerja 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 trust anchor saat memvalidasi sertifikat pembanding.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 workload dan paket kepercayaan menggunakan server metadata
Aplikasi yang berjalan di VM Compute Engine dapat langsung mengkueri endpoint server metadata serta mengambil kredensial dan paket kepercayaan. Aplikasi bertanggung jawab untuk memeriksa endpoint server metadata secara berkala guna menemukan kredensial baru dan update pada paket kepercayaan.
Server metadata Compute Engine mengekspos tiga endpoint HTTP untuk memungkinkan penggunaan fitur identitas workload 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 bidang 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 pembanding X.509.
Untuk mempelajari lebih lanjut cara membuat kueri metadata untuk instance VM, baca 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 terjadi error tersebut, perbarui konfigurasi yang sesuai dengan nilai yang valid dengan mengikuti langkah-langkah yang dibahas dalam Memperbarui konfigurasi kepercayaan dan penerbitan 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 akan 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 harus dibaca dari respons yang sama untuk menghindari ketidakcocokan antara kunci pribadi dan publik jika identitas workload terkelola dimuat ulang oleh infrastruktur Compute Engine.Buat kueri endpoint
gce-workload-certificates/trust-anchors
. Pastikan kode respons HTTP adalah200
. Respons hanya akan berisi trust anchor 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 peer X.509 saat membuat koneksi mTLS.
Memperbarui kredensial dan paket kepercayaan
Bidang kontrol Compute Engine otomatis merotasi kredensial identitas workload terkelola dan trust anchor secara berkala.
Jika aplikasi Anda menggunakan sistem file untuk mengakses kredensial workload dan paket kepercayaan, agen tamu Compute Engine akan otomatis memperbarui kredensial dan paket kepercayaan, misalnya, saat sertifikat mTLS dirotasi.
Jika aplikasi Anda membuat kueri server metadata, aplikasi yang berjalan di VM harus secara berkala membuat kueri endpoint server metadata untuk mendapatkan kumpulan kredensial identitas workload terkelola dan paket kepercayaan terbaru. Jika hal ini tidak dilakukan, aplikasi dapat terganggu karena masa berlaku sertifikat habis atau perubahan pada paket kepercayaan, yang dapat menyebabkan kegagalan pembentukan koneksi mTLS. Google merekomendasikan agar aplikasi membuat kueri ke server metadata untuk kredensial identitas workload terkelola dan paket kepercayaan setiap 5 menit.
Memperbarui konfigurasi kepercayaan dan penerbitan sertifikat
Anda dapat mengubah konfigurasi penerbitan sertifikat dan konfigurasi kepercayaan untuk VM yang menggunakan identitas workload 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 mengupdate konfigurasi penerbitan sertifikat dan konfigurasi kepercayaan, perbarui
konten file CONFIGS.json
dan gunakan
perintah gcloud alpha compute instances update
untuk menerapkan update tersebut:
gcloud alpha compute instances update INSTANCE_NAME \ --partner-metadata-from-file FILENAME.json
Ganti kode berikut:
- INSTANCE_NAME: Nama VM yang nilai konfigurasinya Anda perbarui
- FILENAME: Nama file konfigurasi yang diubah, misalnya
CONFIGS.json
Memecahkan masalah
Untuk menemukan metode untuk mendiagnosis dan menyelesaikan error umum terkait pengambilan kredensial workload, lihat dokumentasi Memecahkan masalah workload untuk autentikasi workload.
Langkah selanjutnya
- Pelajari konsep berikut lebih lanjut: