Sicherheit von Anwendungen, die nicht von Google Cloud stammen, mit dem App-Connector von BeyondCorp Enterprise

Auf dieser Seite wird beschrieben, wie Sie den BeyondCorp Enterprise-Connector für Apps einrichten und verwenden.

Übersicht

Mit dem BeyondCorp Enterprise-Connector können Sie identitäts- und kontextsensitiven Zugriff auf HTTPS-Anwendungen gewähren, die in Nicht-Google Clouds und in lokalen Umgebungen ausgeführt werden. Der BeyondCorp Enterprise-Connector für Anwendungen ist eine sichere, authentifizierte Schnittstelle zwischen der Erzwingung von BeyondCorp Enterprise und Anwendungen, die in Nicht-Google Cloud-Umgebungen und lokal ausgeführt werden.

Der BeyondCorp Enterprise-Connector für Apps ist ein TCP-Proxy, der Google Cloud und Organisationsumgebungen verbindet. Der TCP-Proxy hat eine Komponente für Endnutzer, die in Google Cloud gehostet wird, und eine Anwendung, die in Ihrer Organisation gehostet wird. Wenn Sie den BeyondCorp Enterprise-Connector für die Anwendung verwenden möchten, müssen Sie keine Firewalls öffnen oder Standort-zu-Standort-Cloud VPN-Verbindungen einrichten.

Hinweis

Wenn Sie den BeyondCorp Enterprise-Connector für Apps verwenden möchten, müssen folgende Voraussetzungen erfüllt sein:

Sie können den BeyondCorp Enterprise-Connector für Anwendungen derzeit nur für HTTPS-Anwendungen verwenden.

Für jeden App-Connector-Agent von BeyondCorp Enterprise ist eine Linux-VM erforderlich, auf der Docker ausgeführt wird. Wir empfehlen die folgenden Linux-Distributionen:

  • Debian 10.7 (Buster)
  • Red Hat Enterprise Linux Server 7.8 (Maipo) x86_64
  • Ubuntu 16.04 oder höher

Wir empfehlen mindestens 2 CPUs mit 2 GB RAM für die Linux-VM-Hardware.

BeyondCorp Enterprise-Connector für Apps einrichten und bereitstellen

Im Folgenden finden Sie die wichtigsten Schritte zum Einrichten und Bereitstellen des BeyondCorp Enterprise-App-Connectors:

  • Google Cloud-Projekt einrichten
  • Remote-Agent für App-Connector installieren
  • Remote-Anwendung mit einer VPC verbinden
  • Externen HTTP(S)-Load-Balancer konfigurieren
  • Identity-Aware Proxy aktivieren

Google Cloud-Projekt einrichten

Wenn Sie ein Google Cloud-Projekt für den BeyondCorp Enterprise-App-Connector einrichten möchten, müssen Sie die BeyondCorp Enterprise API aktivieren. Aktivieren Sie die API mit den folgenden Schritten:

  1. Legen Sie mit dem folgenden Befehl die erforderliche Umgebungsvariable fest:

    PROJECT_ID=my-project
    

    Ersetzen Sie my-project durch die Google Cloud-Projekt-ID.

  2. Aktivieren Sie die API mit dem folgenden Befehl:

    gcloud config set project $PROJECT_ID
    gcloud services enable beyondcorp.googleapis.com
    

Remote-Agent für App-Connector installieren

Sie müssen die Remote-Agent-VM des Connectors für jede Netzwerkumgebung bereitstellen, in der Sie eine Anwendung hosten, die Sie mit BeyondCorp Enterprise schützen möchten. Für jeden von Ihnen erstellten Remote-Agent muss eine dedizierte VM oder ein Bare-Metal-Server mit installiertem Docker vorhanden sein.

So erstellen Sie einen Remote-Agent:

  1. Erstellen Sie eine VM-Instanz in Ihrer Anwendungsumgebung.
  2. Installieren Sie den Remote-Agent:

    1. Prüfen Sie, ob Ihr DNS korrekt konfiguriert ist und ob Sie mit curl auf die Anwendung zugreifen können.
    2. Installieren Sie Docker Engine.
    3. Führen Sie auf der Remote-Agent-VM den folgenden Befehl aus:
      curl https://raw.githubusercontent.com/GoogleCloudPlatform/beyondcorp-applink/main/bash-scripts/install-beyondcorp-runtime -o ./install-beyondcorp-runtime && chmod +x ./install-beyondcorp-runtime && ./install-beyondcorp-runtime
      
    4. Folgen Sie der Anleitung auf dem Bildschirm, um einen Alias für bce-connctl, die Remote-Agent-Befehlszeile, zu erstellen.
    5. Legen Sie mit den folgenden Befehlen die erforderlichen Umgebungsvariablen fest:

      PROJECT_ID=my-project
      REGION=us-central1
      CONNECTOR_NAME=my-connector
      

      Ersetzen Sie Folgendes:

      • my-project: die Google Cloud-Projekt-ID.
      • us-central1: Die Region, in der die Verbindung und Gateways bereitgestellt werden sollen.
      • my-connector: Der Name des Connectors.
    6. Registrieren Sie den Connector mit dem folgenden Befehl in der Befehlszeile bce-connctl:

      bce-connctl init --project=$PROJECT_ID --region=$REGION --connector=$CONNECTOR_NAME
      

      Folgen Sie der Anleitung auf dem Bildschirm, um das Anmeldeskript zu kopieren und einzufügen und die Registrierung des Connectors abzuschließen. Zum Ausführen des Registrierungsskripts benötigen Sie OWNER-Berechtigungen für das Projekt.

      Wenn das Registrierungsskript abgeschlossen ist, synchronisiert die Laufzeit die Connector-Konfiguration automatisch.

  3. Prüfen Sie die Installation des Remote-Agents:

    1. Führen Sie folgenden Befehl aus, damit der Dienst ausgeführt wird:
      sudo systemctl status beyondcorp
      
    2. Der Remote-Agent besteht aus drei Docker-Containern: bce-control-runtime, bce-logagent und bce-connector. Prüfen Sie mit dem folgenden Befehl, ob alle drei Container ausgeführt werden:
      docker ps --filter name=bce
      
    3. (Optional) Sie können die Protokolldateien von Docker-Containern mit dem folgenden Befehl prüfen:
      docker logs -f CONTAINER_NAME
      
      Ersetzen Sie CONTAINER_NAME durch den Namen des Docker-Containers.

Remote-Anwendung mit einer VPC verbinden

Bevor Sie die folgenden Schritte ausführen, sollten Sie prüfen, ob das gcloud-Befehlszeilentool installiert ist und Sie mit einem Konto angemeldet sind, das die Rolle beyondcorp.admin hat.

  1. Legen Sie mit den folgenden Befehlen die erforderlichen Umgebungsvariablen fest:

    CONNECTOR_NAME=my-connector
    CONNECTION_NAME=my-connection
    PROJECT_ID=my-project
    REGION=us-central1
    APP_ENDPOINT=APP_HOST:APP_PORT
    

    Ersetzen Sie Folgendes:

    • my-connector: der Name des Connectors, der in einem früheren Schritt definiert wurde.
    • my-connection: ein eindeutiger Name für die Verbindung.
    • my-project: die Google Cloud-Projekt-ID.
    • us-central1: Die Region, in der die Verbindung und Gateways bereitgestellt werden sollen.
    • APP_HOST: die lokale IP-Adresse oder ein FQDN, der Ihre Anwendung hostet.
    • APP_PORT: Die Portnummer für die Verbindung zur Anwendung.
  2. Führen Sie den folgenden Befehl aus, um eine Verbindung zwischen Ihrer Anwendung und Ihrer VPC herzustellen:

    gcloud alpha beyondcorp app connections create $CONNECTION_NAME \
       --project=$PROJECT_ID \
       --location=$REGION \
       --application-endpoint=$APP_ENDPOINT \
       --type=tcp \
       --connectors=$CONNECTOR_NAME \
       --display-name=$CONNECTION_NAME
    

    Dieser Schritt kann einige Minuten dauern.

  3. Führen Sie nach dem Erstellen der Verbindung die folgenden Befehle aus, um die Gateway-URIs abzurufen:

    GATEWAY_URI="$(gcloud alpha beyondcorp app connections describe $CONNECTION_NAME --project=$PROJECT_ID --location=$REGION --format='get(gateway.uri)')"
    GATEWAY_URI_L7="${GATEWAY_URI/bce-psc/"bce-ps7"}"
    

    GATEWAY_URI_L7 wird verwendet, um eine Weiterleitungsregel zu erstellen. Der BeyondCorp Enterprise-Connector für Apps verwendet Private Service Connect, um das Nutzerprojekt mit den verwalteten Ressourcen in den von Google verwalteten Projekten zu verknüpfen.

Externen HTTP(S)-Load-Balancer konfigurieren

Sie können nur HTTPS-Anwendungen mit einem externen HTTP(S)-Load-Balancer verbinden. HTTP-Anwendungen werden nicht unterstützt.

  1. Legen Sie mit den folgenden Befehlen die erforderlichen Umgebungsvariablen fest:

    LB_PREFIX=web-app
    PROJECT_ID=my-project
    REGION=us-central1
    DOMAIN_NAME=app.example.com
    
    Ersetzen Sie Folgendes:

    • web-app: das Präfix, das an die Namen aller Load-Balancer-Ressourcen angehängt wird.
    • my-project: die Google Cloud-Projekt-ID.
    • us-central1: Die Region, in der die Verbindung und Gateways bereitgestellt werden.
    • app.example.com: Der Domainname Ihrer Anwendung.
  2. Erstellen Sie einen NEG-basierten Back-End-Dienst und verbinden Sie ihn mit einem Private Service Connect-Dienstanhang, indem Sie die folgenden Befehle ausführen:

    gcloud beta compute network-endpoint-groups create $LB_PREFIX-neg \
        --region=$REGION \
        --network-endpoint-type=private-service-connect \
        --psc-target-service=$GATEWAY_URI_L7
    
    gcloud beta compute backend-services create $LB_PREFIX-backend-service \
        --global \
        --protocol=HTTPS \
        --load-balancing-scheme=EXTERNAL_MANAGED
    
    gcloud beta compute backend-services add-backend $LB_PREFIX-backend-service \
        --global \
        --network-endpoint-group=$LB_PREFIX-neg \
        --network-endpoint-group-region=$REGION
    
  3. Erstellen Sie mit den folgenden Befehlen ein von Google verwaltetes Zertifikat für Ihre Domain:

    gcloud compute addresses create $LB_PREFIX-static-ip \
        --ip-version=IPV4 \
        --global
    gcloud compute ssl-certificates create $LB_PREFIX-ssl-cert \
        --domains=$DOMAIN_NAME \
        --global
    
    LB_IP="$(gcloud compute addresses describe $LB_PREFIX-static-ip --global --format='value(address)')"
    
  4. Erstellen Sie mit den folgenden Befehlen einen externen HTTP(S)-Load-Balancer basierend auf dem Back-End aus dem vorherigen Schritt:

    gcloud compute url-maps create $LB_PREFIX-map-https \
        --default-service=$LB_PREFIX-backend-service
    
    gcloud compute target-https-proxies create $LB_PREFIX-https-lb-proxy \
        --url-map=$LB_PREFIX-map-https \
        --ssl-certificates=$LB_PREFIX-ssl-cert
    
    gcloud beta compute forwarding-rules create "$LB_PREFIX-https-lb-forwarding-rule" \
        --global \
        --target-https-proxy=$LB_PREFIX-https-lb-proxy \
        --address=$LB_IP \
        --ports=443 \
        --load-balancing-scheme=EXTERNAL_MANAGED
    

    Nachdem der externe HTTP(S)-Load-Balancer erstellt wurde, kann über diese IP-Adresse über das Internet auf Ihre Anwendung zugegriffen werden.

  5. Nachdem der externe HTTP(S)-Load-Balancer erstellt wurde, müssen Sie seine IP-Adresse mit dem Domainnamen verknüpfen, damit Google Cloud ein SSL-Zertifikat bereitstellen kann. Verwenden Sie die Anleitung Ihres DNS-Anbieters, um die IP-Adresse dem DNS-Namen zuzuordnen. Führen Sie den folgenden Befehl aus, um den Bereitstellungsstatus zu prüfen:

    1. IP-Adresse anzeigen, die beim DNS-Anbieter eingerichtet werden soll:
        echo "Load Balancer ip address - $LB_IP"
        
    2. Nachdem Sie das DNS festgelegt haben, prüfen Sie, ob der Domainname in die IP-Adresse aufgelöst wird. Führen Sie dazu den folgenden Befehl aus:
        dig $DOMAIN_NAME
        
    3. Ermitteln Sie den Status der Nutzerverwaltung mit dem folgenden Befehl:

      gcloud compute ssl-certificates describe $LB_PREFIX-ssl-cert \
        --global \
        --format="get(name,managed.status, managed.domainStatus)"
      

    Nachdem das SSL-Zertifikat bereitgestellt wurde, sollten Sie mithilfe des DNS-Namens auf Ihre Anwendung zugreifen können.

Identity-Aware Proxy aktivieren

Folgen Sie der Dokumentation zu Identity-Aware Proxy zum Einrichten von Identity-Aware Proxy. Aktivieren Sie anschließend den Identity-Aware Proxy für den Back-End-Dienst. Gehen Sie dazu so vor:

  1. Rufen Sie die Seite „Identity-Aware Proxy“ auf:
    Zur Seite „Identity-Aware Proxy“

  2. Suchen Sie unter HTTPS RESOURCES nach $LB_PREFIX-backend-service. Klicken Sie auf den Schieberegler in der Spalte „IAP“, um Identity-Aware Proxy für diese Ressource zu aktivieren. Klicken Sie im angezeigten Fenster IAP aktivieren auf die Kästchen, um die Konfigurationsanforderungen dieser Ressource zu bestätigen. Klicken Sie dann auf AKTIVIEREN, um zu bestätigen, dass Cloud Identity-Aware Proxy Ihre Ressource schützen soll.

  3. Um Nutzern Zugriff auf Ihre Anwendung zu gewähren, müssen Sie ihnen die Rolle Nutzer von IAP-gesicherten Web-Apps für das Projekt zuweisen. Gehen Sie dazu so vor:

    1. Klicken Sie das Kästchen „$LB_PREFIX-backend-service“ an.
    2. Wählen Sie im Infofeld die Option PRINCIPAL HINZUFÜGEN aus und geben Sie dann die E-Mail-Adressen der Gruppen oder Einzelpersonen ein, die Zugriff auf Ihre Anwendung haben sollen.
    3. Wählen Sie in der Drop-down-Liste Rolle auswählen die Option Cloud IAP-Nutzer; IAP-gesicherte Web-App aus und klicken Sie auf Speichern.

Ihre lokale Anwendung sollte jetzt im Internet veröffentlicht und durch BeyondCorp Enterprise geschützt sein.