Menyiapkan TLS bersama untuk Load Balancer Aplikasi internal

Halaman ini menunjukkan contoh cara mengonfigurasi TLS bersama (mTLS) untuk Load Balancer Aplikasi internal lintas region atau Load Balancer Aplikasi internal regional.

Sebelum memulai

Menyiapkan mTLS untuk load balancer

Agar autentikasi TLS bersama berfungsi, setelah menyiapkan load balancer, Anda perlu mengupdate proxy HTTPS target menggunakan resource ServerTLSPolicy.

  1. Pastikan Anda sudah membuat resource ServerTLSPolicy. Untuk mengetahui petunjuknya, lihat Membuat resource keamanan jaringan.

  2. Untuk menampilkan daftar semua proxy HTTPS target di project Anda, gunakan perintah gcloud compute target-https-proxies list:

    gcloud compute target-https-proxies list
    

    Perhatikan nama proxy HTTPS target untuk melampirkan resource ServerTLSPolicy. Nama ini disebut sebagai TARGET_HTTPS_PROXY_NAME dalam langkah-langkah berikut.

  3. Untuk mengekspor konfigurasi proxy HTTPS target ke file, gunakan perintah gcloud beta compute target-https-proxies export.

    global

      gcloud beta compute target-https-proxies export TARGET_HTTPS_PROXY_NAME \
          --destination=TARGET_PROXY_FILENAME \
          --global
      

    Ganti kode berikut:

    • TARGET_HTTPS_PROXY_NAME: nama proxy target.
    • TARGET_PROXY_FILENAME: nama file yaml. Contoh, mtls_target_proxy.yaml.

    regional

     gcloud beta compute target-https-proxies export TARGET_HTTPS_PROXY_NAME \
         --destination=TARGET_PROXY_FILENAME \
         --region=REGION
     

    Ganti kode berikut:

    • TARGET_HTTPS_PROXY_NAME: nama proxy target.
    • TARGET_PROXY_FILENAME: nama file yaml. Misalnya, mtls_target_proxy.yaml
    • REGION: region tempat Anda mengonfigurasi load balancer.
  4. Menampilkan daftar semua resource ServerTlsPolicies di lokasi yang ditentukan untuk project saat ini.

    Konsol

    1. Di konsol Google Cloud, buka halaman Autentikasi klien.

      Buka Autentikasi klien

    2. Semua resource ServerTlsPolicies ditampilkan.

    gcloud

    Untuk menampilkan daftar semua resource Autentikasi klien (ServerTlsPolicies), gunakan perintah gcloud network-security server-tls-policies list:

    gcloud network-security server-tls-policies list \
      --location=REGION
    

    Ganti kode berikut:

    REGION: region tempat Anda mengonfigurasi load balancer. Untuk Load Balancer Aplikasi internal lintas region, gunakan global.

    Catat nama resource ServerTlsPolicies untuk mengonfigurasi mTLS. Nama ini akan disebut sebagai SERVER_TLS_POLICY_NAME di langkah berikutnya.

  5. Untuk menambahkan file resource ServerTlsPolicy TARGET_PROXY_FILENAME, gunakan perintah berikut. Ganti PROJECT_ID dengan ID project Google Cloud Anda.

    echo "serverTlsPolicy: //networksecurity.googleapis.com/projects/PROJECT_ID/locations/REGION/serverTlsPolicies/SERVER_TLS_POLICY_NAME" >> TARGET_PROXY_FILENAME
    
  6. Untuk mengimpor konfigurasi proxy HTTPS target dari file, gunakan perintah gcloud beta compute target-https-proxies import.

    global

       gcloud beta compute target-https-proxies import TARGET_HTTPS_PROXY_NAME \
           --source=TARGET_PROXY_FILENAME \
           --global
       

    Ganti kode berikut:

    • TARGET_HTTPS_PROXY_NAME: nama proxy target.
    • TARGET_PROXY_FILENAME: nama file yaml. Contoh, mtls_target_proxy.yaml.

    regional

       gcloud beta compute target-https-proxies import TARGET_HTTPS_PROXY_NAME \
           --source=TARGET_PROXY_FILENAME \
           --region=REGION
       

    Ganti kode berikut:

    • TARGET_HTTPS_PROXY_NAME: nama proxy target.
    • TARGET_PROXY_FILENAME: nama file yaml. Misalnya, mtls_target_proxy.yaml
    • REGION: region tempat Anda mengonfigurasi load balancer.

Tambahkan header kustom mTLS

Dengan mengaktifkan mTLS, Anda dapat menggunakan header kustom untuk meneruskan informasi tentang koneksi mTLS ke peta URL. Anda juga dapat mengaktifkan logging sehingga kegagalan koneksi mTLS direkam dalam log.

Untuk menampilkan daftar semua peta URL dalam project, gunakan perintah gcloud beta compute url-maps list:

   gcloud beta compute url-maps list
   

Perhatikan nama peta URL untuk mengaktifkan logging dan header kustom. Nama ini disebut sebagai URL_MAP_NAME dalam langkah berikutnya.

global

   gcloud compute url-maps edit URL_MAP_NAME --global
   

Berikut ini adalah contoh file YAML yang menunjukkan cara menggunakan variabel dalam header permintaan kustom (requestHeadersToAdd). Anda dapat menggunakan variabel yang sama untuk mengirim header respons kustom (responseHeadersToAdd).

   headerAction:
      requestHeadersToAdd:
      - headerName: "X-Client-Cert-Present"
        headerValue: "{client_cert_present}"
      - headerName: "X-Client-Cert-Chain-Verified"
        headerValue: "{client_cert_chain_verified}"
      - headerName: "X-Client-Cert-Error"
        headerValue: "{client_cert_error}"
      - headerName: "X-Client-Cert-Hash"
        headerValue: "{client_cert_sha256_fingerprint}"
      - headerName: "X-Client-Cert-Serial-Number"
        headerValue: "{client_cert_serial_number}"
      - headerName: "X-Client-Cert-SPIFFE"
        headerValue: "{client_cert_spiffe_id}"
      - headerName: "X-Client-Cert-URI-SANs"
        headerValue: "{client_cert_uri_sans}"
      - headerName: "X-Client-Cert-DNSName-SANs"
        headerValue: "{client_cert_dnsname_sans}"
      - headerName: "X-Client-Cert-Valid-Not-Before"
        headerValue: "{client_cert_valid_not_before}"
      - headerName: "X-Client-Cert-Valid-Not-After"
        headerValue: "{client_cert_valid_not_after}"
      - headerName: "X-Client-Cert-Issuer-Dn"
        headerValue: "{client_cert_issuer_dn}"
      - headerName: "X-Client-Cert-Subject-Dn"
        headerValue: "{client_cert_subject_dn}"
      - headerName: "X-Client-Cert-Leaf"
        headerValue: "{client_cert_leaf}"
      - headerName: "X-Client-Cert-Chain"
        headerValue: "{client_cert_chain}"
   

regional

   gcloud compute url-maps edit URL_MAP_NAME --region=REGION
   

Berikut ini adalah contoh file YAML yang menunjukkan cara menggunakan variabel dalam header permintaan kustom (requestHeadersToAdd). Anda dapat menggunakan variabel yang sama untuk mengirim header respons kustom (responseHeadersToAdd).

   defaultService: regions/REGION/backendServices/BACKEND_SERVICE_1
      name: regional-lb-map
      region: region/REGION
   headerAction:
      requestHeadersToAdd:
      - headerName: "X-Client-Cert-Present"
        headerValue: "{client_cert_present}"
      - headerName: "X-Client-Cert-Chain-Verified"
        headerValue: "{client_cert_chain_verified}"
      - headerName: "X-Client-Cert-Error"
        headerValue: "{client_cert_error}"
      - headerName: "X-Client-Cert-Hash"
        headerValue: "{client_cert_sha256_fingerprint}"
      - headerName: "X-Client-Cert-Serial-Number"
        headerValue: "{client_cert_serial_number}"
      - headerName: "X-Client-Cert-SPIFFE"
        headerValue: "{client_cert_spiffe_id}"
      - headerName: "X-Client-Cert-URI-SANs"
        headerValue: "{client_cert_uri_sans}"
      - headerName: "X-Client-Cert-DNSName-SANs"
        headerValue: "{client_cert_dnsname_sans}"
      - headerName: "X-Client-Cert-Valid-Not-Before"
        headerValue: "{client_cert_valid_not_before}"
      - headerName: "X-Client-Cert-Valid-Not-After"
        headerValue: "{client_cert_valid_not_after}"
      - headerName: "X-Client-Cert-Issuer-Dn"
        headerValue: "{client_cert_issuer_dn}"
      - headerName: "X-Client-Cert-Subject-Dn"
        headerValue: "{client_cert_subject_dn}"
      - headerName: "X-Client-Cert-Leaf"
        headerValue: "{client_cert_leaf}"
      - headerName: "X-Client-Cert-Chain"
        headerValue: "{client_cert_chain}"
   

Langkah selanjutnya