Configura il protocollo TLS reciproca per un bilanciatore del carico delle applicazioni classico

Questa pagina mostra esempi di configurazione di TLS reciproco (mTLS) per un bilanciatore del carico delle applicazioni classico.

Prima di iniziare

Configurare la crittografia mTLS per il bilanciatore del carico

Affinché l'autenticazione TLS reciproca (mTLS) funzioni, dopo aver configurato un bilanciatore del carico devi aggiornare il proxy HTTPS di destinazione utilizzando la risorsa ServerTLSPolicy.

  1. Assicurati di aver già creato la risorsa ServerTLSPolicy. Per le istruzioni, consulta Creare le risorse di sicurezza di rete.

  2. Per elencare tutti i proxy HTTPS di destinazione nel tuo progetto, utilizza il comando gcloud compute target-https-proxies list:

    gcloud compute target-https-proxies list
    

    Prendi nota del nome del proxy HTTPS di destinazione per collegare la risorsa ServerTLSPolicy. Questo nome sarà indicato come TARGET_HTTPS_PROXY_NAME nei seguenti passaggi.

  3. Per esportare la configurazione di un proxy HTTPS di destinazione in un file, utilizza il comando gcloud beta compute target-https-proxies export.

    globale

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

    Sostituisci quanto segue:

    • TARGET_HTTPS_PROXY_NAME: il nome del proxy di destinazione.
    • TARGET_PROXY_FILENAME: il nome di un file YAML. Ad esempio, mtls_target_proxy.yaml.
  4. Elenca tutte le risorse ServerTlsPolicies nella località specificata del progetto attuale.

    Console

    1. Nella console Google Cloud, vai alla pagina Autenticazione client.

      Vai a Autenticazione client

    2. Sono visualizzate tutte le risorse ServerTlsPolicies.

    gcloud

    Per elencare tutte le risorse di autenticazione client (ServerTlsPolicies), utilizza il comando gcloud network-security server-tls-policies list:

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

    Sostituisci quanto segue:

    REGION: usa global.

    Prendi nota del nome della risorsa ServerTlsPolicies per configurare mTLS. Questo nome sarà indicato come SERVER_TLS_POLICY_NAME nel passaggio successivo.

  5. Per aggiungere il file di risorse ServerTlsPolicyTARGET_PROXY_FILENAME, utilizza il comando seguente. Sostituisci PROJECT_ID con l'ID del tuo progetto Google Cloud.

    echo "serverTlsPolicy: //networksecurity.googleapis.com/projects/PROJECT_ID/locations/REGION/serverTlsPolicies/SERVER_TLS_POLICY_NAME" >> TARGET_PROXY_FILENAME
    
  6. Per importare la configurazione di un proxy HTTPS di destinazione da un file, utilizza il comando gcloud beta compute target-https-proxies import.

    globale

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

    Sostituisci quanto segue:

    • TARGET_HTTPS_PROXY_NAME: il nome del proxy di destinazione.
    • TARGET_PROXY_FILENAME: il nome di un file YAML. Ad esempio, mtls_target_proxy.yaml.

Aggiungere intestazioni personalizzate mTLS

Con mTLS abilitato, puoi utilizzare le intestazioni personalizzate per passare informazioni sulla connessione mTLS ai servizi di backend. Puoi anche abilitare il logging in modo che nei log vengano acquisiti gli errori di connessione mTLS.

  1. Per elencare tutti i servizi di backend nel progetto, utilizza il comando gcloud compute backend-services list:

    gcloud compute backend-services list
    

    Prendi nota del nome del servizio di backend per abilitare intestazioni e logging personalizzati. Questo nome sarà indicato come BACKEND_SERVICE nel passaggio seguente.

  2. Per aggiornare il servizio di backend, utilizza il comando gcloud compute backend-services update:

    gcloud compute backend-services update BACKEND_SERVICE \
      --global \
      --enable-logging \
      --logging-sample-rate=1 \
      --custom-request-header='X-Client-Cert-Present:{client_cert_present}' \
      --custom-request-header='X-Client-Cert-Chain-Verified:{client_cert_chain_verified}' \
      --custom-request-header='X-Client-Cert-Error:{client_cert_error}' \
      --custom-request-header='X-Client-Cert-Hash:{client_cert_sha256_fingerprint}' \
      --custom-request-header='X-Client-Cert-Serial-Number:{client_cert_serial_number}' \
      --custom-request-header='X-Client-Cert-SPIFFE:{client_cert_spiffe_id}' \
      --custom-request-header='X-Client-Cert-URI-SANs:{client_cert_uri_sans}' \
      --custom-request-header='X-Client-Cert-DNSName-SANs:{client_cert_dnsname_sans}' \
      --custom-request-header='X-Client-Cert-Valid-Not-Before:{client_cert_valid_not_before}' \
      --custom-request-header='X-Client-Cert-Valid-Not-After:{client_cert_valid_not_after}'
    

Passaggi successivi