Menyiapkan mTLS backend menggunakan identitas workload terkelola

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:

  1. Konfigurasi kumpulan otoritas sertifikat (CA) Certificate Authority Service untuk menerbitkan sertifikat X.509 untuk identitas workload terkelola.
  2. 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
  3. Ikat CA ke workload identity pool menggunakan konfigurasi penerbitan sertifikat inline.
  4. Memberi otorisasi identitas workload terkelola untuk meminta sertifikat dari kumpulan CA.
  5. 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

  1. 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 the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with 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_ID with your Google Cloud project name.

  2. Tinjau dokumen ringkasan mTLS backend dengan identitas beban kerja terkelola.

  3. Pelajari penerbitan sertifikat menggunakan Certificate Authority Service.

  4. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable iam.googleapis.com privateca.googleapis.com compute.googleapis.com certificatemanager.googleapis.com  networksecurity.googleapis.com

  5. 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_ID dengan ID project yang ditambahkan ke daftar yang diizinkan untuk pratinjau identitas beban kerja terkelola.

  6. 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 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 root

  • REGION: region tempat kumpulan CA root berada

  • PROJECT_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 ke rsa-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 Anda
  • WORKLOAD_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 variabel PROJECT_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_LIFETIME harus berupa nilai antara 24 jam dan 30 hari. Jika CERTIFICATE_LIFETIME tidak ditentukan, masa berlaku sertifikat ditetapkan secara default ke 24 jam. CERTIFICATE_LIFETIME bersifat opsional.

  • ROTATION_WINDOW_PERCENTAGE: persentase masa aktif sertifikat saat perpanjangan dipicu. Nilai ROTATION_WINDOW_PERCENTAGE harus antara 50 dan 80. Jumlah default-nya adalah 50. ROTATION_WINDOW_PERCENTAGE bersifat opsional.

  • ALGORITHM: algoritma enkripsi yang digunakan untuk membuat kunci pribadi. Nilai yang valid untuk ALGORITHMadalah ECDSA_P256 (default), ECDSA_P384, RSA_2048, RSA_3072, dan RSA_4096. ALGORITHM bersifat 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.

Hierarki resource identitas workload terkelola.
Hierarki resource identitas beban kerja terkelola (klik untuk memperbesar).

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:

  1. Download sertifikat.

    gcloud privateca pools get-ca-certs ROOT_CA_POOL_ID \
        --output-file=CERTIFICATE_PATH \
        --location=REGION
    

    Ganti kode berikut:

    • ROOT_CA_POOL_ID: ID pool CA root
    • CERTIFICATE_PATH: jalur tujuan untuk menghasilkan sertifikat yang dienkode PEM
    • REGION: region kumpulan CA root
  2. 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 pool
      • PROJECT_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 project
  • REGION: region tempat kumpulan CA root berada
  • ROOT_CA_POOL_ID: ID pool CA root
  • ALGORITHM: algoritma enkripsi yang digunakan untuk membuat kunci pribadi
  • CERTIFICATE_LIFETIME: masa aktif sertifikat workload yang dikeluarkan oleh CA pool dalam detik
  • ROTATION_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 tepercaya
  • WORKLOAD_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.

  1. 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_ID
    

    Ganti kode berikut:

    • ROOT_CA_POOL_ID: ID untuk pool CA root
    • REGION: region kumpulan CA root
    • PROJECT_NUMBER: nomor project

      Untuk mendapatkan PROJECT_NUMBER dari PROJECT_ID, jalankan perintah berikut:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
      
    • WORKLOAD_IDENTITY_POOL_ID: ID workload identity pool

    • PROJECT_ID: the project ID

  2. 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_ID
    

    Ganti kode berikut:

    • ROOT_CA_POOL_ID: ID pool CA root
    • REGION: region kumpulan CA root
    • PROJECT_NUMBER: nomor project
    • WORKLOAD_IDENTITY_POOL_ID: ID workload identity pool
    • PROJECT_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

  1. Di konsol Google Cloud , buka halaman Load balancing.

    Buka Load balancing

  2. Di bagian Backend configuration, tambahkan detail yang relevan untuk membuat layanan backend.

  3. Luaskan bagian Advanced configurations.

  4. Di bagian Backend authentication, pilih opsi Managed Identity.

  5. Untuk menetapkan identitas terkelola ke layanan backend, di kolom Managed Identity, masukkan identitas workload terkelola yang Anda buat sebelumnya.

  6. Klik Buat.

  7. Lanjutkan langkah-langkah seperti yang diuraikan dalam Menyiapkan load balancer untuk menyelesaikan konfigurasi load balancer.

gcloud

  1. Untuk menetapkan identitas terkelola ke layanan backend, tambahkan flag --identity saat menggunakan perintah gcloud 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' \
        --global
    

    Ganti kode berikut:

    • BACKEND_SERVICE_NAME: nama layanan backend
    • HEALTH_CHECK_NAME: nama health check
    • WORKLOAD_IDENTITY_POOL_ID: ID workload identity pool
    • PROJECT_NUMBER: nomor project
    • NAMESPACE_ID: ID namespace
    • MANAGED_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 ID
  • HEALTH_CHECK_NAME: nama health check
  • BACKEND_SERVICE_NAME: nama layanan backend
  • PORT_NAME: nama port
  • REGION: region tempat kumpulan CA root berada
  • WORKLOAD_IDENTITY_POOL_ID: ID workload identity pool
  • PROJECT_NUMBER: nomor project
  • NAMESPACE_ID: ID namespace
  • MANAGED_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 pool
  • PROJECT_NUMBER: nomor project
  • NAMESPACE_ID: ID namespace
  • MANAGED_IDENTITY_ID: ID identitas terkelola
  • CERTIFICATE_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 pool
  • PROJECT_NUMBER: nomor project
  • NAMESPACE_ID: ID namespace
  • MANAGED_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 WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog dalam output) dan paket kepercayaan tambahan yang ditentukan oleh kolom additionalTrustBundles 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 ID
  • CERTIFICATE_MATERIAL: sertifikat CA berformat PEM yang dipercaya untuk menerbitkan sertifikat di domain tepercaya
  • WORKLOAD_IDENTITY_POOL_ID: ID workload identity pool
  • PROJECT_NUMBER: nomor project
  • MANAGED_IDENTITY_ID: ID identitas terkelola

Untuk mempelajari lebih lanjut konfigurasi kepercayaan Pengelola Sertifikat, lihat Konfigurasi kepercayaan Pengelola Sertifikat.

Langkah berikutnya