Configurazione del protocollo TLS reciproca per un bilanciatore del carico delle applicazioni interno

Questa pagina mostra esempi di configurazione di TLS reciproco (mTLS) per un bilanciatore del carico delle applicazioni interno tra regioni o un bilanciatore del carico delle applicazioni interno regionale.

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.

    regionale

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

    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
    • REGION: la regione in cui hai configurato il bilanciatore del carico.
  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: la regione in cui hai configurato il bilanciatore del carico. Per bilanciatori del carico delle applicazioni interni tra regioni, utilizza 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.

    regionale

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

    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
    • REGION: la regione in cui hai configurato il bilanciatore del carico.

Aggiungere intestazioni personalizzate mTLS

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

Per elencare tutte le mappe URL nel progetto, utilizza il comando gcloud beta compute url-maps list:

   gcloud beta compute url-maps list
   

Prendi nota del nome della mappa URL per attivare le intestazioni e il logging personalizzati. Questo nome sarà indicato come URL_MAP_NAME nel passaggio seguente.

globale

   gcloud compute url-maps edit URL_MAP_NAME --global
   

Di seguito è riportato un file YAML di esempio che mostra come utilizzare le variabili nelle intestazioni delle richieste personalizzate (requestHeadersToAdd). Puoi usare le stesse variabili per inviare intestazioni delle risposte personalizzate (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}"
   

regionale

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

Di seguito è riportato un file YAML di esempio che mostra come utilizzare le variabili nelle intestazioni delle richieste personalizzate (requestHeadersToAdd). Puoi usare le stesse variabili per inviare intestazioni di risposta personalizzate (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}"
   

Passaggi successivi