Auf dieser Seite wird beschrieben, wie Sie den zertifikatsbasierten Zugriff (Certificate-based Access, CBA) für Ihre Webanwendungen aktivieren. Mit der CBA können Sie den Zugriff von vertrauenswürdigen Geräten auf Webanwendungen von Unternehmen, die in Google Cloud ausgeführt werden, sichern.
Überblick
Die CBA für Webanwendungen nutzt die Funktionen für den kontextsensitiven Zugriff von Chrome Enterprise Premium und das Google Cloud-Netzwerk, um den Zugriff mithilfe von gegenseitigem TLS (mTLS) zu sichern. Sie arbeiten mit folgenden Hauptkomponenten zusammen, um die CBA für Webanwendungen zu aktivieren:
- Access Context Manager: Hiermit können Sie Zugriffsebenen erstellen, für die Zertifikate erforderlich sind, um den Zugriff auf Webanwendungen zu bestimmen.
- Identity-Aware Proxy (IAP): authentifiziert den Nutzerzugriff auf Webanwendungen.
- HTTPS-Load-Balancer von Google Cloud: Bietet eine gegenseitige Authentifizierung (mTLS) zwischen Nutzern und Webanwendungen.
- Chrome Enterprise-Richtlinie: Bietet eine gegenseitige Authentifizierung (mTLS) zwischen Nutzern und Webanwendungen, wenn diese den Chrome-Browser verwenden.
Hinweise
Prüfen Sie mit dem folgenden Befehl, ob Sie eine aktuelle Version der Google Cloud CLI haben:
gcloud components update
mTLS für den externen HTTPS-Load-Balancer einrichten
Folgen Sie der instructions, um den externen HTTPS-Load-Balancer einzurichten. Notieren Sie sich den Namen des erstellten HTTPS-Zielproxys, da Sie ihn in einem späteren Schritt benötigen.
Vertrauenskonfiguration erstellen
Erstellen Sie eine Vertrauenskonfiguration, die Ihren Typ von Public-Key-Infrastruktur (PKI) darstellt.
Zum Ausführen dieser Aufgabe benötigen Sie die Berechtigung certificatemanager.trustconfigs.create
für das Google Cloud-Zielprojekt.
Sie können eine Konfiguration der Vertrauensstellung mit einem von Google ausgestellten Zertifikat (Methode 1), mit Ihrem eigenen Zertifikat (Methode 2) oder mit einem selbst signierten Zertifikat mit Endpunktprüfung (Methode 3) erstellen.
1. Methode
Verwenden Sie ein von Google ausgestelltes Zertifikat, um eine Konfiguration der Vertrauensstellung zu erstellen.
- Führen Sie die Schritte unter Root-Zertifizierungsstelle erstellen aus.
Rufen Sie den Inhalt der PEM-Datei ab:
gcloud privateca roots describe ROOT_CA_ID \ --pool=POOL_ID \ --location=CA_LOCATION \ --format='value(pemCaCertificates)'
Ersetzen Sie Folgendes:
- ROOT_CA_ID: Die Root-Zertifikat-ID.
- POOL_ID: Die ID des Stammzertifikatpools.
- CA_LOCATION: Der Zertifizierungsstellenstandort.
Rufen Sie das Root-Zertifikat ab, das im Feld
pemCaCertificates
zurückgegeben wird. Das Zertifikat ist der String zwischen den MarkierungenBEGIN CERTIFICATE
undEND CERTIFICATE
und enthält beide Markierungen.Speichern Sie das Root-Zertifikat im PEM-Format in einer Datei.
Konfiguration der Vertrauensstellung erstellen:
Legen Sie die folgenden Umgebungsvariablen fest:
ROOT_PEM_FILE=TRUST_ANCHOR_PATH INT_PEM_FILE1=IM_CERT_PATH INT_PEM_FILE2=SECOND_IM_CERT_PATH
Ersetzen Sie Folgendes:
- TRUST_ANCHOR_PATH: Der Pfad zu Ihrem PEM-codierten Trust-Anchor.
- IM_CERT_PATH: Der Pfad zu Ihrem PEM-codierten Zwischenzertifikat.
- SECOND_IM_CERT_PATH: Der Pfad zu Ihrem zweiten PEM-codierten Zwischenzertifikat.
Bereiten Sie den Inhalt der YAML-Datei für die Konfiguration der Vertrauensstellung vor:
ROOT=$(cat ROOT_PEM_FILE | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g') INT_1=$(cat INT_PEM_FILE1 | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g') INT_2=$(cat INT_PEM_FILE2 | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')
Erstellen Sie die YAML-Datei für die Konfiguration der Vertrauensstellung:
cat << EOF > trust_config.yaml name: "${TRUST_CONFIG_NAME?}" trustStores: - trustAnchors: - pemCertificate: "${ROOT?}" intermediateCas: - pemCertificate: "${INT_1?}" - pemCertificate: "${INT_2?}" EOF
Diese YAML-Datei definiert eine Konfiguration der Vertrauensstellung mit dem Namen
TRUST_CONFIG_NAME
. Die Vertrauenskonfiguration enthält einen Trust Store, der das Root-Zertifikat und zwei Zwischenzertifikate enthält.Importieren Sie die Konfiguration der Vertrauensstellung in den Google Cloud Certificate Manager:
gcloud certificate-manager trust-configs import TRUST_CONFIG_NAME \ --project=GCP_PROJECT \ --source=${PWD?}/trust_config.yaml
Ersetzen Sie Folgendes:
- TRUST_CONFIG_NAME: Der Name der Konfiguration der Vertrauensstellung.
- GCP_PROJECT: die Google Cloud-Projekt-ID.
Wenn Sie eine komplexere Struktur mit vom Stamm signierten Zwischenzertifizierungsstellen bereitstellen, müssen Sie die Zwischenzertifizierungsstellen als intermediateCAs
hinzufügen.
2. Methode
Verwenden Sie Ihre eigene PKI-Bereitstellung mit vorhandenen Zertifikaten, um eine Konfiguration der Vertrauensstellung zu erstellen.
Bei dieser Art von Vertrauenskonfiguration wird von einem einfachen Trust Store mit einem einzelnen Vertrauensanker ausgegangen, der ein Root-Zertifikat darstellt. Es sind keine Zwischenzertifikate angegeben.
Konfiguration der Vertrauensstellung erstellen:
Legen Sie die folgenden Umgebungsvariablen fest:
ROOT_PEM_FILE=TRUST_ANCHOR_PATH INT_PEM_FILE1=IM_CERT_PATH INT_PEM_FILE2=SECOND_IM_CERT_PATH
Ersetzen Sie Folgendes:
- TRUST_ANCHOR_PATH: Der Pfad zu Ihrem PEM-codierten Trust-Anchor.
- IM_CERT_PATH: Der Pfad zu Ihrem PEM-codierten Zwischenzertifikat.
- SECOND_IM_CERT_PATH: Der Pfad zu Ihrem zweiten PEM-codierten Zwischenzertifikat.
Bereiten Sie den Inhalt der YAML-Datei für die Konfiguration der Vertrauensstellung vor:
ROOT=$(cat ROOT_PEM_FILE | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g') INT_1=$(cat INT_PEM_FILE1 | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g') INT_2=$(cat INT_PEM_FILE2 | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')
Erstellen Sie die YAML-Datei für die Konfiguration der Vertrauensstellung:
cat << EOF > trust_config.yaml name: "${TRUST_CONFIG_NAME?}" trustStores: - trustAnchors: - pemCertificate: "${ROOT?}" intermediateCas: - pemCertificate: "${INT_1?}" - pemCertificate: "${INT_2?}" EOF
Diese YAML-Datei definiert eine Konfiguration der Vertrauensstellung mit dem Namen
TRUST_CONFIG_NAME
. Die Vertrauenskonfiguration enthält einen Trust Store, der das Root-Zertifikat und zwei Zwischenzertifikate enthält.Importieren Sie die Konfiguration der Vertrauensstellung in den Google Cloud Certificate Manager:
gcloud certificate-manager trust-configs import TRUST_CONFIG_NAME \ --project=GCP_PROJECT \ --source=${PWD?}/trust_config.yaml
Ersetzen Sie Folgendes:
- TRUST_CONFIG_NAME: Der Name der Konfiguration der Vertrauensstellung.
- GCP_PROJECT: die Google Cloud-Projekt-ID.
Methode 3
Wenn Sie einen Chrome-Browser verwenden und ein selbst signiertes Zertifikat mit Endpunktprüfung verwenden möchten, folgen Sie der Anleitung in diesem Abschnitt.
Folgen Sie der instructions, um die Endpunktprüfung für Ihre Organisation bereitzustellen. Die Endpunktprüfung stellt auf Ihren Geräten automatisch ein von Google ausgestelltes, selbst signiertes Zertifikat bereit. Sie müssen keine Konfiguration der Vertrauensstellung erstellen.
Erstellen Sie eine TLS-Richtlinie, um mTLS auf Ihrem externen Load-Balancer zu aktivieren
Wenn Sie Methode 3 verwendet haben, können Sie diesen Schritt überspringen.
Zum Ausführen dieser Aufgabe benötigen Sie die folgenden Berechtigungen:
certificatemanager.trustconfigs.use
für die Konfiguration der Vertrauensstellung, die Sie fürServerTlsPolicy
erstellt habennetworksecurity.serverTlsPolicies.create
für das Google Cloud-Zielprojekt
Erstellen Sie die YAML-Datei für die TLS-Richtlinie des Servers:
cat << EOF > server_tls_policy.yaml name: "SERVER_TLS_POLICY_NAME" mtlsPolicy: clientValidationMode: ALLOW_INVALID_OR_MISSING_CLIENT_CERT clientValidationTrustConfig: projects/GCP_PROJECT/locations/global/trustConfigs/TRUST_CONFIG_NAME EOF
Ersetzen Sie Folgendes:
- SERVER_TLS_POLICY_NAME: Der Name der TLS-Serverrichtlinie.
- GCP_PROJECT: die Google Cloud-Projekt-ID.
- TRUST_CONFIG_NAME: Die Konfiguration der Vertrauensstellung, die Sie in einem vorherigen Schritt erstellt haben.
Informationen zu den Clientvalidierungsoptionen für
clientValidationMode
finden Sie unter MTLS-Clientvalidierungsmodi.Importieren Sie die YAML-Datei mit der Server-TLS-Richtlinie in das Google Cloud-Projekt:
gcloud network-security server-tls-policies import ${SERVER_TLS_POLICY_NAME?} \ --project=GCP_PROJECT \ --source=${PWD?}/server_tls_policy.yaml \ --location=global
Ersetzen Sie GCP_PROJECT durch die Google Cloud-Projekt-ID.
Nachdem Sie eine TLS-Richtlinie erstellt haben, können Sie sie nicht mehr ändern. Wenn Sie Änderungen an einer vorhandenen TLS-Richtlinie vornehmen möchten, löschen Sie die vorhandene TLS-Richtlinie und erstellen Sie eine neue.
TLS-Richtlinie an Ziel-HTTPS-Richtlinie anhängen
Zum Ausführen dieser Aufgabe benötigen Sie die Berechtigung compute.targetHttpsProxies.get
für das Google Cloud-Zielprojekt.
Exportieren Sie den vorhandenen HTTPS-Zielproxy in eine lokale Datei:
gcloud compute target-https-proxies export TARGET_HTTPS_PROXY_NAME \ --project=GCP_PROJECT \ --global \ --destination=${PWD?}/xlb-mtls-target-proxy.yaml
Ersetzen Sie Folgendes:
- TARGET_HTTPS_PROXY_NAME: Der Ziel-HTTPS-Proxy.
- GCP_PROJECT: die Google Cloud-Projekt-ID.
Hängen Sie
ServerTlsPolicy
an die Ziel-HTTPS-Proxykonfiguration an:Zum Ausführen dieser Aufgabe benötigen Sie die folgenden Berechtigungen:
networksecurity.serverTlsPolicies.use
auf derServerTlsPolicy
, die Sie für den Ziel-HTTPS-Proxy erstellt habencompute.targetHttpsProxies.update
für das Google Cloud-Zielprojekt
echo "serverTlsPolicy: //networksecurity.googleapis.com/projects/GCP_PROJECT/locations/global/serverTlsPolicies/SERVER_TLS_POLICY_NAME" >> xlb-mtls-target-proxy.yaml
Ersetzen Sie Folgendes:
- GCP_PROJECT: die Google Cloud-Projekt-ID.
- SERVER_TLS_POLICY_NAME: Die TLS-Serverrichtlinie.
Aktualisieren Sie den HTTPS-Zielproxy. Importieren Sie dazu die neue Konfiguration aus der lokalen Datei:
gcloud compute target-https-proxies import TARGET_HTTPS_PROXY_NAME \ --project=GCP_PROJECT \ --global \ --source=${PWD?}/xlb-mtls-target-proxy.yaml
Ersetzen Sie Folgendes:
- TARGET_HTTPS_PROXY_NAME: Der Ziel-HTTPS-Proxy.
- GCP_PROJECT: die Google Cloud-Projekt-ID.
Zugriffsebene erstellen, für die Zertifikate erforderlich sind
Console
- Folgen Sie der Anleitung zum Erstellen einer benutzerdefinierten Zugriffsebene.
Fügen Sie der benutzerdefinierten Zugriffsebene den folgenden Ausdruck hinzu:
Wenn Sie eine Konfiguration der Vertrauensstellung erstellt haben (Methode 1 oder Methode 2), fügen Sie den folgenden Ausdruck in das Feld Bedingungen Ihrer benutzerdefinierten Zugriffsebene ein, um bei der Authentifizierung die PKI-Attestierungsbindung zu verwenden:
certIsPkiAttested(origin, ["TLS_POLICY_FULL_RESOURCE_PATH1", "TLS_POLICY_FULL_RESOURCE_PATH2", …]) == true
Dabei sind TLS_POLICY_FULL_RESOURCE_PATH1 und TLS_POLICY_FULL_RESOURCE_PATH2 die Pfade, die mehrere Konfigurationen der Vertrauensstellung darstellen:
certificatemanager.googleapis.com/projects/GCP_PROJECT/locations/global/trustConfigs/TRUST_CONFIG_NAME
.Sie müssen mindestens einen Pfad für die Konfiguration der Vertrauensstellung angeben.
Ersetzen Sie Folgendes:
- GCP_PROJECT: die Google Cloud-Projekt-ID.
- TRUST_CONFIG_NAME: Der Name der Konfiguration der Vertrauensstellung.
Wenn Sie ein von Google ausgestelltes, selbst signiertes Zertifikat (Methode 3) verwendet haben, fügen Sie den folgenden Ausdruck in das Feld Bedingungen Ihrer benutzerdefinierten Zugriffsebene ein, um die Zertifikatsbindung bei der Authentifizierung zu verwenden:
certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE
gcloud
Wenn Sie eine Konfiguration der Vertrauensstellung erstellt haben (Methode 1 oder Methode 2), führen Sie den folgenden Befehl aus, um eine benutzerdefinierte Zugriffsebene zu erstellen, die bei der Authentifizierung die PKI-Attestierungsbindung verwendet:
gcloud access-context-manager levels create ACCESS_LEVEL_NAME \
--title=TITLE \
--custom-level-spec=FILE \
--description=DESCRIPTION \
--policy=POLICY_NAME
Ersetzen Sie Folgendes:
- ACCESS_LEVEL_NAME: Ein eindeutiger Name für die Zugriffsebene.
- TITLE: ein für Menschen lesbarer Titel.
FILE: Eine YAML-Datei, die den folgenden Ausdruck enthält:
certIsPkiAttested(origin, ["TLS_POLICY_FULL_RESOURCE_PATH1", "TLS_POLICY_FULL_RESOURCE_PATH2", …]) == true
Dabei sind TLS_POLICY_FULL_RESOURCE_PATH1 und TLS_POLICY_FULL_RESOURCE_PATH2 die Pfade, die mehrere Konfigurationen der Vertrauensstellung darstellen:
certificatemanager.googleapis.com/projects/GCP_PROJECT/locations/global/trustConfigs/TRUST_CONFIG_NAME
.Sie müssen mindestens einen Pfad für die Konfiguration der Vertrauensstellung angeben.
Ersetzen Sie Folgendes:
- GCP_PROJECT: die Google Cloud-Projekt-ID.
- TRUST_CONFIG_NAME: Der Name der Konfiguration der Vertrauensstellung.
DESCRIPTION: Eine ausführliche Beschreibung der Zugriffsebene.
POLICY_NAME: die Zugriffsrichtlinie Ihrer Organisation.
Wenn Sie keine Konfiguration der Vertrauensstellung haben, da Sie ein selbst signiertes Zertifikat mit der Endpunktprüfung (Methode 3) verwenden, fügen Sie Ihrer benutzerdefinierten Zugriffsebene den folgenden Ausdruck hinzu:
certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE
Zertifikatbasierten Zugriff mit Identity-Aware Proxy (IAP) erzwingen
In der CBA für Webanwendungen-Architektur bietet IAP eine prinzipalbasierte Richtlinienerzwingung, um Ihre Webanwendungen vor nicht vertrauenswürdigen Geräten zu schützen.
Führen Sie die folgenden Schritte aus, um IAP zu aktivieren und die CBA-Richtlinie zu konfigurieren:
- Wenn Sie IAP noch nicht eingerichtet haben, folgen Sie der instructions, um IAP einzurichten.
- Wechseln Sie zu IAP, um die zuvor erstellte Zugriffsebene anzuhängen:
Zu IAP - Wählen Sie die Ressource aus, die Sie mit der CBA sichern möchten, und klicken Sie dann auf Settings (Einstellungen).
- Geben Sie im Feld Zugriffsebenen den Namen der von Ihnen erstellten Zugriffsebene ein.
Informationen zum Konfigurieren einer CBA-Richtlinie in IAP mit der Google Cloud CLI finden Sie in der Dokumentation zur Google Cloud CLI.
Browser so konfigurieren, dass das Zertifikat automatisch ausgewählt wird
Wenn Ihr Browser beim Ermitteln des Zugriffs automatisch das Zertifikat auswählen soll, führen Sie die entsprechenden Schritte für Ihren Browser aus.
Chrome
Konfigurieren Sie die Chrome-Richtlinie AutoSelectCertificateForURLs
so, dass Chrome während des mTLS-Handshakes das richtige Zertifikat verwendet.
Achten Sie darauf, dass der Chrome-Browser über die Chrome-Verwaltung über die Cloud oder über die Windows-Gruppenrichtlinie verwaltet wird:
- Windows, macOS, Linux: Führen Sie die Schritte zum Einrichten eines verwalteten Chrome-Profils aus.
- Chrome: Registrieren Sie das Gerät im Unternehmen.
Fügen Sie die Richtlinie
AutoSelectCertificateForUrls
hinzu:- Klicken Sie in der Admin-Konsole auf Geräte > Chrome > Einstellungen > Nutzer- und Browsereinstellungen > Clientzertifikate.
- Wählen Sie eine Organisation aus.
- Fügen Sie eine
AutoSelectCertificateForUrls
-Richtlinie für die URL Ihrer Webanwendung und die Informationen zum Root-Zertifikat hinzu.
Weitere Informationen finden Sie in der Dokumentation zum Richtlinienschema. Im Folgenden finden Sie ein Beispiel für eine Richtlinienkonfiguration, die das Zertifikat aus der Endpunktprüfung verwendet:
{
"pattern":"https://[*.].mysite.com",
"Filter":{
"ISSUER":{
"CN":"Google Endpoint Verification"
}
}
}
Safari
Konfigurieren Sie die Identitätseinstellungen:
- Öffnen Sie die Schlüsselbundverwaltung und wählen Sie Alle Elemente aus.
- Wählen Sie das Zertifikat aus, das Sie konfigurieren möchten.
- Klicken Sie auf File > New Identity Preference (Datei > Neue Identitätseinstellung).
- Geben Sie die URL ein und klicken Sie auf Hinzufügen.
Dadurch wird in Ihrem Schlüsselbund ein neuer Eintrag für die Identitätseinstellung erstellt, den Sie aktualisieren können.
Edge
Legen Sie die Edge-Richtlinie AutoSelectCertificateForUrls
gemäß der Anleitung in der Edge-Dokumentation fest.