Cette page présente des exemples de configuration du protocole TLS mutuel (mTLS) pour un équilibreur de charge d'application interne interrégional ou interne régional.
Avant de commencer
- Consultez la page Présentation de l'équilibreur de charge d'application interne.
- Consultez la section Authentification TLS mutuelle.
- Configurez un protocole TLS mutuel avec des certificats fournis par l'utilisateur.
Les équilibreurs de charge d'application internes sont compatibles avec différents buckets et services de backend. Assurez-vous d'avoir configuré un équilibreur de charge d'application interne avec l'un des backends compatibles suivants :
Équilibreurs de charge d'application internes régionaux
Équilibreurs de charge d'application internes interrégionaux
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
.
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.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.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
.
régional
gcloud beta compute target-https-proxies export TARGET_HTTPS_PROXY_NAME \ --destination=TARGET_PROXY_FILENAME \ --region=REGION
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
.REGION
: région dans laquelle vous avez configuré l'équilibreur de charge.
Répertoriez toutes les ressources
ServerTlsPolicies
à l'emplacement spécifié du projet actuel.Console
Dans la console Google Cloud, accédez à la page Authentification client.
Toutes les ressources
ServerTlsPolicies
s'affichent.
gcloud
Pour répertorier toutes les ressources Authentification client (
ServerTlsPolicies
), utilisez la commandegcloud network-security server-tls-policies list
:gcloud network-security server-tls-policies list \ --location=REGION
Remplacez les éléments suivants :
REGION
: région dans laquelle vous avez configuré l'équilibreur de charge. Pour les équilibreurs de charge d'application internes interrégionaux, utilisezglobal
.Notez le nom de la ressource
ServerTlsPolicies
pour configurer l'authentification mTLS. Ce nom sera appeléSERVER_TLS_POLICY_NAME
à l'étape suivante.Pour ajouter le fichier de ressources
ServerTlsPolicy
TARGET_PROXY_FILENAME
, utilisez la commande suivante. RemplacezPROJECT_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
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
.
régional
gcloud beta compute target-https-proxies import TARGET_HTTPS_PROXY_NAME \ --source=TARGET_PROXY_FILENAME \ --region=REGION
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
.REGION
: région dans laquelle vous avez configuré l'équilibreur de charge.
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 au mappage d'URL. Vous pouvez également activer la journalisation afin que les échecs de connexion mTLS soient capturés dans les journaux.Pour répertorier tous les mappages d'URL du projet, exécutez la commande gcloud beta compute url-maps list
:
gcloud beta compute url-maps list
Notez le nom du mappage d'URL pour activer les en-têtes et la journalisation personnalisés.
Ce nom est appelé URL_MAP_NAME
à l'étape suivante.
global
gcloud compute url-maps edit URL_MAP_NAME --global
Voici un exemple de fichier YAML qui montre comment utiliser des variables dans des en-têtes de requête personnalisés (requestHeadersToAdd
). Vous pouvez utiliser les mêmes variables pour envoyer des en-têtes de réponse personnalisés (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}"
régional
gcloud compute url-maps edit URL_MAP_NAME --region=REGION
Voici un exemple de fichier YAML qui montre comment utiliser des variables dans des en-têtes de requête personnalisés (requestHeadersToAdd
). Vous pouvez utiliser les mêmes variables pour envoyer des en-têtes de réponse personnalisés (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}"
Étapes suivantes
- Configurer un protocole TLS mutuel avec des certificats fournis par l'utilisateur
- Afficher les journaux pour la validation du certificat client mTLS
- Nettoyer une configuration d'équilibrage de charge