Auf dieser Seite wird beschrieben, wie Sie den zertifikatbasierten Zugriff (Certificate-Based Access, CBA) für Ihre Webanwendungen aktivieren. Mit der CBA können Sie den Zugriff von vertrauenswürdigen Geräten auf Unternehmenswebanwendungen sichern, die auf Google Cloudausgeführt werden.
Übersicht
Der kontextsensitive Zugriff für Webanwendungen nutzt die Funktionen für den kontextsensitiven Zugriff von Chrome Enterprise Premium undGoogle Cloud Netzwerkfunktionen, um den Zugriff mit gegenseitigem TLS (mTLS) zu sichern. Im Folgenden finden Sie die wichtigsten Komponenten, mit denen Sie die CBA für Webanwendungen aktivieren:
- Access Context Manager: Mit dieser Funktion können Sie Zugriffsebenen erstellen, die Zertifikate erfordern, um den Zugriff auf Webanwendungen zu bestimmen.
- Identity-Aware Proxy (IAP): Authentifiziert den Nutzerzugriff auf Webanwendungen.
- Google Cloud HTTPS-Load-Balancer: Bietet eine gegenseitige Authentifizierung (mTLS) zwischen Nutzern und Webanwendungen.
- Chrome Enterprise-Richtlinie: Bietet die gegenseitige Authentifizierung (mTLS) zwischen Nutzern und Webanwendungen bei Verwendung des Chrome-Browsers.
Hinweis
Prüfen Sie mit dem folgenden Befehl, ob Sie die aktuelle Version der Google Cloud CLI haben:
gcloud components update
mTLS für den externen HTTPS-Load Balancer einrichten
Folgen Sie der Anleitung, um den externen HTTPS-Load Balancer einzurichten. Notieren Sie sich den Namen des erstellten HTTPS-Ziel-Proxys, da Sie ihn in einem späteren Schritt benötigen.
Vertrauenskonfiguration erstellen
Erstellen Sie eine Vertrauenskonfiguration, die Ihre Art der Public-Key-Infrastruktur (PKI) darstellt.
Für diese Aufgabe benötigen Sie die Berechtigung certificatemanager.trustconfigs.create
für das Zielprojekt Google Cloud .
Sie können eine Vertrauenseinstellung mit einem von Google ausgestellten Zertifikat (Methode 1), mit Ihrem eigenen Zertifikat (Methode 2) oder mit einem selbst signierten Zertifikat mit Endpunktüberprüfung (Methode 3) erstellen.
Methode 1
Verwenden Sie ein von Google ausgestelltes Zertifikat, um eine Vertrauenskonfiguration zu erstellen.
- Führen Sie die Schritte unter Stamm-CA 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 ID des Stammzertifikats.
- POOL_ID: Die Pool-ID des Root-Zertifikats.
- CA_LOCATION: Der Standort der Zertifizierungsstelle.
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 umfasst beide Markierungen.Speichern Sie das Root-Zertifikat im PEM-Format in einer Datei.
So erstellen Sie eine Vertrauenskonfiguration:
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 zum PEM-codierten Trust Anchor.
- IM_CERT_PATH: Der Pfad zum 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 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 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 Vertrauenskonfiguration mit dem Namen
TRUST_CONFIG_NAME
. Die Vertrauenskonfiguration enthält einen Trust Store mit dem Stammzertifikat und zwei Zwischenzertifikaten.Importieren Sie die Vertrauenskonfiguration in den Google Cloud Zertifikatmanager:
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 Ihrer Vertrauenskonfiguration.
- GCP_PROJECT: Die Google Cloud Projekt-ID.
Wenn Sie eine komplexere Struktur mit Zwischen-CAs bereitstellen, die von der Stamm-CA signiert wurden, fügen Sie Ihre Zwischen-CAs als intermediateCAs
hinzu.
Methode 2
Verwenden Sie Ihre eigene PKI-Bereitstellung mit vorhandenen Zertifikaten, um eine Vertrauenskonfiguration zu erstellen.
Bei dieser Art von Vertrauenseinstellung wird davon ausgegangen, dass ein einfacher Vertrauensspeicher mit einem einzelnen Vertrauensanker vorhanden ist, der ein Stammzertifikat darstellt. Es sind keine Zwischenzertifikate angegeben.
So erstellen Sie eine Vertrauenskonfiguration:
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 zum PEM-codierten Trust Anchor.
- IM_CERT_PATH: Der Pfad zum 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 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 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 Vertrauenskonfiguration mit dem Namen
TRUST_CONFIG_NAME
. Die Vertrauenskonfiguration enthält einen Trust Store mit dem Stammzertifikat und zwei Zwischenzertifikaten.Importieren Sie die Vertrauenskonfiguration in den Google Cloud Zertifikatmanager:
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 Ihrer Vertrauenskonfiguration.
- GCP_PROJECT: Die Google Cloud Projekt-ID.
Methode 3
Wenn Sie den Chrome-Browser verwenden und ein selbst signiertes Zertifikat mit der Endpunktprüfung verwenden möchten, folgen Sie der Anleitung in diesem Abschnitt.
Folgen Sie der Anleitung, um die Endpunktprüfung für Ihre Organisation bereitzustellen. Mit der Endpunktprüfung wird automatisch ein von Google ausgestelltes selbstsigniertes Zertifikat auf Ihren Geräten bereitgestellt. Sie müssen also keine Vertrauenseinstellung erstellen.
TLS-Richtlinie erstellen, um mTLS auf dem externen Load Balancer zu aktivieren
Wenn Sie Methode 3 verwendet haben, können Sie diesen Schritt überspringen.
Für diese Aufgabe benötigen Sie die folgenden Berechtigungen:
certificatemanager.trustconfigs.use
in der Vertrauenskonfiguration, die Sie für dieseServerTlsPolicy
erstellt habennetworksecurity.serverTlsPolicies.create
für das Ziel Google Cloud projekt
Erstellen Sie die YAML-Datei der Server-TLS-Richtlinie:
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 Vertrauensstellung, die Sie in einem vorherigen Schritt erstellt haben.
Informationen zu den Clientvalidierungsoptionen für
clientValidationMode
finden Sie unter MTLS-Client-Validierungsmodi.Importieren Sie die YAML-Datei 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 eine HTTPS-Zielrichtlinie anhängen
Für diese Aufgabe benötigen Sie die Berechtigung compute.targetHttpsProxies.get
für das Ziel Google Cloud projekt.
Exportieren Sie Ihren vorhandenen Ziel-HTTPS-Proxy 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.
Fügen Sie die
ServerTlsPolicy
der Ziel-HTTPS-Proxy-Konfiguration an:Für diese Aufgabe benötigen Sie die folgenden Berechtigungen:
networksecurity.serverTlsPolicies.use
auf demServerTlsPolicy
, das Sie für den Ziel-HTTPS-Proxy erstellt habencompute.targetHttpsProxies.update
für das Ziel Google Cloud projekt
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 Ziel-HTTPS-Proxy, indem Sie die neue Konfiguration aus der lokalen Datei importieren:
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 Ihrer benutzerdefinierten Zugriffsebene den folgenden Ausdruck hinzu:
Wenn Sie eine Vertrauenseinstellung 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 Vertrauenskonfiguratioen darstellen:
certificatemanager.googleapis.com/projects/GCP_PROJECT/locations/global/trustConfigs/TRUST_CONFIG_NAME
.Sie müssen mindestens einen Pfad zur Vertrauensstellungsdatei angeben.
Ersetzen Sie Folgendes:
- GCP_PROJECT: Die Google Cloud Projekt-ID.
- TRUST_CONFIG_NAME: Der Name Ihrer Vertrauenskonfiguration.
Wenn Sie ein von Google ausgestelltes selbstsigniertes Zertifikat verwendet haben (Methode 3), fügen Sie in das Feld Bedingungen Ihrer benutzerdefinierten Zugriffsebene den folgenden Ausdruck ein, um die Zertifikatbindung bei der Authentifizierung zu verwenden:
certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE
gcloud
Wenn Sie eine Vertrauensstellung konfiguriert haben (Methode 1 oder Methode 2), führen Sie den folgenden Befehl aus, um eine benutzerdefinierte Zugriffsebene zu erstellen, bei der bei der Authentifizierung eine PKI-Attestierungsbindung verwendet wird:
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 mit dem folgenden Ausdruck:
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 Vertrauenskonfiguratioen darstellen:
certificatemanager.googleapis.com/projects/GCP_PROJECT/locations/global/trustConfigs/TRUST_CONFIG_NAME
.Sie müssen mindestens einen Pfad zur Vertrauensstellungsdatei angeben.
Ersetzen Sie Folgendes:
- GCP_PROJECT: Die Google Cloud Projekt-ID.
- TRUST_CONFIG_NAME: Der Name Ihrer Vertrauenskonfiguration.
DESCRIPTION: Ausführliche Beschreibung der Zugriffsebene
POLICY_NAME: Die Zugriffsrichtlinie Ihrer Organisation.
Wenn Sie keine Vertrauenseinstellung haben, weil Sie ein selbstsigniertes Zertifikat mit 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-Architektur für Webanwendungen bietet IAP eine principal-basierte Richtliniendurchsetzung, 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 Anleitung.
- Rufen Sie IAP auf, um die zuvor erstellte Zugriffsebene anzuhängen:
IAP aufrufen - Wählen Sie die Ressource aus, die Sie mit CBA schützen möchten, und klicken Sie dann auf Einstellungen.
- Geben Sie in das 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 Google Cloud CLI-Dokumentation.
Browser so konfigurieren, dass das Zertifikat automatisch ausgewählt wird
Wenn Ihr Browser das Zertifikat bei der Zugriffsbestimmung automatisch auswählen soll, führen Sie die Schritte für Ihren Browser aus.
Chrome
Konfigurieren Sie die AutoSelectCertificateForURLs
-Chrome-Richtlinie so, dass Chrome während des mTLS-Handshakes das richtige Zertifikat verwendet.
Prüfen Sie, ob der Chrome-Browser über die Chrome-Verwaltung über die Cloud oder über Windows-Gruppenrichtlinien verwaltet wird:
- Windows, macOS, Linux: Führen Sie die Schritte aus, um ein verwaltetes Chrome-Profil einzurichten.
- Chrome: Registrieren Sie das Gerät beim Unternehmen.
Fügen Sie die
AutoSelectCertificateForUrls
-Richtlinie hinzu:- Gehen Sie in der Admin-Konsole zu 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 Informationen zum Root-Zertifikat hinzu.
Weitere Informationen finden Sie in der Dokumentation zum Richtlinienschema. Im Folgenden finden Sie eine Beispielkonfiguration für die Richtlinie, in der das Zertifikat aus der Endpunktprüfung verwendet wird:
{
"pattern":"https://[*.].mysite.com",
"Filter":{
"ISSUER":{
"CN":"Google Endpoint Verification"
}
}
}
Safari
Konfigurieren Sie die Identitätseinstellung:
- Ö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 Datei > Neue Identitätseinstellung.
- Geben Sie die URL ein und klicken Sie auf Hinzufügen.
Dadurch wird ein neuer Eintrag für die Identitätseinstellungen in Ihrem Schlüsselbund erstellt, den Sie aktualisieren können.
Edge
Legen Sie die AutoSelectCertificateForUrls
-Edge-Richtlinie fest. Folgen Sie dazu der Anleitung in der Edge-Dokumentation.