Auf Google APIs zugreifen, die Private Service Connect mit HTTP(S)-Nutzerdienstkontrollen verwenden

Mit Private Service Connect können Sie eine Verbindung zu Diensten außerhalb Ihres VPC-Netzwerks (Virtual Private Cloud) über von Ihnen definierte interne IP-Adressen herstellen.

Sie können Private Service Connect-Endpunkte mit HTTP(S)-Nutzersteuerungen erstellen. Dazu verwenden Sie einen internen HTTP(S)-Load-Balancer, mit dem Sie konsistente Richtlinien für mehrere Dienstersteller verwalten können.

Weitere Informationen finden Sie unter Private Service Connect nutzen, um auf Google APIs mit HTTP(S)-Service-Steuerelementen zuzugreifen.

Ein interner HTTP(S)-Load-Balancer, der für Private Service Connect verwendet wird, kann von freigegebenen VPC-Netzwerken und verbundenen Netzwerken erreicht werden.

Rollen

Die Rolle "Compute-Load-Balancer-Administrator" (roles/compute.loadBalancerAdmin) enthält die zum Ausführen der in dieser Anleitung beschriebenen Aufgaben erforderlichen Berechtigungen.

Unterstützte Dienste

Siehe die Liste der unterstützten regionalen Dienstendpunkte.

Hinweis

  • Aktivieren Sie die Compute Engine API in Ihrem Projekt.

  • Wenn Sie die Load-Balancing-Weiterleitungsregel bei Service Directory registrieren möchten, aktivieren Sie die Service Directory API in Ihrem Projekt. Zum Konfigurieren von Service Directory müssen Sie die Weiterleitungsregel über die Google Cloud CLI oder die API erstellen.

  • Erstellen Sie ein Nur-Proxy-Subnetz, falls Sie noch keines haben. Im VPC-Netzwerk und in der Region, in der Sie den internen HTTP(S)-Load-Balancer erstellen möchten, muss es ein einzelnes Nur-Proxy-Subnetz geben. Dieses Subnetz wird von allen internen HTTP(S)-Load-Balancern innerhalb dieses Netzwerks und dieser Region verwendet.

  • Erstellen Sie einen privaten Schlüssel und ein Zertifikat für Ihre Domain, falls noch nicht geschehen. Weitere Informationen finden Sie unter Schritt 1 der Verwendung selbstverwalteter SSL-Zertifikate. Sie benötigen einen privaten Schlüssel und ein Zertifikat, um den Ziel-HTTPS-Proxy zu erstellen, wenn Sie den Load-Balancer konfigurieren.

Netzwerk-Endpunktgruppe erstellen

Erstellen Sie für jeden Dienst, den Sie mit dem Load-Balancer bereitstellen möchten, eine Private Service Connect-Netzwerk-Endpunktgruppe (NEG).

Console

  1. Gehen Sie in der Google Cloud Console zur Seite Netzwerk-Endpunktgruppen.
    Zu den Netzwerk-Endpunktgruppen
  2. Klicken Sie auf NETZWERK-ENDPUNKTGRUPPE ERSTELLEN.
  3. Geben Sie einen Namen für die Netzwerk-Endpunktgruppe ein.
  4. Wählen Sie für den Typ der Netzwerk-Endpunktgruppe die Option Netzwerk-Endpunktgruppe (Private Service Connect) aus.
  5. Wählen Sie die Region für die Netzwerk-Endpunktgruppe aus.
  6. Wählen Sie den Zieldienst für die Netzwerk-Endpunktgruppe aus.
  7. Klicken Sie auf Erstellen.

gcloud

gcloud compute network-endpoint-groups create NEG_NAME \
  --network-endpoint-type=private-service-connect \
  --psc-target-service=TARGET_SERVICE \
  --region=REGION

Dabei gilt:

  • NEG_NAME ist ein Name für die Netzwerk-Endpunktgruppe.

  • TARGET_SERVICE ist der Zieldienst, zu dem Sie eine Verbindung herstellen möchten. Siehe die Liste der unterstützten regionalen Dienstendpunkte.

  • REGION ist die Region, in der die Netzwerk-Endpunktgruppe erstellt werden soll. Die Region muss mit der Region des Dienstes übereinstimmen, zu dem Sie eine Verbindung herstellen möchten.

Load-Balancer konfigurieren

Alle Load-Balancer-Komponenten müssen in derselben Region wie die Netzwerk-Endpunktgruppe von Private Service Connect erstellt werden.

Console

Load-Balancer-Typ auswählen

  1. Öffnen Sie in der Google Cloud Console die Seite Load-Balancing.
    Gehe zu „Load-Balancing“
  2. Klicken Sie unter HTTP(S)-Load-Balancing auf Konfiguration starten.
  3. Wählen Sie Nur zwischen meinen VMs aus. Diese Einstellung bedeutet, dass der Load-Balancer intern ist.
  4. Klicken Sie auf Weiter.

Grundlegende Konfiguration

  1. Geben Sie im Feld Name eine Bezeichnung für den Load-Balancer ein.
  2. Wählen Sie eine Region für den Load-Balancer aus.
  3. Wählen Sie ein Netzwerk für den Load-Balancer aus.

    Das Netzwerk muss ein Nur-Proxy-Subnetz in der Region enthalten, in der Sie die NEG und den Load-Balancer erstellen. Wenn Sie kein Subnetz haben, können Sie auf Subnetz reservieren klicken, um eines zu erstellen.

  4. Lassen Sie das Fenster geöffnet, um fortzufahren.

Back-End-Konfiguration

Die Netzwerk-Endpunktgruppe von Private Service Connect ist eine Art Load-Balancer-Back-End. Sie erstellen einen Back-End-Dienst für jedes Back-End, das Sie konfigurieren möchten.

  1. Klicken Sie auf Back-End-Konfiguration.
  2. Erstellen Sie für jede Private Service Connect-Netzwerk-Endpunktgruppe, die Sie konfigurieren möchten, einen Back-End-Dienst.

    1. Wählen Sie im Menü Back-End-Dienst erstellen oder auswählen die Option Back-End-Dienst erstellen aus.
    2. Geben Sie im Feld Name eine Bezeichnung für den Back-End-Dienst ein.
    3. Setzen Sie den Back-End-Typ auf Private Service Connect-Netzwerk-Endpunktgruppe.
    4. Wählen Sie HTTPS als Protokoll aus.

      Die Einstellung Benannter Port wird für diese Load-Balancer-Konfiguration nicht verwendet. Behalten Sie die Standardeinstellung für den benannten Port bei.

    5. Klicken Sie unter Back-Ends auf das Menü Neues Back-End und wählen Sie die Netzwerk-Endpunktgruppe von Private Service Connect aus.

      Wenn Sie eine neue Private Service Connect-Netzwerk-Endpunktgruppe erstellen müssen, klicken Sie auf Private Service Connect-Netzwerk-Endpunktgruppe erstellen.

Routingregeln

Wenn Sie nur einen Back-End-Dienst für den Load-Balancer konfigurieren, reicht die Standardroutingregel aus und Sie können mit der Front-End-Konfiguration fortfahren.

  1. Wenn Sie mehr als einen Back-End-Dienst haben, klicken Sie auf Routingregeln.
  2. Wählen Sie Einfache Host- und Pfadregel aus.
  3. Gehen Sie bei jedem Back-End so vor:
    1. Fügen Sie die Host- und Pfadregel hinzu.
    2. Geben Sie unter Host den Hostnamen ein, der zum Senden von Anfragen an diesen Dienst verwendet wird, z. B. cloudkms.example.com.
    3. Geben Sie unter Pfade den Pfad ein, z. B. /*.
    4. Wählen Sie bei Back-Ends den Back-End-Dienst aus.

Front-End-Konfiguration

  1. Klicken Sie auf Front-End-Konfiguration.
  2. Klicken Sie auf Front-End-IP und Port hinzufügen.
  3. Geben Sie im Feld Name eine Bezeichnung für den Load-Balancer ein.
  4. Wählen Sie im Feld Protokoll die Option HTTPS (einschließlich HTTP/2) aus.
  5. Wählen Sie ein Subnetzwerk für den Load-Balancer aus.
  6. Achten Sie darauf, dass der Port auf 443 festgelegt ist, um HTTPS-Traffic zuzulassen.
  7. Wählen Sie aus dem Menü als IP-Adresse eine IP-Adresse aus.

    Wenn Sie eine neue IP-Adresse reservieren möchten, klicken Sie auf IP-Adresse erstellen.

  8. Klicken Sie auf die Drop-down-Liste Zertifikat.

    1. Wenn Sie bereits eine selbstverwaltete SSL-Zertifikatsressource haben, die Sie verwenden möchten, wählen Sie diese aus dem Menü aus.
    2. Wählen Sie andernfalls Neues Zertifikat erstellen aus.
    3. Geben Sie einen Namen für die Zertifikatsressource ein.
    4. Laden Sie in den entsprechenden Feldern Ihre PEM-formatierten Dateien hoch:
      • Zertifikat
      • Privater Schlüssel
    5. Klicken Sie auf Erstellen.
  9. Klicken Sie auf Fertig.

Überprüfen und abschließen

  1. Klicken Sie auf Prüfen und abschließen, um die Konfiguration zu prüfen.
  2. Klicken Sie auf Erstellen.

gcloud

  1. Erstellen Sie für jede von Ihnen erstellte Netzwerk-Endpunktgruppe einen Back-End-Dienst.

    gcloud compute backend-services create BACKEND_SERVICE_NAME \
     --load-balancing-scheme=INTERNAL_MANAGED \
     --protocol=HTTPS \
     --region=REGION
    

    Dabei gilt:

    • BACKEND_SERVICE_NAME ist der Name des Back-End-Dienstes.
    • REGION ist die Region, in der der Back-End-Dienst erstellt werden soll.
  2. Fügen Sie für jeden von Ihnen erstellten Back-End-Dienst die entsprechende NEG zum Back-End-Dienst hinzu.

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
     --network-endpoint-group=NEG_NAME \
     --region=REGION
    

    Dabei gilt:

    • BACKEND_SERVICE_NAME ist der Name des Back-End-Dienstes.
    • NEG_NAME ist der Name der Netzwerk-Endpunktgruppe.
    • REGION ist die Region für das Back-End.
  3. Erstellen Sie eine URL-Zuordnung für den Load-Balancer.

    Eine URL-Zuordnung muss auf einen Standard-Back-End-Dienst verweisen. Wenn Sie Ihren Load-Balancer mit einem Back-End-Dienst konfigurieren, legen Sie diesen Back-End-Dienst als Standard fest. Wenn Sie Ihren Load Balancer so konfigurieren, dass er mehrere Back-End-Dienste verwendet, die durch Hostregeln und Pfad-Matcher referenziert werden, die Sie im nächsten Schritt erstellen, wählen Sie einen der Back-End-Dienste als Standard-URL-Map aus.

    gcloud compute url-maps create URL_MAP_NAME \
     --default-service=DEFAULT_BACKEND_SERVICE_NAME \
     --region=REGION
    

    Dabei gilt:

    • URL_MAP_NAME ist ein Name für die URL-Zuordnung.

    • DEFAULT_BACKEND_SERVICE_NAME ist der Name des Load-Balancers. Die Standardeinstellung wird verwendet, wenn keine Hostregel mit dem angeforderten Hostnamen übereinstimmt.

    • REGION ist die Region, in der die URL-Zuordnung erstellt werden soll.

  4. Fügen Sie der URL-Zuordnung zusätzliche Back-End-Dienste hinzu.

    Wenn Ihre URL-Zuordnung auf zwei oder mehr Back-End-Dienste verweisen muss, führen Sie die folgenden Schritte aus. Wenn Ihre URL-Zuordnung nur auf einen Back-End-Dienst verweist, überspringen Sie diesen Schritt.

    1. Fügen Sie für jeden Back-End-Dienst einen Pfad-Matcher hinzu. Sie müssen für jeden Back-End-Dienst einen Pfad-Matcher erstellen.
    gcloud compute url-maps add-path-matcher URL_MAP_NAME \
     --path-matcher-name=PATH_MATCHER \
     --default-service=BACKEND_SERVICE_NAME \
     --region=REGION
    

    Dabei gilt:

    • URL_MAP_NAME ist der Name der URL-Zuordnung.
    • PATH_MATCHER ist ein Name für den Pfad-Matcher.
    • BACKEND_SERVICE_NAME ist der Name des Back-End-Dienstes.
    • REGION ist die Region der URL-Zuordnung.
    1. Fügen Sie für jeden Hostnamen eine Hostregel hinzu.

      Jede Hostregel kann nur auf einen Pfad-Matcher verweisen, aber zwei oder mehr Hostregeln können auf denselben Pfad-Matcher verweisen.

      gcloud compute url-maps add-host-rule URL_MAP_NAME \
      --hosts=HOST \
      --path-matcher-name=PATH_MATCHER \
      --region=REGION
      

      Dabei gilt:

      • URL_MAP_NAME ist der Name der URL-Zuordnung.
      • HOST ist der Hostname, an den Anfragen für diesen Dienst gesendet werden. Beispiel: cloudkms.example.com.
      • PATH_MATCHER ist der Name des Pfad-Matchers.
      • REGION ist die Region der URL-Zuordnung.
  5. Erstellen Sie den Ziel-HTTPS-Proxy.

    Erstellen Sie eine regionale SSL-Zertifikatressource mit dem gcloud compute ssl-certificates create-Befehl. Von Google verwaltete Zertifikate werden nicht von internen HTTP(S)-Load-Balancern unterstützt.

    gcloud compute ssl-certificates create CERTIFICATE \
     --certificate=LB_CERT \
     --private-key=LB_PRIVATE_KEY \
     --region=REGION
    

    Dabei gilt:

    • CERTIFICATE ist ein Name für das Zertifikat.

    • LB_CERT ist der Pfad zur Zertifikatsdatei im PEM-Format für Ihr selbstverwaltetes Zertifikat.

    • LB_PRIVATE_KEY ist der Pfad zur privaten Schlüsseldatei im PEM-Format für Ihr selbstverwaltetes Zertifikat.

    • REGION ist die Region für das Zertifikat.

    Verwenden Sie die regionale SSL-Zertifikatsressource, um einen Ziel-HTTPS-Proxy mit dem gcloud compute target-https-proxies create-Befehl zu erstellen.

    gcloud compute target-https-proxies create PROXY_NAME \
       --url-map=URL_MAP_NAME \
       --region=REGION \
       --ssl-certificates=CERTIFICATE
    

    Dabei gilt:

    • PROXY_NAME ist ein Name für den Ziel-HTTPS-Proxy.
    • URL_MAP_NAME ist der Name der URL-Zuordnung.
    • REGION ist die Region für die Zertifikatsressource.
    • CERTIFICATE ist der Name der Zertifikatsressource.
  6. Reservieren Sie eine regionale interne IPv4-Adresse für die Weiterleitungsregel.

    gcloud compute addresses create ADDRESS_NAME \
     --ip-version=IPV4 \
     --region=REGION \
     --subnet=SUBNETWORK
    

    Dabei gilt:

    • ADDRESS_NAME ist der Name der IP-Adressressource.
    • REGION ist die Region, in der die IP-Adresse erstellt werden soll.
    • SUBNET ist das Subnetz, in dem die IP-Adresse erstellt werden soll.

    Führen Sie diesen Befehl aus, um die reservierte IP-Adresse aufzurufen. Nachdem Sie den Load-Balancer erstellt haben, können Sie die Konfiguration anhand der IP-Adresse prüfen.

    gcloud compute addresses describe ADDRESS_NAME \
     --format="get(address)" --region=REGION
    
  7. Erstellen Sie die Weiterleitungsregel.

    Erstellen Sie die Weiterleitungsregel mit dem gcloud compute forwarding-rules create-Befehl.

    gcloud compute forwarding-rules create FWD_RULE \
     --load-balancing-scheme=INTERNAL_MANAGED \
     --network=NETWORK \
     --address=ADDRESS_NAME \
     --ports=443 \
     --region=REGION \
     --target-https-proxy=PROXY_NAME \
     --target-https-proxy-region=PROXY_REGION \
     [--service-directory-registration=SD_SERVICE_NAME]
    

    Dabei gilt:

    • FWD_RULE ist ein Name für die Weiterleitungsregel.

    • NETWORK ist die Region, in der die Weiterleitungsregel erstellt werden soll.

    • ADDRESS_NAME ist die reservierte IP-Adresse.

    • REGION ist die Region für die Weiterleitungsregel.

    • PROXY_NAME ist der Name des HTTPS-Ziel-Proxys.

    • PROXY_REGION ist die Region des HTTPS-Ziel-Proxys.

    • SD_SERVICE_NAME ist der URI des Service Directory-Dienstes, bei dem Sie den Load-Balancer registrieren möchten. Verwenden Sie dazu dieses Format: projects/PROJECT/locations/REGION/namespaces/NAMESPACE_NAME/services/SERVICE_NAME. Die Angabe von --service-directory-registration ist optional.

DNS-Einträge konfigurieren

Konfigurieren Sie DNS-Einträge für jeden Host, den Sie der URL-Zuordnung hinzugefügt haben, und verweisen Sie auf die IP-Adresse der Weiterleitungsregel.

Angenommen, Sie haben Private Service Connect mit HTTP(S)-Nutzerdienstkontrollen mit folgenden Elementen konfiguriert:

  • Einer Private Service Connect-NEG, die den Zieldienst asia-east1-cloudkms.googleapis.com verwendet.

  • Einem internen HTTP(S)-Load-Balancer, der diese Private Service Connect-NEG als Back-End verwendet.

  • Einer URL-Zuordnung, die eine Hostregel für cloudkms.example.com definiert.

Damit diese Konfiguration ordnungsgemäß funktioniert, erstellen Sie einen DNS-Eintrag, der cloudkms.example.com auf die IP-Adresse der Weiterleitungsregel verweist.

Alle an cloudkms.example.com gesendeten Anfragen werden an den Load-Balancer gesendet, der die Anfrage an asia-east1-cloudkms.googleapis.com weiterleitet.

Wenn Sie DNS mit Cloud DNS verwalten, finden Sie weitere Informationen unter DNS-Eintrag hinzufügen.

Konfiguration prüfen

  1. Erstellen Sie die VM-Instanz:

    gcloud compute instances create VM_NAME \
       --network=NETWORK \
       --image-project=debian-cloud --image-family=debian-9 \
       --zone=ZONE
    

    Dabei gilt:

    • VM_NAME ist ein Name für die virtuelle Maschine.

    • NETWORK ist das Netzwerk für die VM.

    • ZONE ist die Zone für die VM.

  2. Stellen Sie eine Verbindung zur VM her.

    gcloud compute ssh VM_NAME --zone=ZONE
    
  3. Prüfen Sie die Konfiguration mit curl. Mit diesem Befehl wird der Header Host festgelegt und die DNS-Auflösung durch Angabe einer benutzerdefinierten IP-Adresse umgangen. Sie können den Port weglassen, wenn Sie den Standardport für das Protokoll verwenden, z. B. Port 443 für HTTPS.

    Bei Bedarf können Sie die Zertifikatsprüfung mit dem -k-Flag überspringen. Sie müssen die Validierung möglicherweise überspringen, wenn Sie ein selbst signiertes Zertifikat zur Konfiguration des HTTPS-Ziel-Proxys verwendet haben oder wenn die VM nicht über das Zertifikat der Zertifizierungsstelle verfügt, die Ihr Zertifikat signiert hat.

    curl [-k] -s 'https://HOST:443/RESOURCE_URI' \
       -H 'Host: HOST' \
       --connect-to HOST:443:FWD_RULE_IP_ADDRESS:443
    

    Dabei gilt:

    • HOST ist der Hostname, der in der URL-Zuordnung konfiguriert ist.

    • RESOURCE_URI ist der Rest des URI der Ressource, die Sie zur Prüfung verwenden möchten. Wenn der Load-Balancer beispielsweise Anfragen an einen regionalen Endpunkt des Cloud Key Management Service weiterleitet, können Sie v1/projects/<var>PROJECT_ID</var>/locations verwenden.

    • FWD_RULE_IP_ADDRESS ist die IP-Adresse, die der reservierten IP-Adressressource ADDRESS_NAME zugewiesen ist und in der Konfiguration der Weiterleitungsregel verwendet wird.

Private Service Connect von lokalen Hosts aus verwenden

Wenn Ihr lokales Netzwerk mit einem VPC-Netzwerk verbunden ist, können Sie eine Verbindung zum internen HTTP(S)-Load-Balancer herstellen, der Private Service Connect über Nutzer-HTTP(S)-Dienstkontrollen bereitstellt.

  • Ihr lokales Netzwerk muss über Cloud VPN-Tunnel oder Cloud Interconnect-Anhänge (VLANs) in derselben Region wie der interne HTTP (S)-Load-Balancer mit dem VPC-Netzwerk verbunden sein, das Ihren internen HTTP(S)-Load-Balancer enthält.

  • Das lokale Netzwerk muss geeignete Routen zu Ihrem internen HTTP(S)-Load-Balancer haben. Achten Sie darauf dass jeder Cloud Router, der die BGP-Sitzung für den Cloud-VPN-Tunnel oder das Cloud Interconnect-Attachment (VLAN) verwaltet, so konfiguriert wurde, dass er den primären IP-Adressbereich des von Ihrer internen HTTP(S)-Load-Balancer-Weiterleitungsregel verwendeten Subnetzes bekannt gibt. Cloud Router bieten standardmäßig Subnetzrouten an.

  • Sie müssen lokale Systeme so konfigurieren, dass die Hostnamen in der URL-Zuordnung Ihres internen HTTP(S)-Load-Balancers in die IP-Adresse der Weiterleitungsregel des internen HTTP(S)-Load-Balancers aufgelöst werden. Sie können die DNS-Einträge auf lokalen Nameservern erstellen oder Cloud DNS verwenden.

    Wenn Sie die DNS-Einträge mit den von Cloud DNS verwalteten privaten Zonen erstellt haben, führen Sie folgende Schritte aus:

    • Erstellen Sie eine Serverrichtlinie für eingehenden Traffic in dem VPC-Netzwerk, zu dem Ihr lokales Netzwerk eine Verbindung herstellt.

    • Identifizieren Sie die Weiterleitungs-Einstiegspunkte für eingehenden Traffic in den Regionen, in denen sich Ihre Cloud VPN-Tunnel und Cloud Interconnect-Anhänge (VLANs) befinden, in dem VPC-Netzwerk, mit dem sich Ihr lokales Netzwerk verbindet.

    • Konfigurieren Sie lokale DNS-Nameserver so, dass DNS-Anfragen für die Hostnamen in der URL-Zuordnung an einen Cloud DNS-Weiterleitungspunkt für eingehenden Traffic geleitet werden.

Abbildung 7. Durch die Konfiguration von Private Service Connect, Cloud Router und lokalen Hosts können Sie über regionale Dienstendpunkte eine Verbindung zu Google APIs und Google-Diensten herstellen.