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

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

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 compute target-https-proxies export :

    gcloud compute target-https-proxies export TARGET_HTTPS_PROXY_NAME \
       --global \
       --destination=xlb-mtls-target-proxy.yaml
    
  4. Répertoriez toutes les ressources ServerTlsPolicies à l'emplacement spécifié du projet en cours.

    Console

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

    Accéder à la page Authentification client

    1. Toutes les ressources ServerTlsPolicies sont affichées.

    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=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 xlb-mtls-target-proxy.yaml, utilisez la commande suivante. Remplacez PROJECT_ID par l'ID de votre projet Google Cloud.

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

    gcloud compute target-https-proxies import TARGET_HTTPS_PROXY_NAME \
       --global \
       --source=xlb-mtls-target-proxy.yaml
    

Ajouter des en-têtes mTLS personnalisés

Lorsque mTLS est activé, vous pouvez utiliser des en-têtes de requê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