Dokumen ini menjelaskan cara mengonfigurasi identitas workload terkelola di layanan backend load balancer. Setelah Anda menetapkan identitas terkelola, load balancer dan backend-nya dapat saling mengautentikasi menggunakan mTLS backend.
Untuk mengonfigurasi mTLS backend menggunakan identitas workload terkelola, Anda harus melakukan hal berikut:
- Konfigurasi kumpulan otoritas sertifikat (CA) Certificate Authority Service untuk menerbitkan sertifikat X.509 untuk 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.1
- Ikat CA ke workload identity pool menggunakan konfigurasi penerbitan sertifikat inline.
- Memberi otorisasi identitas workload terkelola untuk meminta sertifikat dari kumpulan CA.
- Buat load balancer dan lampirkan identitas terkelola ke layanan backend-nya.
1 Anda perlu membuat konfigurasi kepercayaan inline hanya jika load balancer dan backend-nya berada di domain kepercayaan yang berbeda. Untuk tujuan contoh ini, load balancer dan backend adalah bagian dari domain kepercayaan yang sama, dan oleh karena itu, konfigurasi resource konfigurasi kepercayaan inline bersifat opsional.
Untuk membuat identitas terkelola bagi backend, lihat Ringkasan identitas workload terkelola.
Sebelum memulai
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_IDwith a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_IDwith your Google Cloud project name.
Tinjau dokumen ringkasan mTLS backend dengan identitas beban kerja terkelola.
Pelajari penerbitan sertifikat menggunakan Certificate Authority Service.
Enable the IAM, Certificate Authority Service, Compute Engine, Certificate Manager, and Network Security APIs:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.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 ID project yang ditambahkan ke daftar yang diizinkan untuk pratinjau identitas beban kerja terkelola.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 workload terkelola dan menyediakan sertifikat identitas workload 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 pool 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 CA pool untuk menyiapkan CA root. Kumpulan 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 kumpulan CA root beradaPROJECT_ID: the project ID
Untuk mempelajari lebih lanjut kumpulan CA, lihat Membuat kumpulan CA.
Buat 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"] \
--max-chain-length=1 \
--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.
Membuat identitas workload terkelola
Saat Anda menggunakan identitas beban kerja terkelola, Google Cloud dapat secara otomatis menyediakan dan mengelola sertifikat X.509 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 identitas workload 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. Panjang ID harus antara 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 gloud 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). Format file ini mirip dengan
berikut:
{
"inlineCertificateIssuanceConfig": {
"caPools": {
"REGION": "projects/PROJECT_NUMBER/locations/REGION/caPools/ROOT_CA_POOL_ID",
},
["lifetime": "CERTIFICATE_LIFETIME"],
["rotationWindowPercentage": ROTATION_WINDOW_PERCENTAGE],
["keyAlgorithm": "ALGORITHM"]
}
}
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.
Membuat konfigurasi kepercayaan inline
Dalam konfigurasi contoh ini, load balancer dan backend merupakan bagian dari domain tepercaya yang sama, yang berbagi sertifikat root yang sama. Oleh karena itu, konfigurasi konfigurasi kepercayaan inline bersifat opsional. Root kepercayaan umum digunakan untuk membangun rantai kepercayaan dan memverifikasi identitas beban kerja dalam domain kepercayaan.
Secara default, workload Anda dalam domain tepercaya yang sama dapat saling melakukan autentikasi menggunakan identitas workload terkelola. Jika Anda ingin beban kerja yang berada di domain tepercaya berbeda untuk saling mengautentikasi, Anda harus menyatakan hubungan tepercaya secara eksplisit di kumpulan identitas beban kerja. Anda dapat melakukannya dengan membuat konfigurasi kepercayaan inline yang mengenali dan menerima sertifikat dari domain kepercayaan lain.
Untuk membuat konfigurasi kepercayaan inline, lakukan hal berikut:
Download sertifikat.
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 kumpulan CA root
Buat file konfigurasi berformat JSON (
tc.json) yang berisi konfigurasi kepercayaan inline, dengan sertifikat berformat PEM.File-nya akan terlihat seperti berikut:
{ "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-----" } ] } } } }Ganti 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 di 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'
Mengikat CA ke workload identity pool
Setelah membuat hierarki CA dan membuat konfigurasi penerbitan sertifikat untuk CA, Anda dapat mengikat CA ke workload identity pool. Untuk mengikat CA ke workload identity pool, Anda perlu memperbarui workload identity pool dengan konfigurasi penerbitan sertifikat CA. Kemudian, Anda dapat memverifikasi bahwa kumpulan telah diperbarui.
Memperbarui workload identity pool
Untuk mengikat CA ke workload identity pool, Anda harus memperbarui workload identity pool dengan konfigurasi penerbitan sertifikat CA. Kemudian, Anda dapat memverifikasi bahwa pool telah diperbarui.
Untuk mengupdate pool, jalankan perintah berikut:
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.
Memverifikasi bahwa workload identity pool telah diperbarui
Untuk memverifikasi bahwa workload identity pool Anda telah diupdate bersama 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/name/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID
state: ACTIVE
Output ini mencakup nilai-nilai berikut:
PROJECT_NUMBER: nomor projectREGION: region tempat kumpulan CA root 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 mengizinkan 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 pool CA rootREGION: region kumpulan 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 kumpulan 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 Buat.
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.
Memverifikasi 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 backendPORT_NAME: nama portREGION: region tempat kumpulan CA root 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
identitas workload terkelola 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 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 yang dikelola 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. ID SPIFFE ini sesuai dengan identitas terkelola di workload identity pool.
Untuk mencetak format sertifikat yang mudah dibaca, jalankan perintah berikut:
openssl x509 -text -noout \ <<< "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL\n-----END CERTIFICATE-----"
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 spiffeTrustStore
Konfigurasi kepercayaan Certificate Manager berisi kolom bernama
spiffeTrustStores. Kolom spiffeTrustStores berisi paket kepercayaan
yang terkait dengan domain tepercaya dari 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 certificates describe MI_TRUST_CONFIG_ID
Ganti MI_TRUST_CONFIG_ID dengan konfigurasi tepercaya 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