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

  • 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-Balancers bereitstellen möchten, eine Private Service Connect-NEG.

gcloud beta 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 Private Service Connect NEG erstellt werden.

  1. Erstellen Sie für jede von Ihnen erstellte NEG 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 beta 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.
    2. 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: spanner.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. Erstellen Sie die Weiterleitungsregel.

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

    gcloud beta compute forwarding-rules create FWD_RULE \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --network=NETWORK \
      --address=FWD_RULE_IP_ADDRESS \
      --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.

    • FWD_RULE_IP_ADDRESS ist die IP-Adresse, die Sie für die Weiterleitungsregel verwenden möchten.

    • 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-spanner.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 spanner.example.com definiert.

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

Alle an spanner.example.com gesendeten Anfragen werden an den Load-Balancer gesendet, der die Anfrage an asia-east1-spanner.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. Beispiel: Wenn der Load-Balancer Anfragen an einen regionalen Cloud Spanner-Endpunkt weiterleitet, können Sie v1/projects/<var>PROJECT_ID</var>/instanceConfigs verwenden.

    • FWD_RULE_IP_ADDRESS ist die IP-Adresse, die der Weiterleitungsregel zugewiesen ist.

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.