Sie können die gegenseitige TLS-Authentifizierung (Mutual TLS, mTLS) für das Frontend in Secure Web Proxy konfigurieren, um die Sicherheit Ihrer Arbeitslasten wie KI-Agents zu erhöhen. Secure Web Proxy verwendet mTLS für das Frontend, um Clientidentitäten über Zertifikate zu prüfen.
Mit dieser Integration können Sie validierte Clientidentitäten in Secure Web Proxy Autorisierungs richtlinien verwenden, um eine detaillierte Zugriffssteuerung für ausgehenden Traffic zu erzwingen.
Funktionsweise
In den folgenden Schritten wird erläutert, wie Secure Web Proxy mTLS für das Frontend verwendet, um ausgehenden Traffic zu sichern:
Explizite Proxyverbindung: Sie können den Client so konfigurieren, dass er Secure Web Proxy als expliziten Proxy verwendet. Der Client initiiert eine HTTPS-CONNECT-Anfrage an das Secure Web Proxy-Frontend, anstatt sich direkt mit dem Internet zu verbinden.
Gegenseitiger TLS-Handshake: Während der Verbindungsherstellung führen Secure Web Proxy und der Client einen mTLS-Handshake am Proxy-Frontend durch. Der Proxy verwendet eine konfigurierte
TrustConfig-Ressource, um das Zertifikat des Clients zu validieren, während der Client das Serverzertifikat des Proxys validiert.Identitätsextraktion: Nach einem erfolgreichen Handshake extrahiert Secure Web Proxy eindeutige Identitätsattribute wie
URI_SAN, direkt aus dem validierten Clientzertifikat.Identitätsbasierte Autorisierung: Secure Web Proxy wertet die ausgehende Anfrage anhand Ihrer konfigurierten Autorisierungsrichtlinien aus. Um zu ermitteln, ob die Anfrage autorisiert ist, verwendet der Proxy die Identität des Clients, die während des mTLS-Handshakes kryptografisch überprüft wurde.
Sicherer ausgehender Traffic: Wenn die Anfrage autorisiert ist und eine übereinstimmende Regel für ein externes Ziel vorhanden ist, erfüllt Secure Web Proxy die Anfrage an das Ziel.
Hauptvorteile
Die Konfiguration von mTLS für das Frontend in Secure Web Proxy bietet die folgenden Sicherheits- und betrieblichen Vorteile:
Erweiterte Sicherheitsfunktionen: Erzielen Sie Zero-Trust-Zugriff, indem Sie für den gesamten ausgehenden Traffic eine mTLS-Authentifizierung für das Frontend erzwingen. So können nur Arbeitslasten mit einer bestätigten Identität eine Verbindung mit dem Proxy herstellen, um auf externe Dienste zuzugreifen.
Vereinfachte Arbeitslastkonfiguration: Verwenden Sie den expliziten Proxy-Routingmodus für Secure Web Proxy, um die Möglichkeit des Proxys zu nutzen, Anfragen abzufangen und zu authentifizieren requests.
Detaillierte Steuerung: Erzwingen Sie detaillierte, identitätsbasierte Richtlinien, um festzulegen, auf welche externen Dienste die einzelnen Arbeitslasten zugreifen können.
Beispielanwendungsfall: Identität Ihrer Arbeitslasten validieren
In stark regulierten Branchen wie dem Bankensektor reicht es nicht aus, den Netzwerkstandort einer Anfrage zu überprüfen, um unbefugten Datenzugriff zu verhindern. Durch die Konfiguration von mTLS für das Frontend in Secure Web Proxy können Unternehmen zu einem kryptografisch überprüften Identitätsmodell wechseln. So muss jede Arbeitslast, unabhängig davon, ob es sich um eine VM-Instanz oder einen KI-Agenten handelt, ihre spezifische Identität mit einem vertrauenswürdigen Zertifikat nachweisen.
Mit diesem Ansatz können Administratoren identitätsbasierte Schutzmaßnahmen erzwingen, die sensible ausgehende Pfade schützen. Eine Bank kann beispielsweise dafür sorgen, dass nur eine bestimmte authentifizierte Arbeitslast zur Zahlungsverarbeitung ein externes Finanzgateway erreichen kann.
mTLS-Authentifizierung für das Frontend für Secure Web Proxy konfigurieren
In diesem Abschnitt werden die Schritte zum Konfigurieren der mTLS-Authentifizierung für das Frontend für Ihre Secure Web Proxy-Instanz beschrieben.
Hinweis
Lesen Sie die Seite Vertrauenskonfigurationen verwalten.
Bitten Sie Ihren Identity and Access Management-Administrator, Ihnen die folgenden Rollen zuzuweisen:
- Rolle „Zertifikatmanager-Inhaber“
(
roles/certificatemanager.owner) - Rolle „Compute-Netzwerkadministrator“
(
roles/compute.networkAdmin) - Rolle „Compute-Sicherheitsadministrator“
(
roles/compute.securityAdmin) - Rolle „Networksecurity-Administrator“
(
roles/networksecurity.admin)
- Rolle „Zertifikatmanager-Inhaber“
(
Sie benötigen eine Secure Web Proxy-Instanz, die Sie im expliziten Proxy-Routingmodus bereitgestellt haben.
Root- und Zwischenzertifikate erstellen
In diesem Abschnitt wird gezeigt, wie Sie mit OpenSSL ein CA-Zertifikat der Root-Zertifizierungsstelle (Certificate Authority, CA) (den Trust-Anchor) und ein optionales Zertifikat der Zwischen-CA generieren. Secure Web Proxy verwendet diese Zertifikate, um die Clientzertifikate zu prüfen, die Arbeitslasten während des mTLS-Handshakes für das Frontend präsentieren. Dieser manuelle Prozess ist für Test- und Entwicklungsumgebungen vorgesehen, um den Trust-Anchor bereitzustellen, den Secure Web Proxy zum Prüfen von Clientzertifikaten benötigt.
Ein Root-Zertifikat befindet sich am Anfang der Zertifikatskette, während ein Zwischenzertifikat als Brücke in der Vertrauenskette zurück zum Root-Zertifikat dient. Das Zwischenzertifikat wird kryptografisch vom Root-Zertifikat signiert. Wenn Secure Web Proxy ein Clientzertifikat empfängt, wird die Identität validiert, indem eine Vertrauenskette vom Clientzertifikat zurück zum konfigurierten Trust-Anchor hergestellt wird.
Verwenden Sie die folgenden Befehle, um die Root- und Zwischenzertifikate zu erstellen. Obwohl das Zwischenzertifikat optional ist, wird es in dieser Konfiguration verwendet, um das Clientzertifikat zu signieren und eine mehrstufige Zertifikathierarchie zu zeigen.
Erstellen Sie eine OpenSSL-Konfigurations datei.
cat > example.cnf << EOF [req] distinguished_name = empty_distinguished_name [empty_distinguished_name] # Kept empty to allow setting via -subj command-line argument. [ca_exts] basicConstraints=critical,CA:TRUE keyUsage=keyCertSign extendedKeyUsage=clientAuth EOFErstellen Sie ein selbst signiertes X.509-Root-Zertifikat (
root.cert) und einen privaten Schlüssel (root.key).openssl req -x509 \ -new -sha256 -newkey rsa:2048 -nodes \ -days 3650 -subj '/CN=root' \ -config example.cnf \ -extensions ca_exts \ -keyout root.key -out root.certErstellen Sie die Zertifikatsignierungsanfrage (
int.req) für das Zwischenzertifikat.openssl req -new \ -sha256 -newkey rsa:2048 -nodes \ -subj '/CN=int' \ -config example.cnf \ -extensions ca_exts \ -keyout int.key -out int.reqSignieren Sie die Zertifikatsignierungsanfrage (Certificate Signing Request, CSR), um das X.509-Zwischenzertifikat (
int.cert) zu erstellen.openssl x509 -req \ -CAkey root.key -CA root.cert \ -set_serial 1 \ -days 3650 \ -extfile example.cnf \ -extensions ca_exts \ -in int.req -out int.cert
Clientzertifikat für Tests erstellen
Erstellen Sie ein Blattzertifikat und einen privaten Schlüssel für Ihre Testarbeitslast. Während des mTLS-Handshakes mit Ihrer Secure Web Proxy-Instanz stellt der Client dieses Blattzertifikat bereit, um seine Identität nachzuweisen.
Im folgenden Beispiel wird OpenSSL verwendet, um einen Clientschlüssel und eine CSR zu generieren. Anschließend wird die CSR mit dem Schlüssel der Zwischen-CA signiert, den Sie im Abschnitt Root- und Zwischen zertifikate erstellen erstellt haben.
Führen Sie den folgenden OpenSSL-Befehl aus, um einen privaten RSA-Schlüssel mit dem Namen
client.keyzu generieren:openssl genpkey -algorithm RSA -out client.keyErstellen Sie eine Konfigurationsdatei mit dem Namen
client.cnf, in der ein DNS-Name für den alternativen Antragstellernamen (Subject Alternative Name, SAN) angegeben ist. So ist sichergestellt, dass das Zertifikat mit modernen Sicherheitsanforderungen kompatibel ist.cat > client.cnf << EOF [req] distinguished_name = req_distinguished_name req_extensions = v3_req prompt = no [req_distinguished_name] CN = my-client.example.com [v3_req] keyUsage = critical, digitalSignature, keyEncipherment extendedKeyUsage = clientAuth subjectAltName = @alt_names [alt_names] DNS.1 = my-client.example.com EOFSie können die Werte
CNundDNS.1nach Bedarf für Tests ändern.Führen Sie den OpenSSL-Anfragebefehl mit dem privaten Schlüssel und der Konfigurationsdatei aus, die Sie erstellt haben, um eine
client.req-Datei zu generieren.openssl req -new -key client.key -out client.req -config client.cnfVerwenden Sie den OpenSSL-Befehl
x509, um die Anfrage mit Ihrem Zwischenzertifikat (int.cert) und Schlüssel (int.key) zu signieren. Legen Sie einen Gültigkeitszeitraum fest, z. B. 365 Tage, und sorgen Sie dafür, dass die Erweiterungen aus Ihrer Konfigurationsdatei auf die generierteclient.cert-Datei angewendet werden.openssl x509 -req -in client.req -CA int.cert -CAkey int.key \ -set_serial 02 -days 365 -out client.cert \ -extfile client.cnf -extensions v3_reqDurch diesen Vorgang wird die Datei
client.certerstellt. Notieren Sie den im DNS-SAN verwendeten Wert (z. B.my-client.example.com) als Ihre Clientidentität. Sie können diesen Wert verwenden, um die Arbeitslast zu identifizieren, wenn Sie Ihre Autorisierungsrichtlinien für Secure Web Proxy erstellen.
Zertifikate formatieren
Formatieren Sie die
Root- und Zwischenzertifikate
in Umgebungsvariablen, die in der trust_config.yaml Datei verwendet werden sollen.
export ROOT_CERT=$(cat root.cert | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')
export INTERMEDIATE_CERT=$(cat int.cert | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')
Vertrauenskonfigurationsressource erstellen
Eine Vertrauenskonfiguration stellt Ihre Public-Key-Infrastruktur (PKI) im Zertifikatmanager dar. Die Vertrauenskonfiguration gibt Ihrer Secure Web Proxy-Instanz an, welchen Zertifizierungsstellen (Certificate Authorities, CAs) vertraut werden soll, wenn Clientzertifikate geprüft werden, die während eines mTLS-Handshakes für das Frontend präsentiert werden.
Diese Beispielressource für die Vertrauenskonfiguration enthält einen Trust Store mit einem Trust-Anchor (Root-CA) und einer Zwischen-CA. Der Zertifikatsinhalt wird aus den Umgebungsvariablen gelesen, die Sie in dem vorherigen Abschnitt Zertifikate formatieren erstellt haben.
Erstellen Sie eine
trust_config.yaml-Datei.cat << EOF > trust_config.yaml trustStores: TRUST_CONFIG_NAME: trustAnchors: - pemCertificate: | -----BEGIN CERTIFICATE----- <certificate content> -----END CERTIFICATE----- intermediateCAs: - pemCertificate: | -----BEGIN CERTIFICATE----- <certificate content> -----END CERTIFICATE----- EOFErsetzen Sie
TRUST_CONFIG_NAMEdurch den Namen Ihrer Vertrauenskonfigurationsressource.Importieren Sie die Datei
trust config.yamlmit demgcloud certificate-manager trust-configs importBefehl.gcloud certificate-manager trust-configs import TRUST_CONFIG_NAME\ --source=trust_config.yaml \ --location=LOCATION
Ersetzen Sie Folgendes:
TRUST_CONFIG_NAME: Name Ihrer VertrauenskonfigurationsressourceLOCATION: Region, in der Ihre Vertrauenskonfigurationsressource gespeichert ist
ServerTlsPolicy-Ressource erstellen
Eine ServerTlsPolicy-Ressource, auch als Ressource zur Clientauthentifizierung bezeichnet, definiert, wie Secure Web Proxy Clientzertifikate validiert. Hier können Sie den serverseitigen TLS-Modus und die Vertrauenskonfigurationsressource für die Zertifikatsprüfung angeben.
Das clientValidationMode Attribut bestimmt, wie die Verbindung verarbeitet wird
wenn ein Client entweder ein ungültiges Zertifikat oder gar kein Zertifikat bereitstellt.
Weitere Informationen finden Sie unter Clientvalidierungsmodi für mTLS für das Frontend.
Die Werte des Attributs clientValidationMode sind wie folgt:
REJECT_INVALID: Secure Web Proxy lässt nur Verbindungen von Clients zu, die ein gültiges Zertifikat präsentieren, das von einer Zertifizierungsstelle in Ihrer Vertrauenskonfiguration signiert wurde. Verbindungen mit ungültigen oder fehlenden Zertifikaten werden abgelehnt.ALLOW_INVALID_OR_MISSING_CLIENT_CERT: Secure Web Proxy lässt die Verbindungsanfrage zu, auch wenn das Clientzertifikat ungültig ist, nicht anhand Ihrer Vertrauenskonfiguration validiert werden kann oder ganz fehlt.
So erstellen Sie eine ServerTlsPolicy-Ressource:
Erstellen Sie eine
server_tls_policy.yaml-Datei. Wählen Sie eine der folgenden Optionen fürclientValidationModeaus:- Option 1: ALLOW_INVALID_OR_MISSING_CLIENT_CERT
name: SERVER_TLS_POLICY_NAME mtlsPolicy: clientValidationMode: ALLOW_INVALID_OR_MISSING_CLIENT_CERT clientValidationTrustConfig: projects/PROJECT_ID/locations/LOCATION/trustConfigs/TRUST_CONFIG_NAME- Option 2: REJECT_INVALID
name: SERVER_TLS_POLICY_NAME mtlsPolicy: clientValidationMode: REJECT_INVALID clientValidationTrustConfig: projects/PROJECT_ID/locations/LOCATION/trustConfigs/TRUST_CONFIG_NAMEErsetzen Sie Folgendes:
SERVER_TLS_POLICY_NAME: Name IhrerServerTlsPolicy-RessourcePROJECT_ID: ID Ihres Google Cloud ProjektsTRUST_CONFIG_NAME: Name Ihrer VertrauenskonfigurationsressourceLOCATION: Region, in der Ihre Secure Web Proxy-Instanz konfiguriert ist
Importieren Sie die
ServerTlsPolicy-Ressource mit demgcloud network-security server-tls-policies importBefehl.gcloud network-security server-tls-policies import SERVER_TLS_POLICY_NAME\ --source=server_tls_policy.yaml \ --location=LOCATION
Ersetzen Sie Folgendes:
SERVER_TLS_POLICY_NAME: Name IhrerServerTlsPolicy-RessourceLOCATION: Region, in der Ihre Secure Web Proxy-Instanz konfiguriert ist
Optional: Verwenden Sie den
gcloud network-security server-tls-policies listBefehl, um alle IhreServerTlsPoliciesRessourcen aufzulisten.gcloud network-security server-tls-policies list \ --location=LOCATION
Ersetzen Sie
LOCATIONdurch die Region, in der Ihre Secure Web Proxy-Instanz konfiguriert ist.
ServerTlsPolicy-Ressource Ihrer Secure Web Proxy-Instanz zuordnen
Hängen Sie die
ServerTlsPolicy-Ressource an die Dateigateway.yamlIhrer Secure Web Proxy-Instanz an.echo "serverTlsPolicy: //networksecurity.googleapis.com/projects/PROJECT_ID/locations/ LOCATION/serverTlsPolicies/SERVER_TLS_POLICY_NAME" >> gateway.yamlErsetzen Sie Folgendes:
PROJECT_ID: ID Ihres Google Cloud ProjektsLOCATION: Region, in der Ihre Secure Web Proxy-Instanz konfiguriert ist
Importieren Sie die Konfiguration Ihrer Secure Web Proxy-Instanz aus der
gateway.yamlDatei mit demgcloud network-services gateways importBefehl.gcloud network-services gateways import GATEWAY_NAME\ --source=gateway.yaml \ --location=LOCATIONErsetzen Sie Folgendes:
GATEWAY_NAME: Name Ihrer Secure Web Proxy-InstanzLOCATION: Region, in der Ihre Secure Web Proxy-Instanz konfiguriert ist
Autorisierungsrichtlinien konfigurieren
Weitere Informationen finden Sie unter Autorisierungsrichtlinien für Secure Web Proxy einrichten.
Logging
Weitere Informationen finden Sie unter Fehlerbehandlung und Logging für mTLS für das Frontend.
Beschränkungen
Secure Web Proxy unterstützt die Konfiguration von mTLS für das Frontend nur im expliziten Proxy-Routingmodus.
Wenn Sie eine sicherheitsregel basierend auf mTLS für das Frontend erstellen möchten, verwenden Sie Autorisierungs richtlinien für Secure Web Proxy. Regeln für Gateway-Sicherheitsrichtlinien werden nicht unterstützt.
Weitere Informationen finden Sie unter Beschränkungen für mTLS für das Frontend.