Client-Server-Anwendungen sichern

Dieses Dokument bietet eine allgemeine Übersicht über den BeyondCorp Enterprise-Client-Connector und beschreibt, wie er aktiviert wird.

Übersicht

BeyondCorp Enterprise ist die Zero-Trust-Lösung von Google, die sicheren Zugriff auf private Anwendungen mit integriertem Bedrohungs- und Datenschutz bietet. BeyondCorp Enterprise bietet mithilfe von Chrome sicheren Zugriff für alle webbasierten Anwendungen (HTTPS).

Der BeyondCorp Enterprise-Client-Connector erweitert die Unterstützung auf Nicht-Webanwendungen durch Erstellen einer sicheren Verbindung zu Anwendungen, die sowohl in Google Cloud- als auch in Nicht-Google Cloud-Umgebungen ausgeführt werden, mit vollständigem Kontext und identitätssensitivem Zugriff.

Funktionsweise

Die folgenden Komponenten bilden den Client-Connector:

  • Endpunktprüfung und Client-Agent: Der Client-Connector ist in die Endpunktprüfung eingebunden, eine Chrome-Erweiterung mit einem nativen, einfachen Agent, der auf Nutzer-Laptops oder Desktops ausgeführt wird und Geräteinformationen meldet. Die Endpunktprüfung dient auch als Steuerungsebene für den Endnutzer, um Verbindungen zu Client-Gateways zu starten und zu beenden.

  • Client-Gateways: Regionale, serverseitige Komponenten, zu denen Clients eine Verbindung herstellen können. Client-Gateways werden von Administratoren bereitgestellt. Die Gateways kommunizieren mit dem BeyondCorp Enterprise-Erzwingungssystem, um kontextsensitive Prüfungen zu erzwingen. Das BeyondCorp Enterprise-Erzwingungssystem verwendet Identity-Aware Proxy und Access Context Manager, eine flexible Zero-Trust-Richtlinien-Engine von BeyondCorp Enterprise.

Traffic von geschützten Geräten (Client) an Ihre geschützten Anwendungen wird über einen sicheren Kanal über das Gateway gesendet. Sie können eine Verbindung zu Webanwendungen und anderen Webanwendungen herstellen, die in Google Cloud oder außerhalb von Google Cloud ausgeführt werden. Sie können Cloud VPN oder Cloud Interconnect verwenden, um eine Verbindung zu Ihren Anwendungen herzustellen, die nicht in Google Cloud enthalten sind.

Hinweis

Bevor Sie mit dem Aktivieren des BeyondCorp Enterprise-Client-Connectors beginnen, müssen folgende Voraussetzungen erfüllt sein:

  • Eine BeyondCorp Enterprise-Lizenz

  • Eine Google Cloud-Organisationsdomain.

  • Ein Google Cloud-Projekt mit zugewiesener Abrechnung.

  • Google Workspace-Cloud Identity-Nutzerkonten Informationen zum Erstellen von Cloud Identity-Konten finden Sie unter Cloud Identity-Nutzerkonten erstellen.

  • Eine Nicht-Webressource, die Sie schützen möchten. Die Ressource kann nativ in Google Cloud, lokal oder in einer anderen öffentlichen Cloud sein. Sie können eine benutzerdefinierte VPC erstellen oder Ihr vorhandenes Netzwerk mit einer Anwendung in Google Cloud verwenden. Sie können auch eine damit verbundene Nicht-Google Cloud-Anwendung über Cloud VPN oder Cloud Interconnect verbinden.

  • Die folgenden APIs sind aktiviert:

  • Die folgenden IAM-Rollen:

  • Eine der empfohlenen Hardwarekonfigurationen für den Client:

    • Apple Mac OS 10.11 und höher mit mindestens zwei Kernen und 2 GB Arbeitsspeicher
    • Microsoft Windows 10 und höher mit mindestens vier Kernen und 2 GB Arbeitsspeicher

BeyondCorp Enterprise-Client-Connector aktivieren

Privaten Dienstzugriff einrichten

Der Client-Connector verwendet den Zugriff auf private Dienste, um Verbindungen zwischen dem von Google verwalteten VPC-Netzwerk und dem Nutzer-VPC-Netzwerk zu ermöglichen. Dadurch wird der Traffic von Nutzern an das Nutzer-VPC-Netzwerk weitergeleitet.

  1. Für den privaten Dienstzugriff müssen Sie einen IP-Adressbereich reservieren, damit keine IP-Adresskonflikte zwischen Ihrem VPC-Netzwerk und dem von Google verwalteten VPC-Netzwerk auftreten. Führen Sie den folgenden Befehl aus, um einen IP-Bereich zuzuweisen:

    gcloud compute addresses create RESERVED_RANGE \
      --network=CONSUMER_NETWORK \
      --project=CONSUMER_PROJECT \
      --prefix-length=16 \
      --purpose=VPC_PEERING \
      --global
    

    Ersetzen Sie Folgendes:

    • RESERVED_RANGE: Der Name des IP-Adressbereichs, der für VPC-Peering reserviert werden soll. Der Name darf nur Kleinbuchstaben, Ziffern und Bindestriche enthalten.
    • CONSUMER_NETWORK: Der Name des VPC-Netzwerks, das mit der Anwendung verbunden ist.
    • CONSUMER_PROJECT: Die ID Ihres Projekts, das den CONSUMER_NETWORK hostet.
  2. Erstellen Sie die VPC-Peering-Verbindung mit dem folgenden Befehl:

    gcloud services vpc-peerings connect \
     --network=CONSUMER_NETWORK \
     --project=CONSUMER_PROJECT \
     --ranges=RESERVED_RANGE \
     --service="servicenetworking.googleapis.com"
    

    Ersetzen Sie Folgendes:

    • CONSUMER_NETWORK: Der Name des VPC-Netzwerks, das mit der Anwendung verbunden ist.
    • CONSUMER_PROJECT: Die ID Ihres Projekts, das den CONSUMER_NETWORK hostet.
    • RESERVED_RANGE: Der Name des reservierten Bereichs für VPC-Peering.
  3. Rufen Sie mit dem folgenden Befehl die Details des zugewiesenen IP-Bereichs ab:

    gcloud compute addresses describe RESERVED_RANGE \
      --global \
      --project=CONSUMER_PROJECT
    

    Ersetzen Sie Folgendes:

    • RESERVED_RANGE: Der Name des reservierten Bereichs für VPC-Peering.
    • CONSUMER_PROJECT: Die ID Ihres Projekts, das den CONSUMER_NETWORK hostet.
  4. Verwenden Sie die Werte address und prefixLength aus der Ausgabe im vorherigen Schritt, um den zugewiesenen IP-Bereich im CIDR-Format darzustellen. Führen Sie dann den folgenden Befehl aus, um eine Firewallregel zu erstellen:

    gcloud compute firewall-rules create "allow-peered-ingress" \
      --network=CONSUMER_NETWORK \
      --project=CONSUMER_PROJECT \
      --direction ingress \
      --action allow \
      --source-ranges={Allocated IP range in CIDR format i.e. address/prefixLength} \
      --rules=all
    

    Ersetzen Sie Folgendes:

    • CONSUMER_NETWORK: Der Name des VPC-Netzwerks, das mit der Anwendung verbunden ist.
    • CONSUMER_PROJECT: Die ID Ihres Projekts, das den CONSUMER_NETWORK hostet.

    Informationen zum Konfigurieren von Firewallregeln finden Sie unter Firewallregeln verwenden.

Client-Connector-Ressourcen einrichten

Es gibt zwei Arten von Ressourcen: den Client-Connector-Dienst und das Client-Gateway.

Mit dem Client-Connector-Dienst wird eine gemeinsame Konfiguration für eine Gruppe von Client-Gateways definiert. Client-Gateways beziehen sich auf den Client-Connector-Dienst und werden verwendet, um die Regionen zu steuern, in denen Sie den Nutzertraffic verwalten möchten.

Derzeit ist nur ein Client-Connector-Dienst pro Domain und ein Client-Gateway pro Region und Client-Connector-Dienst zulässig. Außerdem können Sie die folgenden Regionen nur zum Hosten des Client-Connector-Dienstes und der Gateway-Ressourcen verwenden: asia-east1, europe-west1, us-east1 und us-central1.

  1. Erstellen Sie den Client-Connector-Dienst mit dem folgenden Befehl:

    POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -d "{ingress:{config:{transport_protocol: \"TCP\", destination_routes:[{address:\"DESTINATION_ADDRESS\", netmask:\"DESTINATION_MASK\"}]}},egress:{peered_vpc:{network_vpc:\"projects/CONSUMER_PROJECT/global/networks/CONSUMER_NETWORK\"}}}" \
    https://beyondcorp.googleapis.com/v1alpha/projects/CONSUMER_PROJECT/locations/SERVICE_LOCATION/clientConnectorServices?client_connector_service_id=CLIENT_CONNECTOR_SERVICE_NAME
    

    Ersetzen Sie Folgendes:

    • DESTINATION_ADDRESS: Die Hostadresse des Zielsubnetzes, das die Anwendung hostet. Wenn Ihre Anwendung beispielsweise 10.0.0.0/28 verwendet, lautet die Adresse 10.0.0.0.
    • DESTINATION_MASK: Die Netzwerkmaske des Zielsubnetzes, das die Anwendung hostet. Wenn Ihre Anwendung beispielsweise 10.0.0.0/28 verwendet, lautet die Maske 255.255.255.240.
    • CONSUMER_PROJECT: Die ID Ihres Projekts, das den CONSUMER_NETWORK hostet.
    • CONSUMER_NETWORK: Der Name des VPC-Netzwerks, das mit der Anwendung verbunden ist.
    • SERVICE_LOCATION: Region, in der der Client-Connector-Dienst erstellt wird.
    • CLIENT_CONNECTOR_SERVICE_NAME: Der Name des Client-Connector-Dienstes.
  2. Prüfen Sie mit dem folgenden Befehl, ob der Client-Connector-Dienst erstellt wurde, indem Sie die Dienstinformationen auflisten:

    GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    https://beyondcorp.googleapis.com/v1alpha/projects/CONSUMER_PROJECT/locations/SERVICE_LOCATION/clientConnectorServices
    

    Ersetzen Sie Folgendes:

    • CONSUMER_PROJECT: Die ID Ihres Projekts, das den CONSUMER_NETWORK hostet.
    • SERVICE_LOCATION: Region, in der sich der Client-Connector-Dienst befindet.
  3. Optional: Entfernen Sie einen Client-Connector-Dienst mit dem folgenden Befehl:

    DELETE \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    https://beyondcorp.googleapis.com/v1alpha/projects/CONSUMER_PROJECT/locations/SERVICE_LOCATION/clientConnectorServices/CLIENT_CONNECTOR_SERVICE_NAME
    

    Ersetzen Sie Folgendes:

    • CONSUMER_PROJECT: Die ID Ihres Projekts, das den CONSUMER_NETWORK hostet.
    • SERVICE_LOCATION: Region, in der sich der Client-Connector-Dienst befindet.
    • CLIENT_CONNECTOR_SERVICE_NAME: Der Name des Client-Connector-Dienstes.
  4. Erstellen Sie ein oder mehrere Client-Gateways, indem Sie den folgenden Befehl so oft wie nötig ausführen:

    POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -d "{client_connector_service: \"projects/CONSUMER_PROJECT/locations/SERVICE_LOCATION/clientConnectorServices/CLIENT_CONNECTOR_SERVICE_NAME\"}" \
    https://beyondcorp.googleapis.com/v1alpha/projects/CONSUMER_PROJECT/locations/GATEWAY_LOCATION/clientGateways?client_gateway_id=CLIENT_GATEWAY_NAME
    

    Ersetzen Sie Folgendes:

    • CONSUMER_PROJECT: Die ID Ihres Projekts, das den CONSUMER_NETWORK hostet.
    • SERVICE_LOCATION: Region, in der sich der Client-Connector-Dienst befindet.
    • CLIENT_CONNECTOR_SERVICE_NAME: Der Name des Client-Connector-Dienstes.
    • GATEWAY_LOCATION: Die Region, in der das Client-Gateway erstellt wird.
    • CLIENT_GATEWAY_NAME: Der Name Ihres Client-Gateways.

    Dieser Schritt kann mehrere Minuten dauern.

  5. Prüfen Sie mit dem folgenden Befehl, ob die Client-Gateways ausgeführt werden:

    GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    https://beyondcorp.googleapis.com/v1alpha/projects/CONSUMER_PROJECT/locations/GATEWAY_LOCATION/clientGateways
    

    Ersetzen Sie Folgendes:

    • CONSUMER_PROJECT: Die ID Ihres Projekts, das den CONSUMER_NETWORK hostet.
    • GATEWAY_LOCATION: Die Region, in der sich das Client-Gateway befindet.
  6. (Optional) Entfernen Sie ein Client-Gateway, indem Sie den folgenden Befehl ausführen:

    DELETE \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    https://beyondcorp.googleapis.com/v1alpha/projects/CONSUMER_PROJECT/locations/GATEWAY_LOCATION/clientGateways/CLIENT_GATEWAY_NAME
    

    Ersetzen Sie Folgendes:

    • CONSUMER_PROJECT: Die ID Ihres Projekts, das den CONSUMER_NETWORK hostet.
    • GATEWAY_LOCATION: Region, in der sich das Client-Connector-Gateway befindet.
    • CLIENT_GATEWAY_NAME: Der Name Ihres Client-Gateways.

Kontextsensitive Zugriffsrichtlinien einrichten

  1. Ermitteln Sie die Hauptkonten oder erstellen Sie eine Nutzergruppe. Ermitteln Sie die Nutzer, die Zugriff auf die geschützten Nicht-Webanwendungen benötigen. Sie können auch eine Nutzergruppe erstellen, um die Konfiguration und Verwaltung zu vereinfachen.

  2. (Optional) Erstellen Sie in Access Context Manager eine Zugriffsebene, um eine kontextsensitive Regel zu definieren, mit der Sie den Zugriff auf Ihre Anwendung einschränken können.

  3. Konfigurieren Sie eine IAM-Richtlinie für die Dienstressource des Client-Connectors und gewähren Sie dem Hauptnutzer oder der Nutzergruppe die Rolle (roles/beyondcorp.clientConnectorServiceUser), die für den Zugriff auf Nicht-Webanwendungen erforderlich ist. Optional können Sie eine IAM-Bedingung angeben, um die Rolle nur bereitzustellen, wenn eine Zugriffsebene erfüllt ist. Verwenden Sie das folgende Read-Modify-Write-Muster, um die IAM-Richtlinie für eine Ressource zu aktualisieren:

    1. Lesen Sie die vorhandene Richtlinie. Die Methode getIamPolicy() liest die vorhandene IAM-Richtlinie für die Dienstressource des Client-Connectors in policy.json.

      GET \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      https://beyondcorp.googleapis.com/v1alpha/projects/CONSUMER_PROJECT/locations/SERVICE_LOCATION/clientConnectorServices/CLIENT_CONNECTOR_SERVICE_NAME:getIamPolicy > policy.json
      

      Ersetzen Sie Folgendes:

      • CONSUMER_PROJECT: Die ID Ihres Projekts, das den CONSUMER_NETWORK hostet.
      • SERVICE_LOCATION: Region, in der sich der Client-Connector-Dienst befindet.
      • CLIENT_CONNECTOR_SERVICE_NAME: Der Name des Client-Connector-Dienstes.
    2. Bearbeiten Sie die zurückgegebene Richtlinie. Aktualisieren Sie die Bindungen in policy.json so, dass die neue IAM-Rollenzuweisung enthalten ist. Sie können dies in einem Texteditor oder programmatisch tun. Beispiel:

      {
        "policy": {
          "bindings": [
            {
              "role": "roles/beyondcorp.clientConnectorServiceUser",
              "members": [
                "user:EXAMPLE_USER@EXAMPLE.COM",
                "group:EXAMPLE_GROUP@EXAMPLE.COM",
              ],
              "condition":
               {
                 "expression":
      "'accessPolicies/ORGANIZATION_NUMBER/accessLevels/ACCESS_LEVEL_NAME' in
      request.auth.access_levels",
                "title": "CONDITION_NAME"
              }
            }
          ]
        }
      }
      
    3. Schreiben Sie die aktualisierte Richtlinie. Sie können die Methode setIamPolicy() verwenden, um die aktualisierte IAM-Richtlinie zu schreiben. Beispiel:

      POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d @policy.json \
      https://beyondcorp.googleapis.com/v1alpha/projects/CONSUMER_PROJECT/locations/SERVICE_LOCATION/clientConnectorServices/CLIENT_CONNECTOR_SERVICE_NAME:setIamPolicy
      

      Ersetzen Sie Folgendes:

      • CONSUMER_PROJECT: Die ID Ihres Projekts, das den CONSUMER_NETWORK hostet.
      • SERVICE_LOCATION: Region, in der sich der Client-Connector-Dienst befindet.
      • CLIENT_CONNECTOR_SERVICE_NAME: Der Name des Client-Connector-Dienstes.

Client-Connector-Agent auf Endpunktgeräten installieren (Windows oder macOS)

  1. Aktivieren Sie die Erweiterung Endpunktprüfung“ mithilfe der Anleitung unter Endpunktprüfung auf Ihren Geräten einrichten.

  2. Nachdem die Endpunktprüfung ausgeführt wurde, wird für den aktualisierten Nutzer die Erweiterung Endpunktprüfung angezeigt. Um auf die geschützte Nicht-Webanwendung zuzugreifen, können Nutzer auf die Schaltfläche VERBINDUNG STARTEN klicken.

Wenn ein Nutzer zum ersten Mal eine Verbindung initiiert, fordert der Nutzer die Endpunktprüfung auf, um die Binärdateien des Client-Connectors herunterzuladen und zu installieren. Alternativ können Sie die Client-Connector-Binärdateien unter den folgenden URLs herunterladen:

Nachdem eine Verbindung hergestellt wurde, kann ein Nutzer auf die geschützte Ressource zugreifen. Nutzer können die Verbindung trennen, indem sie auf die Schaltfläche VERBINDUNG BEENDEN klicken.