Dokumen ini menjelaskan cara mengonfigurasi identitas workload terkelola pada layanan backend load balancer. Setelah Anda menetapkan identitas terkelola, load balancer dan backend-nya dapat saling mengautentikasi dengan menggunakan mTLS backend.
Untuk mengonfigurasi mTLS backend menggunakan managed workload identity, Anda harus memiliki workload identity pool yang dikonfigurasi.
Jika tidak memiliki workload identity pool yang dikonfigurasi, Anda harus menyiapkan workload identity pool, lalu melampirkan managed workload identity ke layanan backend load balancer.
Siapkan workload identity pool.
- Konfigurasi kumpulan otoritas sertifikat (CA) Certificate Authority Service untuk menerbitkan sertifikat X.509 bagi identitas workload terkelola.
- Konfigurasi domain tepercaya dengan membuat workload identity pool dengan namespace, identitas terkelola, kebijakan pengesahan, resource konfigurasi penerbitan sertifikat inline, dan resource konfigurasi kepercayaan inline.
- Memberi otorisasi identitas workload terkelola untuk meminta sertifikat dari kumpulan CA.
Hubungkan workload identity terkelola ke layanan backend load balancer.
Contoh dalam dokumen ini akan memandu Anda melalui proses penyiapan workload identity pool baru, diikuti dengan melampirkan identitas workload terkelola ke layanan backend load balancer.
Jika sudah memiliki workload identity pool, Anda dapat mengikuti pendekatan berikut:
Anda dapat menambahkan kebijakan pengesahan baru untuk resource layanan backend load balancer agar dapat berpartisipasi dalam workload identity pool.
Hubungkan workload identity terkelola ke layanan backend load balancer.
Sebelum memulai
Buat atau pilih Google Cloud project.
Peran yang diperlukan untuk memilih atau membuat project
- Pilih project: Memilih project tidak memerlukan peran IAM tertentu—Anda dapat memilih project mana pun yang telah diberi peran.
-
Membuat project: Untuk membuat project, Anda memerlukan peran Pembuat Project
(
roles/resourcemanager.projectCreator), yang berisi izinresourcemanager.projects.create. Pelajari cara memberikan peran.
-
Buat Google Cloud project:
gcloud projects create PROJECT_ID
Ganti
PROJECT_IDdengan nama untuk Google Cloud project yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_IDdengan nama project Google Cloud Anda.
Tinjau dokumen ringkasan mTLS backend dengan identitas workload terkelola.
Pelajari penerbitan sertifikat menggunakan Certificate Authority Service.
Aktifkan IAM, Certificate Authority Service, Compute Engine, Certificate Manager, dan Network Security 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 iam.googleapis.com
privateca.googleapis.com compute.googleapis.com certificatemanager.googleapis.com networksecurity.googleapis.com Konfigurasi Google Cloud CLI untuk menggunakan project yang ditambahkan ke daftar yang diizinkan untuk penagihan dan kuota.
gcloud config set billing/quota_project PROJECT_ID
Ganti
PROJECT_IDdengan nama project Google Cloud Anda.Buat identitas terkelola untuk backend. Untuk mempelajari lebih lanjut, lihat Ringkasan identitas workload terkelola.
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan untuk membuat identitas beban kerja terkelola dan menyediakan sertifikat identitas beban kerja terkelola, minta administrator Anda untuk memberi Anda peran IAM berikut pada project:
-
Untuk membuat dan mengonfigurasi identitas workload terkelola:
- Admin IAM Workload Identity Pool (
roles/iam.workloadIdentityPoolAdmin) - Service Account Admin (
roles/iam.serviceAccountAdmin)
- Admin IAM Workload Identity Pool (
-
Untuk membuat dan mengonfigurasi kumpulan CA:
CA Service Admin (
roles/privateca.admin) -
Untuk membuat resource load balancer seperti
TargetHTTPSProxy: Compute Load Balancer Admin (roles/compute.loadBalancerAdmin) -
Untuk menggunakan resource Certificate Manager:
Pemilik Certificate Manager (
roles/certificatemanager.owner) -
Untuk membuat komponen keamanan dan jaringan:
- Compute Network Admin (
roles/compute.networkAdmin) - Compute Security Admin (
roles/compute.securityAdmin)
- Compute Network Admin (
-
Untuk membuat project (opsional):
Project Creator (
roles/resourcemanager.projectCreator)
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.
Mengonfigurasi CA Service untuk menerbitkan sertifikat bagi identitas workload terkelola
Anda dapat menggunakan kumpulan CA untuk menyiapkan CA root. Pool CA menerbitkan sertifikat X.509 ke identitas workload terkelola.
Buat kumpulan CA root
Buat kumpulan CA root di tingkat Enterprise menggunakan
perintah gcloud privateca pools create.
Tingkat ini ditujukan untuk penerbitan sertifikat yang berumur panjang dan bervolume rendah.
gcloud privateca pools create ROOT_CA_POOL_ID \
--location=REGION \
--project=PROJECT_ID \
--tier=enterprise
Ganti kode berikut:
ROOT_CA_POOL_ID: ID unik untuk pool CA rootREGION: region tempat root CA pool beradaPROJECT_ID: the project ID
Untuk mempelajari lebih lanjut kumpulan CA, lihat Membuat kumpulan CA.
Membuat CA root
Buat CA root di kumpulan CA root menggunakan
perintah gcloud privateca roots create.
Untuk membuat CA root, jalankan perintah berikut:
gcloud privateca roots create ROOT_CA_ID \
--pool=ROOT_CA_POOL_ID \
--subject="CN=ROOT_CA_CN, O=ROOT_CA_ORGANIZATION" \
--key-algorithm="KEY_ALGORITHM" \
--location=REGION \
--project=PROJECT_ID \
--auto-enable
Ganti kode berikut:
ROOT_CA_ID: nama unik untuk CA root. Nama CA dapat memiliki panjang hingga 64 karakter dan hanya boleh berisi karakter alfanumerik huruf kecil dan huruf besar, garis bawah, atau tanda hubung. Nama CA harus unik dalam region.ROOT_CA_POOL_ID: ID pool CA root.ROOT_CA_CN: nama umum CA root.ROOT_CA_ORGANIZATION: organisasi CA root.KEY_ALGORITHM: algoritma yang akan digunakan untuk membuat kunci Cloud KMS. Flag ini bersifat opsional. Jika Anda tidak menyertakan flag ini, algoritma kunci akan ditetapkan secara default kersa-pkcs1-4096-sha256.REGION: region tempat kumpulan CA root berada.PROJECT_ID: project ID.
Untuk mempelajari lebih lanjut CA root, lihat Membuat CA root.
Mengonfigurasi workload identity pool
Saat Anda menggunakan identitas beban kerja terkelola, Google Cloud dapat menyediakan dan mengelola sertifikat X.509 secara otomatis dari Certificate Authority Service. Workload identity ditentukan dalam workload identity pool, dan diatur ke dalam batas administratif yang disebut namespace.
Membuat workload identity pool
Anda harus membuat pool dalam mode TRUST_DOMAIN untuk membuat identitas workload terkelola. Untuk membuat workload identity pool bagi workload identity terkelola, gunakan perintah gcloud iam workload-identity-pools create.
gcloud iam workload-identity-pools create WORKLOAD_IDENTITY_POOL_ID \
--location="global" \
--mode="TRUST_DOMAIN"
Ganti WORKLOAD_IDENTITY_POOL_ID dengan ID unik untuk
pool. ID harus terdiri dari 4 hingga 32 karakter, hanya berisi karakter alfanumerik huruf kecil dan tanda pisah, serta harus diawali dan diakhiri dengan karakter alfanumerik. Setelah membuat workload identity pool, Anda tidak dapat mengubah ID-nya.
Untuk memverifikasi bahwa workload identity pool Anda dibuat dalam mode
TRUST_DOMAIN, gunakan perintah
gcloud iam workload-identity-pools describe.
gcloud iam workload-identity-pools describe WORKLOAD_IDENTITY_POOL_ID \
--location="global"
Outputnya mirip dengan hal berikut ini:
mode: TRUST_DOMAIN name: projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID state: ACTIVE
Output ini mencakup nilai-nilai berikut:
PROJECT_NUMBER: nomor project Google Cloud AndaWORKLOAD_IDENTITY_POOL_ID: ID workload identity pool
Buat namespace
Perintah gcloud iam workload-identity-pools namespaces create
memungkinkan Anda membuat namespace di workload identity pool.
gcloud iam workload-identity-pools namespaces create NAMESPACE_ID \
--workload-identity-pool="WORKLOAD_IDENTITY_POOL_ID" \
--location="global"
Ganti kode berikut:
NAMESPACE_ID: ID unik untuk namespace. ID harus terdiri dari 2 hingga 63 karakter, hanya berisi karakter alfanumerik huruf kecil dan tanda pisah, serta harus diawali dan diakhiri dengan karakter alfanumerik. Setelah membuat namespace, Anda tidak dapat mengubah ID-nya.WORKLOAD_IDENTITY_POOL_ID: ID workload identity pool yang telah Anda buat sebelumnya.
Membuat identitas workload terkelola
Perintah gcloud iam workload-identity-pools managed-identities create
memungkinkan Anda membuat identitas workload terkelola di namespace workload identity pool.
gcloud iam workload-identity-pools managed-identities create MANAGED_IDENTITY_ID \
--namespace="NAMESPACE_ID" \
--workload-identity-pool="WORKLOAD_IDENTITY_POOL_ID" \
--location="global"
Ganti kode berikut:
MANAGED_IDENTITY_ID: ID unik untuk identitas terkelola. Panjang ID harus antara 2 hingga 63 karakter, hanya berisi karakter alfanumerik huruf kecil dan tanda pisah, serta harus diawali dan diakhiri dengan karakter alfanumerik. Setelah membuat identitas beban kerja terkelola, Anda tidak dapat mengubah ID-nya.NAMESPACE_ID: ID namespace yang Anda buat sebelumnya.WORKLOAD_IDENTITY_POOL_ID: ID workload identity pool yang Anda buat sebelumnya.
ID identitas beban kerja terkelola Anda adalah ID SPIFFE, yang diformat sebagai berikut:
spiffe://WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
Membuat kebijakan pengesahan
Dalam contoh ini, kebijakan pengesahan berisi aturan pengesahan yang memverifikasi apakah layanan backend adalah bagian dari project tertentu. Jika verifikasi kebijakan pengesahan berhasil, IAM akan meminta sertifikat X.509 untuk identitas terkelola dari Layanan Otoritas Sertifikat.
Untuk membuat kebijakan pengesahan, jalankan perintah berikut untuk menambahkan aturan pengesahan.
gcloud iam workload-identity-pools managed-identities add-attestation-rule MANAGED_IDENTITY_ID \
--namespace=NAMESPACE_ID \
--workload-identity-pool=WORKLOAD_IDENTITY_POOL_ID \
--google-cloud-resource='//compute.googleapis.com/projects/PROJECT_NUMBER/type/BackendService/*' \
--location=global
Ganti kode berikut:
MANAGED_IDENTITY_ID: ID unik untuk identitas terkelola. ID harus terdiri dari 2 hingga 63 karakter, hanya berisi karakter alfanumerik huruf kecil dan tanda pisah, serta harus diawali dan diakhiri dengan karakter alfanumerik. Setelah membuat identitas beban kerja terkelola, Anda tidak dapat mengubah ID-nya.NAMESPACE_ID: ID namespace yang Anda buat sebelumnya.WORKLOAD_IDENTITY_POOL_ID: ID workload identity pool yang Anda buat sebelumnya.PROJECT_NUMBER: nomor project Google Cloud project.
Membuat konfigurasi penerbitan sertifikat inline
Untuk mengikat CA ke workload identity pool, workload identity pool harus memiliki konfigurasi penerbitan sertifikat inline.
Untuk mengonfigurasi konfigurasi penerbitan sertifikat inline, buat file konfigurasi berformat JSON (cic.json).
cat << EOF > cic.json
{
"inlineCertificateIssuanceConfig": {
"caPools": {
"REGION": "projects/PROJECT_NUMBER/locations/REGION/caPools/ROOT_CA_POOL_ID",
},
"lifetime": "CERTIFICATE_LIFETIME",
"rotationWindowPercentage": ROTATION_WINDOW_PERCENTAGE,
"keyAlgorithm": "ALGORITHM"
}
}
EOF
Ganti kode berikut:
REGION: region tempat CA berada.PROJECT_NUMBER: nomor project. Untuk mendapatkan nomor project dari project yang ditentukan oleh variabelPROJECT_ID, jalankan perintah berikut:gcloud projects describe PROJECT_ID --format="value(projectNumber)"
ROOT_CA_POOL_ID: ID pool CA root.CERTIFICATE_LIFETIME: masa aktif sertifikat workload yang dikeluarkan oleh CA pool dalam detik—misalnya: 86400s (untuk 24 jam).CERTIFICATE_LIFETIMEharus berupa nilai antara 24 jam dan 30 hari. JikaCERTIFICATE_LIFETIMEtidak ditentukan, masa berlaku sertifikat ditetapkan secara default ke 24 jam.CERTIFICATE_LIFETIMEbersifat opsional.ROTATION_WINDOW_PERCENTAGE: persentase masa aktif sertifikat saat perpanjangan dipicu. NilaiROTATION_WINDOW_PERCENTAGEharus antara 50 dan 80. Jumlah default-nya adalah 50.ROTATION_WINDOW_PERCENTAGEbersifat opsional.ALGORITHM: algoritma enkripsi yang digunakan untuk membuat kunci pribadi. Nilai yang valid untukALGORITHMadalahECDSA_P256(default),ECDSA_P384,RSA_2048,RSA_3072, danRSA_4096.ALGORITHMbersifat opsional.
Setelah membuat file konfigurasi penerbitan sertifikat inline, Anda perlu memperbarui workload identity pool dengan konfigurasi penerbitan sertifikat CA.
Membuat konfigurasi kepercayaan inline (Opsional)
Semua beban kerja dalam domain tepercaya menerima sertifikat dan anchor kepercayaan yang memungkinkan autentikasi secara default dalam domain tepercaya. Jika Anda ingin beban kerja yang berada di domain tepercaya berbeda saling mengautentikasi, maka Anda harus secara eksplisit menyatakan hubungan kepercayaan di pool identitas beban kerja. Anda dapat melakukannya dengan membuat konfigurasi kepercayaan inline yang mengenali dan menerima sertifikat dari domain kepercayaan lain.
File konfigurasi kepercayaan inline berisi serangkaian anchor kepercayaan yang digunakan oleh managed workload identity untuk memvalidasi sertifikat peer. File konfigurasi kepercayaan memetakan domain kepercayaan SPIFFE ke sertifikat CA.
Untuk membuat konfigurasi kepercayaan inline, lakukan hal berikut:
Download sertifikat untuk domain tepercaya.
gcloud privateca pools get-ca-certs ROOT_CA_POOL_ID \ --output-file=CERTIFICATE_PATH \ --location=REGIONGanti kode berikut:
ROOT_CA_POOL_ID: ID pool CA rootCERTIFICATE_PATH: jalur tujuan untuk menghasilkan sertifikat yang dienkode PEMREGION: region pool CA root
Buat file konfigurasi berformat JSON (
tc.json) yang berisi konfigurasi kepercayaan inline Anda, dengan sertifikat berformat PEM yang Anda download pada langkah sebelumnya.cat << EOF > tc.json { "inlineTrustConfig": { "additionalTrustBundles": { "TRUST_DOMAIN_NAME1": { "trustAnchors": [ { "pemCertificate": "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL1\n-----END CERTIFICATE-----" }, { "pemCertificate": "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL2\n-----END CERTIFICATE-----" } ] }, "TRUST_DOMAIN_NAME2": { "trustAnchors": [ { "pemCertificate": "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL3\n-----END CERTIFICATE-----" }, { "pemCertificate": "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL4\n-----END CERTIFICATE-----" } ] } } } } EOFGanti kode berikut:
TRUST_DOMAIN_NAME: domain tepercaya dapat berupa domain tepercaya apa pun (seperti "example.com"), termasuk domain tepercaya workload identity pool lain (atau bahkan yang sama).Untuk domain tepercaya workload identity pool, nama domain tepercaya diformat sebagai berikut:
WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog
Dalam format, ganti kode berikut:
WORKLOAD_IDENTITY_POOL_ID: ID workload identity poolPROJECT_NUMBER: nomor project dari project yang berisi workload identity pool
CERTIFICATE_MATERIAL: sertifikat CA berformat PEM yang dipercaya untuk menerbitkan sertifikat dalam domain tepercaya. Perintah berikut dapat digunakan untuk mengenkode file sertifikat berformat PEM menjadi string satu baris:cat trust-anchor.pem | sed 's/^[ ]*//g' | sed -z '$ s/\n$//' | tr '\n' $ | sed 's/\$/\\n/g'
Setelah membuat konfigurasi kepercayaan inline, Anda perlu memperbarui workload identity pool dengan konfigurasi kepercayaan.
Memperbarui workload identity pool
Untuk mengikat CA ke workload identity pool, Anda perlu memperbarui workload identity pool dengan konfigurasi penerbitan sertifikat CA menggunakan flag --inline-certificate-issuance-config-file. Jika telah membuat
konfigurasi kepercayaan inline, Anda perlu memperbarui workload identity pool
dengan konfigurasi kepercayaan menggunakan tanda --inline-trust-config-file.
gcloud 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 berformat JSON (cic.json) untuk konfigurasi penerbitan sertifikat inline yang Anda buat sebelumnya.TC_JSON_FILE_PATH: jalur ke file konfigurasi berformat JSON (tc.json) untuk konfigurasi kepercayaan inline yang Anda buat sebelumnya. Jika workload Anda melakukan autentikasi di berbagai domain tepercaya, Anda harus menentukan file ini. Jika tidak, Anda dapat menghilangkan--inline-trust-config.
Verifikasi bahwa workload identity pool telah diperbarui
Untuk memverifikasi bahwa workload identity pool Anda telah diupdate dengan konfigurasi penerbitan sertifikat dan konfigurasi kepercayaan, jalankan perintah berikut:
gcloud iam workload-identity-pools describe WORKLOAD_IDENTITY_POOL_ID \
--location="global" \
--project=PROJECT_ID
Ganti kode berikut:
WORKLOAD_IDENTITY_POOL_ID: ID workload identity pool.PROJECT_ID: the project ID
Outputnya mirip dengan hal berikut ini:
inlineCertificateIssuanceConfig:
caPools:
REGION: projects/PROJECT_NUMBER/locations/REGION1/caPools/ROOT_CA_POOL_ID
keyAlgorithm: ALGORITHM
lifetime: CERTIFICATE_LIFETIME
rotationWindowPercentage: ROTATION_WINDOW_PERCENTAGE
inlineTrustConfig:
additionalTrustBundles:
TRUST_DOMAIN_NAME1:
trustAnchors:
- pemCertificate: |-
-----BEGIN CERTIFICATE-----
CERTIFICATE_MATERIAL1
-----END CERTIFICATE-----
- pemCertificate: |-
-----BEGIN CERTIFICATE-----
CERTIFICATE_MATERIAL2
-----END CERTIFICATE-----
TRUST_DOMAIN_NAME2:
trustAnchors:
- pemCertificate: |-
-----BEGIN CERTIFICATE-----
CERTIFICATE_MATERIAL3
-----END CERTIFICATE-----
- pemCertificate: |-
-----BEGIN CERTIFICATE-----
CERTIFICATE_MATERIAL4
-----END CERTIFICATE-----
mode: TRUST_DOMAIN
name: projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID
state: ACTIVE
Output ini mencakup nilai-nilai berikut:
PROJECT_NUMBER: nomor projectREGION: region tempat root CA pool beradaROOT_CA_POOL_ID: ID pool CA rootALGORITHM: algoritma enkripsi yang digunakan untuk membuat kunci pribadiCERTIFICATE_LIFETIME: masa aktif sertifikat workload yang dikeluarkan oleh CA pool dalam detikROTATION_WINDOW_PERCENTAGE: persentase masa aktif sertifikat saat perpanjangan dipicu.TRUST_DOMAIN_NAME: domain tepercaya dapat berupa domain tepercaya apa pun (seperti "example.com"), termasuk domain tepercaya workload identity pool lain (atau bahkan yang sama).CERTIFICATE_MATERIAL: sertifikat CA berformat PEM yang dipercaya untuk menerbitkan sertifikat di domain tepercayaWORKLOAD_IDENTITY_POOL_ID: ID workload identity pool
Jika inlineCertificateIssuanceConfig atau inlineTrustConfig
tidak ada dalam output, pastikan Anda telah mengonfigurasi
gcloud CLI dengan benar untuk menggunakan project yang tepat untuk penagihan dan kuota.
Anda mungkin perlu mengupdate ke gcloud CLI versi yang lebih baru.
Memberi otorisasi identitas workload terkelola untuk meminta sertifikat dari kumpulan CA
Setelah mengikat CA ke workload identity pool, Anda perlu memberi otorisasi identitas workload terkelola untuk meminta sertifikat dari kumpulan CA.
Berikan peran CA Service Workload Certificate Requester (
roles/privateca.workloadCertificateRequester) ke domain tepercaya. Peran ini mengizinkan domain tepercaya untuk meminta sertifikat dari rantai sertifikat CA Service.gcloud privateca pools add-iam-policy-binding ROOT_CA_POOL_ID \ --location=REGION \ --role=roles/privateca.workloadCertificateRequester \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID" \ --project=PROJECT_IDGanti kode berikut:
ROOT_CA_POOL_ID: ID untuk kumpulan CA rootREGION: region pool CA rootPROJECT_NUMBER: nomor projectUntuk mendapatkan
PROJECT_NUMBERdariPROJECT_ID, jalankan perintah berikut:gcloud projects describe PROJECT_ID --format="value(projectNumber)"
WORKLOAD_IDENTITY_POOL_ID: ID workload identity poolPROJECT_ID: the project ID
Berikan peran CA Service Pool Reader (
roles/privateca.poolReader) ke domain tepercaya. Peran ini memberi otorisasi pada domain tepercaya untuk mendapatkan sertifikat X.509 yang ditandatangani dari rantai sertifikat CA.gcloud privateca pools add-iam-policy-binding ROOT_CA_POOL_ID \ --location=REGION \ --role=roles/privateca.poolReader \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID" \ --project=PROJECT_IDGanti kode berikut:
ROOT_CA_POOL_ID: ID pool CA rootREGION: region pool CA rootPROJECT_NUMBER: nomor projectWORKLOAD_IDENTITY_POOL_ID: ID workload identity poolPROJECT_ID: the project ID
Buat load balancer dan tetapkan identitas terkelola ke layanan backend
Identitas terkelola hanya dapat ditetapkan saat membuat layanan backend.
Langkah-langkah di bagian ini hanya berkaitan dengan penetapan identitas terkelola ke layanan backend load balancer. Ini adalah bagian dari konfigurasi backend load balancer.
Untuk menyiapkan load balancer Load Balancer Aplikasi eksternal global, ikuti langkah-langkah di Menyiapkan Load Balancer Aplikasi eksternal global dengan backend grup instance VM. Pada tahap saat Anda menyiapkan layanan backend load balancer, Anda juga perlu melakukan hal berikut:
Konsol
Di konsol Google Cloud , buka halaman Load balancing.
Di bagian Backend configuration, tambahkan detail yang relevan untuk membuat layanan backend.
Luaskan bagian Advanced configurations.
Di bagian Backend authentication, pilih opsi Managed Identity.
Untuk menetapkan identitas terkelola ke layanan backend, di kolom Managed Identity, masukkan identitas workload terkelola yang Anda buat sebelumnya.
Klik Create.
Lanjutkan langkah-langkah seperti yang diuraikan dalam Menyiapkan load balancer untuk menyelesaikan konfigurasi load balancer.
gcloud
Untuk menetapkan identitas terkelola ke layanan backend, tambahkan flag
--identitysaat menggunakan perintahgcloud beta compute backend-services create.gcloud beta compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTPS \ --health-checks=HEALTH_CHECK_NAME \ --identity='//WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID' \ --globalGanti kode berikut:
BACKEND_SERVICE_NAME: nama layanan backendHEALTH_CHECK_NAME: nama health checkWORKLOAD_IDENTITY_POOL_ID: ID workload identity poolPROJECT_NUMBER: nomor projectNAMESPACE_ID: ID namespaceMANAGED_IDENTITY_ID: ID identitas terkelola
Sumber daya yang dibuat secara otomatis
Setelah identitas terkelola dikonfigurasi di layanan backend load balancer, resource berikut akan dibuat secara otomatis oleh identitas workload terkelola:
- Konfigurasi autentikasi backend: dilampirkan ke layanan backend load balancer
- Sertifikat identitas yang dikelola Certificate Manager: dilampirkan ke konfigurasi autentikasi backend
- Konfigurasi kepercayaan Certificate Manager: dilampirkan ke konfigurasi autentikasi backend
Bagian berikut terkait dengan memverifikasi konfigurasi Anda untuk memeriksa apakah resource yang dibuat secara otomatis telah dikonfigurasi.
Verifikasi konfigurasi Anda
Verifikasi konfigurasi Anda untuk memeriksa apakah resource yang dibuat secara otomatis telah dikonfigurasi.
Resource yang dibuat secara otomatis memiliki awalan mi, yang menunjukkan bahwa
resource tersebut dibuat oleh identitas workload terkelola.
Verifikasi pembuatan konfigurasi autentikasi backend dan identitas terkelola
Untuk memverifikasi pembuatan
konfigurasi autentikasi backend dan identitas terkelola, gunakan
perintah gcloud beta compute backend-services describe untuk
mendeskripsikan layanan backend.
gcloud beta compute backend-services describe BACKEND_SERVICE_NAME --global
Outputnya mirip dengan hal berikut ini:
affinityCookieTtlSec: 0 connectionDraining: drainingTimeoutSec: 0 creationTimestamp: '2025-11-06T02:15:43.680-08:00' description: '' enableCDN: false fingerprint: lTZwas8aylg= healthChecks: - https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/healthChecks/HEALTH_CHECK_NAME id: '719352032' kind: compute#backendService loadBalancingScheme: EXTERNAL_MANAGED name: BACKEND_SERVICE_NAME port: 80 portName: PORT_NAME protocol: HTTPS selfLink: https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE_NAME sessionAffinity: NONE timeoutSec: 30 tlsSettings: authenticationConfig: //networksecurity.googleapis.com/projects/PROJECT_ID/locations/global/backendAuthenticationConfigs/mi-bac-423b651f-d549-4a9f-a4f2-g2bcaa7108bd identity: //WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
Output ini mencakup nilai-nilai berikut:
PROJECT_ID: the project IDHEALTH_CHECK_NAME: nama health checkBACKEND_SERVICE_NAME: nama layanan backend.PORT_NAME: nama portREGION: region tempat root CA pool beradaWORKLOAD_IDENTITY_POOL_ID: ID workload identity poolPROJECT_NUMBER: nomor projectNAMESPACE_ID: ID namespaceMANAGED_IDENTITY_ID: ID identitas terkelola
Konfigurasi autentikasi backend dibuat secara otomatis dan dilampirkan ke
kolom backendService.tlsSettings.authenticationConfig.
Konfigurasi autentikasi backend
yang dimulai dengan awalan mi disebut sebagai
MI_BACKEND_AUTHENTICATION_CONFIG_ID di bagian berikut.
Identitas workload terkelola juga dilampirkan ke kolom
backendService.tlsSettings.identity. Formatnya adalah sebagai berikut:
//WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
Verifikasi pembuatan sertifikat identitas terkelola Certificate Manager dan konfigurasi kepercayaan Certificate Manager
Untuk memverifikasi bahwa
sertifikat identitas terkelola Certificate Manager
dan konfigurasi kepercayaan Certificate Manager dilampirkan ke
resource konfigurasi autentikasi backend, gunakan
perintah gcloud network-security backend-authentication-configs describe.
gcloud network-security backend-authentication-configs describe MI_BACKEND_AUTHENTICATION_CONFIG_ID \
--location=global
Outputnya mirip dengan hal berikut ini:
clientCertificate: projects/PROJECT_NUMBER/locations/global/certificates/mi-crt-181fa461-3b53-40fa-8515-507d47337c5d createTime: '2025-11-06T10:15:56.237734973Z' etag: xwyxl1VYVoh4QIwf3nhKhAVXgcuOqoN7xdqAiS8Esvs name: projects//locations/global/backendAuthenticationConfigs/mi-bac-477b381f-d349-4a8f-a6f2-f2bbaa7109bd trustConfig: projects/PROJECT_NUMBER/locations/global/trustConfigs/mi-tc-e4f05160-f20f-4109-aae3-4c1a68891742 updateTime: '2025-11-06T10:16:01.964275141Z'
clientCertificate dan trustConfig dibuat secara otomatis oleh
Managed Workload Identity dan dilampirkan ke
resource konfigurasi autentikasi backend.
clientCertificate yang dimulai dengan awalan mi disebut sebagai
MI_CLIENT_CERTIFICATE_ID di bagian berikut.
trustConfig yang dimulai dengan awalan mi disebut sebagai
MI_TRUST_CONFIG_ID di bagian berikut.
Pastikan bahwa sertifikat Certificate Manager adalah sertifikat identitas terkelola
Untuk melihat detail sertifikat identitas terkelola Certificate Manager, gunakan perintah gcloud certificate-manager certificates describe.
gcloud certificate-manager certificates describe MI_CLIENT_CERTIFICATE_ID
Outputnya mirip dengan hal berikut ini:
createTime: '2025-11-06T10:15:46.187892797Z' expireTime: '2025-11-07T22:55:47Z' extendedKeyUsage: clientAuth: true managedIdentity: identity: //WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID state: ACTIVE name: projects/PROJECT_ID/locations/global/certificates/mi-crt-181fa461-3b53-40fa-8515-507d47337c5d pemCertificate: -----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL\n-----END CERTIFICATE----- scope: CLIENT_AUTH updateTime: '2025-11-06T10:15:49.427339950Z' usedBy: - name: //networksecurity.googleapis.com/projects/PROJECT_NUMBER/locations/global/backendAuthenticationConfigs/mi-bac-477b381f-d349-4a8f-a6f2-f2bbaa7109bd
Output ini mencakup nilai-nilai berikut:
WORKLOAD_IDENTITY_POOL_ID: ID workload identity poolPROJECT_NUMBER: nomor projectNAMESPACE_ID: ID namespaceMANAGED_IDENTITY_ID: ID identitas terkelolaCERTIFICATE_MATERIAL: X.509-SVID dalam format berenkode PEM
Sertifikat identitas terkelola Certificate Manager memiliki properti managedIdentity, yang mengidentifikasinya sebagai sertifikat identitas terkelola. Resource sertifikat identitas terkelola Certificate Manager menyimpan X.509-SVID dalam format berenkode PEM.
Cakupan sertifikat identitas terkelola Pengelola Sertifikat adalah
CLIENT_AUTH, yang menunjukkan bahwa sertifikat ini digunakan sebagai sertifikat
klien dalam mTLS backend.
Verifikasi bahwa ID SPIFFE adalah bagian dari SAN di X.509-SVID
X.509-SVID berisi SPIFFE ID yang dienkode sebagai URI di kolom SAN. SPIFFE ID ini sesuai dengan identitas terkelola di workload identity pool.
Untuk mencetak format sertifikat yang dapat dibaca manusia, jalankan perintah berikut:
echo -e \ "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL\n-----END CERTIFICATE-----" | openssl x509 -text -noout
Outputnya mirip dengan berikut ini (singkatan):
Certificate:
Data:
Version: 3 (0x2)
Signature Algorithm: ecdsa-with-SHA256
Issuer: O = example.com, CN = Example CA
Validity
Not Before: Nov 6 10:15:48 2025 GMT
Not After : Nov 7 10:15:47 2025 GMT
Subject:
Subject Public Key Info:
Public Key Algorithm: id-ecPublicKey
Public-Key: (256 bit)
X509v3 extensions:
X509v3 Subject Alternative Name: critical
URI:spiffe://WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
Output ini mencakup nilai-nilai berikut:
WORKLOAD_IDENTITY_POOL_ID: ID workload identity poolPROJECT_NUMBER: nomor projectNAMESPACE_ID: ID namespaceMANAGED_IDENTITY_ID: ID identitas terkelola
Verifikasi bahwa konfigurasi kepercayaan Certificate Manager berisi kolom spiffeTrustStores
Konfigurasi kepercayaan Certificate Manager berisi kolom yang disebut
spiffeTrustStores. Kolom spiffeTrustStores berisi paket kepercayaan
yang terkait dengan domain tepercaya workload identity pool (diwakili oleh
dalam output) dan paket kepercayaan tambahan yang ditentukan oleh
kolom WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.googadditionalTrustBundles dalam konfigurasi kepercayaan inline workload identity pool.
Untuk melihat detail konfigurasi kepercayaan Pengelola Sertifikat,
gunakan perintah gcloud certificate-manager trust-configs describe.
gcloud certificate-manager trust-configs describe MI_TRUST_CONFIG_ID
Ganti MI_TRUST_CONFIG_ID dengan konfigurasi kepercayaan yang
dibuat secara otomatis oleh identitas terkelola.
Dalam contoh output berikut, host example.com adalah
domain tepercaya tambahan yang diperluas kepercayaannya.
createTime: '2025-11-06T10:15:50.048030758Z'
etag: kDoKfm5W6Il2HPvduKZWpuYpyrKrNVq4jqMEICE-6rQ
name: projects/PROJECT_ID/locations/global/trustConfigs/mi-tc-e4f05160-f20f-4109-aae3-4c1a68891742
spiffeTrustStores:
example.com:
trustAnchors:
- pemCertificate: -----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL1\n-----END CERTIFICATE-----
WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog:
trustAnchors:
- pemCertificate: -----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL2\n-----END CERTIFICATE-----
updateTime: '2025-11-07T08:25:15.760754841Z'
Output ini mencakup nilai-nilai berikut:
PROJECT_ID: the project IDCERTIFICATE_MATERIAL: sertifikat CA berformat PEM yang dipercaya untuk menerbitkan sertifikat di domain tepercayaWORKLOAD_IDENTITY_POOL_ID: ID workload identity poolPROJECT_NUMBER: nomor projectMANAGED_IDENTITY_ID: ID identitas terkelola
Untuk mempelajari lebih lanjut konfigurasi kepercayaan Pengelola Sertifikat, lihat Konfigurasi kepercayaan Pengelola Sertifikat.
Langkah berikutnya
- Mengonfigurasi autentikasi workload identity terkelola untuk Compute Engine
- Mengautentikasi workload ke workload lain melalui mTLS