Configurer le protocole TLS mutuel pour un équilibreur de charge d'application externe global

Cette page présente des exemples de configuration du protocole TLS mutuel (mTLS) pour un équilibreur de charge d'application externe global.

Avant de commencer

Configurer mTLS pour l'équilibreur de charge

Pour que l'authentification TLS mutuelle fonctionne, une fois que vous avez configuré un équilibreur de charge, vous devez mettre à jour le proxy HTTPS cible à l'aide de la ressource ServerTLSPolicy.

  1. Assurez-vous d'avoir déjà créé la ressource ServerTLSPolicy. Pour obtenir des instructions, consultez la section Créer les ressources de sécurité réseau.

  2. Pour répertorier tous les proxys HTTPS cibles de votre projet, utilisez la commande gcloud compute target-https-proxies list :

    gcloud compute target-https-proxies list
    

    Notez le nom du proxy HTTPS cible pour associer la ressource ServerTLSPolicy. Ce nom sera appelé TARGET_HTTPS_PROXY_NAME dans les étapes suivantes.

  3. Pour exporter la configuration d'un proxy HTTPS cible vers un fichier, utilisez la commande gcloud beta compute target-https-proxies export.

    global

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

    Remplacez les éléments suivants :

    • TARGET_HTTPS_PROXY_NAME : nom du proxy cible.
    • TARGET_PROXY_FILENAME : nom d'un fichier yaml. Par exemple, mtls_target_proxy.yaml.
  4. Répertoriez toutes les ressources ServerTlsPolicies à l'emplacement spécifié du projet actuel.

    Console

    1. Dans la console Google Cloud, accédez à la page Authentification client.

      Accéder à la page "Authentification client"

    2. Toutes les ressources ServerTlsPolicies s'affichent.

    gcloud

    Pour répertorier toutes les ressources Authentification client (ServerTlsPolicies), utilisez la commande gcloud network-security server-tls-policies list :

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

    Remplacez les éléments suivants :

    REGION : utilisez global.

    Notez le nom de la ressource ServerTlsPolicies pour configurer l'authentification mTLS. Ce nom sera appelé SERVER_TLS_POLICY_NAME à l'étape suivante.

  5. Pour ajouter le fichier de ressources ServerTlsPolicy TARGET_PROXY_FILENAME, utilisez la commande suivante. Remplacez PROJECT_ID par l'ID de votre projet Google Cloud.

    echo "serverTlsPolicy: //networksecurity.googleapis.com/projects/PROJECT_ID/locations/REGION/serverTlsPolicies/SERVER_TLS_POLICY_NAME" >> TARGET_PROXY_FILENAME
    
  6. Pour importer la configuration d'un proxy HTTPS cible à partir d'un fichier, utilisez la commande gcloud beta compute target-https-proxies import :

    global

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

    Remplacez les éléments suivants :

    • TARGET_HTTPS_PROXY_NAME : nom du proxy cible.
    • TARGET_PROXY_FILENAME : nom d'un fichier yaml. Par exemple, mtls_target_proxy.yaml.

Ajouter des en-têtes mTLS personnalisés

Lorsque mTLS est activé, vous pouvez utiliser des en-têtes personnalisés pour transmettre des informations sur la connexion mTLS aux services de backend. Vous pouvez également activer la journalisation afin que les échecs de connexion mTLS soient capturés dans les journaux.

  1. Pour répertorier tous les services de backend du projet, exécutez la commande gcloud compute backend-services list :

    gcloud compute backend-services list
    

    Notez le nom du service de backend pour activer les en-têtes et la journalisation personnalisés. Ce nom est appelé BACKEND_SERVICE à l'étape suivante.

  2. Pour mettre à jour le service de backend, utilisez la commande 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}'
    

Étapes suivantes