Gegenseitiges TLS für einen globalen externen Anwendungs-Load-Balancer einrichten

Auf dieser Seite werden Beispiele für die Konfiguration von gegenseitigem TLS (mTLS) für einen globalen externen Anwendungs-Load-Balancer gezeigt.

Hinweise

mTLS für den Load-Balancer einrichten

Damit die gegenseitige TLS-Authentifizierung funktioniert, müssen Sie nach dem Einrichten eines Load-Balancers den HTTPS-Ziel-Proxy mithilfe der Ressource ServerTLSPolicy aktualisieren.

  1. Prüfen Sie, ob Sie die Ressource ServerTLSPolicy bereits erstellt haben. Eine Anleitung dazu finden Sie unter Netzwerksicherheitsressourcen erstellen.

  2. Verwenden Sie den Befehl gcloud compute target-https-proxies list, um alle Ziel-HTTPS-Proxys in Ihrem Projekt aufzulisten:

    gcloud compute target-https-proxies list
    

    Notieren Sie sich den Namen des Ziel-HTTPS-Proxys, um die Ressource ServerTLSPolicy anzuhängen. Dieser Name wird in den folgenden Schritten als TARGET_HTTPS_PROXY_NAME bezeichnet.

  3. Verwenden Sie den Befehl gcloud compute target-https-proxies export, um die Konfiguration eines Ziel-HTTPS-Proxys in eine Datei zu exportieren:

    gcloud compute target-https-proxies export TARGET_HTTPS_PROXY_NAME \
       --global \
       --destination=xlb-mtls-target-proxy.yaml
    
  4. Listet alle ServerTlsPolicies-Ressourcen am angegebenen Speicherort des aktuellen Projekts auf.

    Console

    1. Rufen Sie in der Google Cloud Console die Seite Clientauthentifizierung auf.

    Zu „Clientauthentifizierung“

    1. Es werden alle ServerTlsPolicies-Ressourcen angezeigt.

    gcloud

    Verwenden Sie den Befehl gcloud network-security server-tls-policies list, um alle Ressourcen der Clientauthentifizierung (ServerTlsPolicies) aufzulisten:

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

    Notieren Sie sich den Namen der ServerTlsPolicies-Ressource, um mTLS zu konfigurieren. Dieser Name wird im nächsten Schritt als SERVER_TLS_POLICY_NAME bezeichnet.

  5. Um die ServerTlsPolicy-Ressourcendatei xlb-mtls-target-proxy.yaml anzuhängen, verwenden Sie den folgenden Befehl. Ersetzen Sie PROJECT_ID durch die ID Ihres Google Cloud-Projekts.

    echo "serverTlsPolicy: //networksecurity.googleapis.com/projects/PROJECT_ID/locations/global/serverTlsPolicies/SERVER_TLS_POLICY_NAME" >> xlb-mtls-target-proxy.yaml
    
  6. Verwenden Sie den Befehl gcloud compute target-https-proxies import, um die Konfiguration eines Ziel-HTTPS-Proxys aus einer Datei zu importieren:

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

Benutzerdefinierte mTLS-Header hinzufügen

Wenn mTLS aktiviert ist, können Sie mit benutzerdefinierten Anfrageheadern Informationen zur mTLS-Verbindung an Backend-Dienste übergeben. Sie können auch das Logging aktivieren, damit mTLS-Verbindungsfehler in den Logs erfasst werden.

  1. Verwenden Sie den Befehl gcloud compute backend-services list, um alle Backend-Dienste im Projekt aufzulisten:

    gcloud compute backend-services list
    

    Notieren Sie sich den Namen des Backend-Dienstes, um benutzerdefinierte Header und Logging zu aktivieren. Dieser Name wird im folgenden Schritt als BACKEND_SERVICE bezeichnet.

  2. Verwenden Sie zum Aktualisieren des Backend-Dienstes den Befehl 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}'
    

Nächste Schritte