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 yang sangat tersedia dan skalabel yang menyederhanakan dan mengotomatiskan deployment, pengelolaan, dan keamanan layanan CA. Google Cloud Setiap VM disediakan dengan kredensial X.509 dari kumpulan CA yang dikonfigurasi. Kredensial ini kemudian dapat digunakan untuk membuat koneksi mTLS.
Sebelum memulai
- Tinjau dokumentasi Ringkasan identitas workload terkelola.
Aktifkan Compute Engine API:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan peran IAM Service Usage Admin (
roles/serviceusage.serviceUsageAdmin), yang berisi izinserviceusage.services.enable. Pelajari cara memberikan peran.gcloud services enable compute.googleapis.com
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan 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 pemberian 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
Dengan managed workload identities untuk Compute Engine, Anda dapat menerapkan komunikasi yang diautentikasi dan dienkripsi secara timbal balik antara dua VM Compute Engine. Aplikasi beban kerja yang berjalan di VM yang dikonfigurasi dapat menggunakan kredensial X.509 untuk mTLS per VM. Agen tamu akan otomatis merotasi sertifikat mTLS ini dan memperbarui kredensial di VM.
Dengan menggunakan identitas workload terkelola, Anda dapat mengelola identitas untuk workload Anda secara terpusat. VM Compute Engine dapat diberi otorisasi untuk menerima identitas beban kerja yang didasarkan pada atribut utama, seperti ID instance, nama instance, atau akun layanan yang terpasang. Agar workload dapat dibuktikan, administrator atau developer komputasi harus membuat instance VM untuk workload dengan nama instance, ID instance, nama akun layanan, atau ID akun layanan yang cocok.
Identitas beban kerja terkelola sesuai dengan
standar Secure Production Identity Framework for Everyone (SPIFFE) open source.
ID SPIFFE untuk workload Google Cloud memiliki format berikut:
spiffe://<TRUST_DOMAIN/ns/NAMESPACE/sa/WORKLOAD_ID.
TRUST_DOMAIN sesuai dengan
kumpulan identitas workload Identity and Access Management (IAM).
Identitas workload terkelola ditentukan dalam workload identity pool, yang bertindak sebagai penampung tingkat teratas untuk menyimpan identitas workload yang memiliki batas kepercayaan yang sama. Dalam workload identity pool, identitas diatur ke dalam batas administratif yang disebut namespace. Agar workload mendapatkan identitas terkelola, Anda harus menentukan kebijakan pengesahan untuk mengotorisasinya. Kebijakan pengesahan workload memastikan bahwa hanya workload tepercaya yang dapat menegaskan identitas terkelola.
Untuk menggunakan identitas workload terkelola bagi aplikasi Anda, Anda harus melakukan tugas berikut:
Administrator Keamanan:
- Buat identitas workload terkelola di workload identity pool.
- Tentukan kebijakan pengesahan workload.
- Konfigurasi Certificate Authority Service untuk menerbitkan sertifikat bagi identitas workload terkelola.
- Memberi otorisasi identitas workload terkelola untuk meminta sertifikat dari kumpulan CA.
- Tentukan konfigurasi penerbitan sertifikat dan kepercayaan dalam workload identity pool.
Compute Administrator:
- Mengonfigurasi instance untuk menggunakan identitas workload untuk instance Compute Engine individual
- Mengakses kredensial workload di instance Linux.
Mengonfigurasi identitas workload terkelola di Identity and Access Management
Ikuti petunjuk di Mengonfigurasi autentikasi identitas workload terkelola .
Petunjuk ini menjelaskan cara menyelesaikan hal berikut:
- Membuat workload identity pool.
- Buat namespace di workload identity pool. Anda menggunakan namespace untuk membuat batas administratif untuk identitas beban kerja 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 mikroservice yang mendukung aplikasi tersebut.
- Opsional: Buat akun layanan untuk membuat aturan pengesahan berdasarkan ID akun layanan.
- Buat kebijakan pengesahan workload yang memungkinkan workload Anda dikeluarkan kredensial untuk identitas workload terkelola. VM Compute Engine dapat diberi otorisasi untuk menerima identitas workload terkelola berdasarkan atribut utama seperti ID instance, nama instance, atau akun layanan yang terpasang.
- Mengonfigurasi Layanan Otoritas Sertifikat untuk menerbitkan sertifikat bagi
identitas workload terkelola:
- Mengonfigurasi kumpulan CA root
- Mengonfigurasi CA subordinat
- Memberi otorisasi managed workload identity pool untuk meminta sertifikat dari CA pool
Mengaktifkan identitas workload terkelola untuk instance komputasi individual
Anda dapat mengaktifkan identitas workload terkelola untuk instance komputasi saat membuat instance atau dengan memperbarui konfigurasi untuk instance yang ada.
Membuat instance dengan identitas workload terkelola yang diaktifkan
Saat membuat instance komputasi, untuk mengaktifkan fitur identitas beban kerja terkelola bagi instance, Anda harus melakukan hal berikut:
- Jika pengesahan instance untuk identitas workload didasarkan pada akun layanan, tentukan akun layanan tersebut
Sertakan flag
--identitydan--identity-certificate
gcloud
Gunakan perintah gcloud alpha compute instances create
untuk membuat instance baru.
Jika Anda menggunakan akun layanan untuk pengesahan, sertakan informasi akun layanan saat membuat instance.
Anda dapat menambahkan baris tambahan ke perintah untuk mengonfigurasi instance, seperti jenis dan image mesin, alih-alih menggunakan nilai default. Untuk mengetahui informasi selengkapnya, lihat Membuat dan memulai instance VM.
gcloud alpha compute instances create INSTANCE_NAME \ --zone=INSTANCE_ZONE \ --service-account SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --identity=//TRUST_DOMAIN/ns/NAMESPACE/sa/WORKLOAD_IDENTIFIER \ --identity-certificate \ ...
Ganti kode berikut:
INSTANCE_NAME: nama unik untuk instance. Untuk mengetahui detail tentang nama instance yang valid, lihat Beri nama resource.INSTANCE_ZONE: zona tempat instance dibuat.SERVICE_ACCOUNT_NAME: nama akun layanan yang diizinkan untuk menerima identitas beban kerja terkelola.PROJECT_ID: ID project tempat akun layanan dibuat.TRUST_DOMAIN: ID untuk domain tepercaya, dalam format berikut:$POOL_ID.global.$PROJECT_NUMBER.workload.id.goog
Nilai domain tepercaya menggunakan placeholder berikut:
POOL_ID: nama workload identity poolPROJECT_NUMBER: nomor project untuk project tempat workload identity pool dibuat
NAMESPACE: nama namespace yang berisi kebijakan pengesahan workload yang mengizinkan workload untuk menegaskan identitas workload terkelolaWORKLOAD_IDENTIFIER: nama managed workload identity yang dibuat di namespace workload identity pool
Mengaktifkan identitas workload terkelola pada instance yang ada
Untuk mengaktifkan identitas workload terkelola bagi instance komputasi yang ada, perbarui instance untuk mengonfigurasi hal berikut:
- Jika pengesahan instance untuk identitas workload didasarkan pada akun layanan dan instance belum memiliki akun layanan yang terpasang, buat dan pasang akun layanan ke instance.
- Aktifkan fitur menggunakan flag
--identity-certificatedan tentukan identitas workload terkelola yang akan digunakan dengan flag--identity. Mulai ulang VM.
gcloud
Gunakan perintah gcloud alpha compute instances update
untuk memperbarui konfigurasi instance.
Jika instance belum memiliki akun layanan yang terlampir, lampirkan akun layanan ke instance.
Perbarui konfigurasi untuk instance yang ada guna mengaktifkan managed workload identities.
gcloud alpha compute instances update INSTANCE_NAME \ --zone=ZONE \ --identity-certificate \ --identity=//TRUST_DOMAIN/ns/NAMESPACE/sa/WORKLOAD_IDENTIFIER
Ganti kode berikut:
INSTANCE_NAME: nama instanceZONE: zona tempat instance beradaTRUST_DOMAIN: ID untuk domain tepercaya, dalam format berikut:none $POOL_ID.global.$PROJECT_NUMBER.workload.id.goog
Nilai domain tepercaya menggunakan placeholder berikut: *
POOL_ID: nama workload identity pool *PROJECT_NUMBER: nomor project untuk project tempat workload identity pool dibuat +NAMESPACE: nama namespace yang berisi kebijakan pengesahan workload yang mengizinkan workload untuk menegaskan identitas workload terkelola +WORKLOAD_IDENTIFIER: nama identitas workload terkelola yang dibuat di namespace workload identity poolMenghentikan VM.
gcloud alpha compute instances stop INSTANCE_NAME \ --zone=ZONE
Ganti kode berikut:
INSTANCE_NAME: nama instanceZONE: zona tempat instance berada
Mulai VM.
gcloud alpha compute instances start INSTANCE_NAME \ --zone=ZONE
Ganti kode berikut:
INSTANCE_NAME: nama instanceZONE: zona tempat instance berada
Mengakses kredensial workload di VM Linux
Setelah Anda membuat dan memulai instance komputasi yang menggunakan identitas workload terkelola, infrastruktur Google Cloud (termasuk Guest Agent) akan otomatis menyediakan dan mengelola rotasi kredensial untuk instance tersebut.
Sertifikat workload, termasuk kunci pribadi dan paket kepercayaan, ditempatkan ke direktori tertentu di sistem file VM: /var/run/secrets/workload-spiffe-credentials. Aplikasi dapat membaca sertifikat, kunci pribadi, dan paket kepercayaan dari sistem file secara langsung untuk membuat koneksi mTLS.
Agen tamu Compute Engine di OS tamu menjalankan tugas refresh workload dan, jika diperlukan, membuat direktori /var/run/secrets/workload-spiffe-credentials. Izin direktori disetel ke 0755 (rwxr-xr-x).
Direktori ini berisi file berikut yang dibuat dengan izin 0644 (rw-r--r--):
private_key.pem: kunci pribadi berformat PEMcertificates.pem: kumpulan 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 tepercaya saat memvalidasi sertifikat peer.spiffe://POOL_ID.global.PROJECT_NUMBER.workload.id.googconfig_status: file log yang berisi pesan error.
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 paket kepercayaan, agen tamu Compute Engine akan otomatis memperbarui kredensial dan paket kepercayaan, misalnya, saat sertifikat mTLS di-rotate.
Memperbarui konfigurasi penerbitan dan kepercayaan sertifikat
Anda dapat mengubah konfigurasi penerbitan sertifikat dan konfigurasi kepercayaan untuk VM yang menggunakan identitas beban kerja terkelola.
Memperbarui VM Compute Engine satu per satu
Untuk memperbarui konfigurasi penerbitan sertifikat dan konfigurasi kepercayaan, Anda harus memperbarui
workload identity pool. Gunakan
perintah gcloud alpha iam workload-identity-pools update,
seperti yang ditunjukkan dalam contoh berikut:
gcloud alpha iam workload-identity-pools update WORKLOAD_IDENTITY_POOL_ID \
--location="global" \
--inline-certificate-issuance-config-file=CIC_JSON_FILE_PATH \
--inline-trust-config-file=TC_JSON_FILE_PATH \
--project=PROJECT_ID
Ganti kode berikut:
WORKLOAD_IDENTITY_POOL_ID: ID workload identity pool.CIC_JSON_FILE_PATH: Jalur ke file konfigurasi penerbitan sertifikat berformat JSON baru (cic.json).TC_JSON_FILE_PATH: Opsional: Jalur ke file konfigurasi kepercayaan berformat JSON baru (tc.json). Jika beban kerja Anda melakukan autentikasi di berbagai domain kepercayaan, Anda harus menentukan file ini. Jika tidak, Anda dapat menghilangkan setelan--inline-trust-config.PROJECT_ID: Nama project Google Cloud Anda.
Memecahkan masalah
Untuk menemukan metode mendiagnosis dan menyelesaikan error umum terkait pengambilan kredensial workload, lihat dokumentasi Memecahkan masalah autentikasi workload ke workload.
Untuk memecahkan masalah terkait konfigurasi yang salah pada kumpulan atau kebijakan pengesahan, lihat log audit untuk kumpulan identitas beban kerja.
Langkah berikutnya
- Pelajari konsep berikut lebih lanjut: