Private Verbindung zu Google APIs und Google-Diensten einrichten

Mit VPC Service Controls können Sie den Zugriff auf Google APIs und Google-Dienste über Hosts steuern, die private IP-Adressen verwenden. Diese Hosts können VM-Instanzen in einem VPC-Netzwerk oder Clients in einem lokalen Netzwerk sein.

Wenn Sie den privaten Google-Zugriff innerhalb eines Dienstperimeters auf Google APIs und Google-Dienste beschränken möchten, die von VPC Service Controls unterstützt werden, müssen Anfragen Ihrer Hosts an Domainname restricted.googleapis.com statt an *.googleapis.com gesendet werden. Die Domain restricted.googleapis.com wird in einen VIP-Bereich 199.36.153.4/30 (virtuelle IP-Adresse) aufgelöst. Dieser IP-Adressbereich wird nicht für das Internet freigegeben.

In den folgenden Abschnitten wird beschrieben, wie Sie eine private Verbindung für Hosts in einem VPC-Netzwerk oder lokalen Netzwerk einrichten. Eine Übersicht und Beispiele für Topologien finden Sie unter Privater Google-Zugriff mit VPC Service Controls.

Vorbereitung

  • Sie müssen APIs aktivieren, auf die Sie zugreifen möchten. Dies ist in der Google Cloud Console auf der Seite APIs & Dienste möglich.
  • Projektinhaber, -bearbeiter und IAM-Mitglieder mit der Rolle Netzwerkadministrator können Subnetze erstellen oder aktualisieren und IP-Adressen zuweisen. Weitere Informationen zu Rollen finden Sie in der Dokumentation zu IAM-Rollen.
  • Für den privaten Google-Zugriff und den privaten Google-Zugriff für lokale Hosts ist ein VPC-Netzwerk erforderlich. Es werden VPC-Netzwerke im automatischen und im benutzerdefinierten Modus unterstützt. Legacy-Netzwerke werden nicht unterstützt.
  • VM-Instanzen in einem VPC-Netzwerk dürfen nur eine private IP-Adresse (keine öffentliche IP-Adresse) haben und müssen sich im Subnetz mit aktiviertem privaten Google-Zugriff befinden.
  • Für lokale Hosts muss ein Cloud VPN-Tunnel oder eine Cloud Interconnect-Verbindung zu Ihrem VPC-Netzwerk vorhanden sein.

Übersicht über das Verfahren

Führen Sie zum Einrichten einer privaten Verbindung die folgenden Aufgaben aus:

  • Konfigurieren Sie Routen für die Ziel-199.36.153.4/30. Weitere Informationen finden Sie unter Routen konfigurieren.
  • Konfigurieren Sie Firewallregeln, um den entsprechenden Traffic zum eingeschränkten IP-Adressbereich von Google APIs zuzulassen. Weitere Informationen finden Sie unter Firewallregeln konfigurieren.
  • Konfigurieren Sie DNS so, dass der Traffic zu den Google APIs auf den IP-Adressbereich der eingeschränkten Google APIs aufgelöst wird. Weitere Informationen finden Sie unter DNS konfigurieren.

Route zu restricted.googleapis.com konfigurieren

Für den privaten Google-Zugriff und den privaten Google-Zugriff für lokale Hosts muss Ihr VPC-Netzwerk eine Route mit einem Ziel nach 199.36.153.4/30 enthalten, dessen nächster Hop das Standard-Internetgateway ist. Obwohl der nächste Hop ein Standard-Internetgateway ist, bleibt der an 199.36.153.4/30 gesendete Traffic im Netzwerk von Google. Ihr VPC-Netzwerk hat möglicherweise bereits eine Standardroute, deren nächster Hop das Standard-Internetgateway ist. Wenn nicht, können Sie eine benutzerdefinierte statische Route erstellen, deren Ziel 199.36.153.4/30 und deren nächster Hop das Standard-Internetgateway ist.

Zusätzlich zur benutzerdefinierten statischen Route erfordert der private Google-Zugriff für lokale Hosts ein benutzerdefiniertes Route Advertisement, damit Hosts im lokalen Netzwerk Informationen über die eingeschränkte VIP erhalten. Sie können eine benutzerdefinierte dynamische Route mithilfe von Cloud Router erstellen, um die eingeschränkte VIP freizugeben.

Weitere Informationen zum Arbeiten mit VPC-Routen finden Sie unter Routen verwenden in der VPC-Dokumentation.

Benutzerdefinierte statische Route in einem VPC-Netzwerk konfigurieren

Fügen Sie eine benutzerdefinierte statische Route hinzu, um den Zugriff auf von Google verwaltete Dienste zu ermöglichen, die von VPC Service Controls unterstützt werden.

  • Fügen Sie eine benutzerdefinierte Route hinzu, die den Zugriff auf von Google verwaltete Dienste ermöglicht, die durch VPC Service Controls geschützt sind.

    gcloud compute routes create ROUTE_NAME \
      --network=NETWORK_NAME \
      --destination-range=199.36.153.4/30 \
      --next-hop-gateway=default-internet-gateway
    

    Dabei gilt:

    • ROUTE_NAME ist der Name der benutzerdefinierten Route.

    • NETWORK_NAME ist der Name Ihres VPC-Netzwerks.

Eingeschränkte Route zu Hosts in einem lokalen Netzwerk ankündigen

Wenn Sie den privaten Google-Zugriff für lokale Hosts verwenden, konfigurieren Sie Routen so, dass der Google API-Traffic über Ihre Cloud VPN- oder Cloud Interconnect-Verbindung weitergeleitet wird. Verwenden Sie das benutzerdefinierte Route Advertisement, um die eingeschränkte VIP (199.36.153.4/30) für das lokale Netzwerk freizugeben. Auf diesen IP-Adressbereich können nur lokale Hosts zugreifen, die Ihr VPC-Netzwerk über private IP-Adressen erreichen können.

Sie können dieses benutzerdefinierte Route Advertisement einem Cloud Router hinzufügen (für alle BGP-Sitzungen auf dem Router) oder eine ausgewählte BGP-Sitzung auswählen (für einen einzelnen Cloud VPN-Tunnel oder VLAN-Anhang).

So erstellen Sie für alle BGP-Sitzungen auf einem vorhandenen Cloud Router ein benutzerdefiniertes Route Advertisement für den eingeschränkten Bereich:

Console


  1. Rufen Sie in der Google Cloud Console die Seite "Cloud Router" auf.
    Zur Liste der Cloud Router
  2. Wählen Sie den zu aktualisierenden Cloud Router aus.
  3. Klicken Sie auf der Detailseite des Cloud Routers auf Bearbeiten.
  4. Erweitern Sie den Abschnitt Beworbene Routen.
  5. Wählen Sie für Routen die Option Benutzerdefinierte Routen erstellen aus.
  6. Wählen Sie Alle für den Cloud Router sichtbaren Subnetze bewerben aus. Damit können Sie weiterhin die Subnetze bewerben, die für den Cloud Router zur Verfügung stehen. Wenn Sie diese Option aktivieren, entspricht dies dem Standardverhalten des Cloud Routers.
  7. Wählen Sie Benutzerdefinierte Route hinzufügen aus, um eine beworbene Route zu erstellen.
  8. Konfigurieren Sie das Route Advertisement.
    • Quelle: Wählen Sie Benutzerdefinierter IP-Bereich aus, um einen benutzerdefinierten IP-Bereich anzugeben.
    • IP-Adressbereich: Geben Sie 199.36.153.4/30 an.
    • Beschreibung: Fügen Sie eine Beschreibung von Restricted Google APIs IPs hinzu.
  9. Wenn Sie keine weiteren Routen hinzufügen möchten, klicken Sie auf Speichern.

gcloud


Führen Sie den Befehl update mit dem Flag --set-advertisement-ranges oder --add-advertisement-ranges aus, um die benutzerdefinierten IP-Bereiche anzugeben:

  • Verwenden Sie das Flag --set-advertisement-ranges, um benutzerdefinierte IP-Bereiche festzulegen. Alle vorhandenen benutzerdefinierten Advertisings werden ersetzt. Im folgenden Beispiel wird der Cloud Router my-router so aktualisiert, dass er für alle Subnetze und den eingeschränkten IP-Adressbereich 199.36.153.4/30 von Google APIs wirbt:

    gcloud compute routers update my-router \
        --advertisement-mode CUSTOM \
        --set-advertisement-groups ALL_SUBNETS \
        --set-advertisement-ranges 199.36.153.4/30
    
  • Mit dem Flag --add-advertisement-ranges können Sie benutzerdefinierte IP-Bereiche an ein vorhandenes Advertisement anhängen. Für dieses Flag muss der Advertisement-Modus von Cloud Router bereits auf custom eingestellt sein. Im folgenden Beispiel wird die benutzerdefinierte IP Restricted Google APIs IPs dem Advertisement des Cloud Routers hinzugefügt:

    gcloud compute routers update my-router \
        --add-advertisement-ranges 199.36.153.4/30
    

So erstellen Sie für eine bestimmte BGP-Sitzung auf einem vorhandenen Cloud Router ein benutzerdefiniertes Route Advertisement für den eingeschränkten Bereich:

Console


  1. Rufen Sie in der Google Cloud Console die Seite "Cloud Router" auf.
    Zur Liste der Cloud Router
  2. Klicken Sie auf den Cloud Router, der die zu aktualisierende BGP-Sitzung enthält.
  3. Klicken Sie auf der Detailseite des Cloud Routers auf die zu aktualisierende BGP-Sitzung.
  4. Wählen Sie auf der Seite BGP-Sitzungsdetails Bearbeiten aus.
  5. Wählen Sie für Routen die Option Benutzerdefinierte Routen erstellen aus.
  6. Wählen Sie Alle für den Cloud Router sichtbaren Subnetze bewerben aus. Damit können Sie weiterhin die Subnetze bewerben, die für den Cloud Router zur Verfügung stehen. Wenn Sie diese Option aktivieren, entspricht dies dem Standardverhalten des Cloud Routers.
  7. Wählen Sie Benutzerdefinierte Route hinzufügen aus, um eine beworbene Route zu erstellen.
  8. Konfigurieren Sie das Route Advertisement.
    • Quelle: Wählen Sie Benutzerdefinierter IP-Bereich aus, um einen benutzerdefinierten IP-Bereich anzugeben.
    • IP-Adressbereich: Geben Sie 199.36.153.4/30 an.
    • Beschreibung: Fügen Sie eine Beschreibung von Restricted Google APIs IPs hinzu.
  9. Wenn Sie keine weiteren Routen hinzufügen möchten, klicken Sie auf Speichern.

gcloud


Führen Sie den Befehl update-bgp-peer mit dem Flag --set-advertisement-ranges oder --add-advertisement-ranges aus, um die benutzerdefinierten IP-Bereiche anzugeben:

  • Verwenden Sie das Flag --set-advertisement-ranges, um benutzerdefinierte IP-Bereiche festzulegen. Alle vorhandenen benutzerdefinierten Advertisings werden ersetzt. Im folgenden Beispiel wird die BGP-Sitzung my-bgp-session auf dem Cloud Router my-router aktualisiert, um alle Subnetze sowie den benutzerdefinierten IP-Bereich 199.36.153.4/30 zu bewerben:

    gcloud compute routers update-bgp-peer my-router \
        --peer-name my-bgp-session \
        --advertisement-mode CUSTOM \
        --set-advertisement-groups ALL_SUBNETS \
        --set-advertisement-ranges 199.36.153.4/30
    
  • Mit dem Flag --add-advertisement-ranges können Sie benutzerdefinierte IP-Bereiche an vorhandene IP-Bereiche anhängen. Für dieses Flag muss der Advertisement-Modus von Cloud Router bereits auf custom eingestellt sein. Im folgenden Beispiel wird der IP-Bereich 199.36.153.4/30 der eingeschränkten Google APIs dem Advertisement von Cloud Router hinzugefügt:

    gcloud compute routers update-bgp-peer my-router \
        --peer-name my-bgp-session \
        --add-advertisement-ranges 199.36.153.4/30
    

    Weitere Informationen zu benutzerdefiniertem Advertisement finden Sie unter Benutzerdefiniertes Route Advertisement.

Firewallregeln konfigurieren

Für den privaten Google-Zugriff verwenden VM-Instanzen interne IP-Adressen und erfordern keine externen IP-Adressen, um geschützte Google API-Ressourcen zu erreichen. VM-Instanzen können jedoch externe IP-Adressen haben oder die Anforderungen für den Internetzugriff anderweitig erfüllen. Zusätzlich zu benutzerdefinierten Routen können Sie den ausgehenden Traffic von VM-Instanzen in Ihrem VPC-Netzwerk beschränken, indem Sie Firewallregeln erstellen, die ausgehenden Traffic ablehnen.

Standardmäßig wird VM-Instanzen durch die implizierte Firewallregel zum Zulassen von ausgehendem Traffic ermöglicht, Traffic an ein beliebiges Ziel zu senden, wenn eine entsprechende Route vorhanden ist. Sie können eine Regel für ausgehenden Traffic erstellen, um den gesamten ausgehenden Traffic zu blockieren. Dann können Sie Regeln für ausgehenden Zugriff mit höherer Priorität erstellen, um Traffic zu ausgewählten Zielen in Ihrem VPC-Netzwerk und dem IP-Adressbereich 199.36.153.4/30 (restricted.googleapis.com) zuzulassen. Die gesamte Kommunikation mit restricted.googleapis.com erfolgt über den TCP-Port 443.

Weitere Informationen zum Arbeiten mit VPC-Firewallregeln finden Sie in der VPC-Dokumentation unter Firewallregeln verwenden.

Firewallregeln in lokalen Netzwerken

Sie müssen die lokalen Firewallregeln so konfigurieren, dass der Traffic von den lokalen Hosts den IP-Bereich 199.36.153.4/30 erreichen kann.

DNS konfigurieren

Um die IP-Adressen der eingeschränkten Google APIs zu verwenden, konfigurieren Sie Ihren DNS-Server so, dass *.googleapis.com als CNAME für restricted.googleapis.com aufgelöst wird, und konfigurieren Sie einen A-Eintrag für restricted.googleapis.com. Für die allgemeine Verwendung von VPC Service Controls empfehlen wir den Einsatz von verwalteten privaten Cloud DNS-Zonen für Ihre VPC-Netzwerke.

Für den lokalen Zugriff können Sie eine Cloud DNS-Weiterleitungsregel für die eingehende Weiterleitung konfigurieren, damit lokale Nameserver eine von Cloud verwaltete Zone abfragen können. Alternativ können Sie einen lokalen Nameserver konfigurieren. z. B. mit BIND:

  • Private DNS-Zonen in Cloud DNS ermöglichen das Hosten einer DNS-Zone, die über autorisierte VPC-Netzwerke und, wenn Sie die Weiterleitung konfigurieren, über bestimmte lokale Nameserver erreichbar ist. Sie können eine private Zone für googleapis.com mit einem A-Eintrag für restricted.googleapis.com und entsprechende CNAME-Einträge für jeden *.googleapis.com-Namen erstellen. Private Cloud DNS-Zonen unterstützen keine partiellen Überschreibungen. Das bedeutet, dass Sie nur alle Anfragen über *.googleapis.com an restricted.googleapis.com weiterleiten können. Daher können Sie keine Google APIs und Google-Dienste nutzen, die die Verwendung der restricted.googleapis.com-VIP nicht unterstützen. Weitere Informationen finden Sie unter Zonen verwalten.
  • Benutzerdefiniertes BIND wird bei Verwendung von Dataflow nicht unterstützt. Zur Anpassung der DNS-Auflösung bei der Verwendung von Dataflow mit VPC Service Controls verwenden Sie private Zonen von Cloud DNS anstelle benutzerdefinierter BIND-Server. Zur Verwendung einer eigenen lokalen DNS-Auflösung können Sie eine lokale DNS-Weiterleitungsmethode von Google Cloud verwenden.

DNS mit Cloud DNS konfigurieren

Verwenden Sie Cloud DNS, um die DNS-Auflösung für VM-Instanzen in Ihrem VPC-Netzwerk, Hosts in einem lokalen Netzwerk oder beides zu aktivieren. Wenn Sie eine freigegebene VPC verwenden, lesen Sie die Informationen in der Cloud DNS-Dokumentation unter Private Zonen und freigegebene VPCs. Wenn Sie eine freigegebene VPC verwenden, müssen Sie außerdem dafür sorgen, dass das Hostprojekt des freigegebenen VPC-Netzwerks im selben Dienstperimeter enthalten ist wie Projekte, die eine Verbindung zu dem Netzwerk herstellen.

  1. Erstellen Sie für Ihr VPC-Netzwerk eine verwaltete private Zone.

    gcloud beta dns managed-zones create ZONE_NAME \
     --visibility=private \
     --networks=https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME \
     --description=DESCRIPTION \
     --dns-name=googleapis.com
    
    • ZONE_NAME ist ein Name für die Zone, die Sie erstellen. Beispiel: vpc Dieser Name wird in den folgenden Schritten verwendet.

    • PROJECT_ID ist die ID des Projekts, in dem Ihr VPC-Netzwerk gehostet wird.

    • NETWORK_NAME ist der Name Ihres VPC-Netzwerks.

    • DESCRIPTION ist eine optionale menschenlesbare Beschreibung der verwalteten Zone.

  2. Starten Sie eine Transaktion.

    gcloud dns record-sets transaction start --zone=ZONE_NAME
    
    • ZONE_NAME ist der Name der Zone, die Sie im ersten Schritt erstellt haben.
  3. Fügen Sie DNS-Einträge hinzu.

    gcloud dns record-sets transaction add --name=*.googleapis.com. \
        --type=CNAME restricted.googleapis.com. \
        --zone=ZONE_NAME \
        --ttl=300
    
    • ZONE_NAME ist der Name der Zone, die Sie im ersten Schritt erstellt haben.
    gcloud dns record-sets transaction add --name=restricted.googleapis.com. \
        --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \
        --zone=ZONE_NAME \
        --ttl=300
    
    • ZONE_NAME ist der Name der Zone, die Sie im ersten Schritt erstellt haben.
  4. Führen Sie die Transaktion aus.

    gcloud dns record-sets transaction execute --zone=ZONE_NAME
    
    • ZONE_NAME ist der Name der Zone, die Sie im ersten Schritt erstellt haben.
  5. Optional: Führen Sie die folgenden Schritte aus, damit lokale Hosts die eingeschränkte VIP erreichen können:

    1. Erstellen Sie eine DNS-Richtlinie und aktivieren Sie die eingehende DNS-Weiterleitung, um die Namensauflösungsdienste des VPC-Netzwerks extern in Systemen in lokalen Netzwerken verfügbar zu machen.

      gcloud beta dns policies create POLICY_NAME \
       --networks=https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME \
       --enable-inbound-forwarding \
       --description=DESCRIPTION
      
      • POLICY_NAME ist der Name der Richtlinie, die Sie erstellen. Beispiel: apipolicy

      • PROJECT_ID ist die ID des Projekts, in dem Ihr VPC-Netzwerk gehostet wird.

      • NETWORK_NAME ist der Name Ihres VPC-Netzwerks.

      • DESCRIPTION ist eine optionale menschenlesbare Beschreibung der verwalteten Zone.

    2. Verweisen Sie in Ihrem lokalen Netzwerk mit dem lokalen DNS auf die Forwarder-IP-Adresse von Cloud DNS. Verwenden Sie den Befehl compute addresses list, um die IP-Adresse zur Weiterleitung zu ermitteln:

      gcloud compute addresses list --filter='name ~ ^dns-forwarding.*' \
       --format='csv[no-heading](address, subnetwork)'
      

DNS mit BIND konfigurieren

Wenn Sie für die DNS-Auflösung BIND verwenden, können Sie es so konfigurieren, dass Google API-Anfragen an die eingeschränkten Google APIs aufgelöst werden. Hier sehen Sie ein Beispiel für eine BIND-Konfiguration, in der sogenannte Antwortrichtlinienzonen (Response Policy Zones, RPZ) verwendet werden, um dieses Verhalten zu erzeugen:

  1. Fügen Sie /etc/bind/named.conf die folgenden Zeilen hinzu:

    include "/etc/bind/named.conf.options";
    include "/etc/bind/named.conf.local";
    
  2. Fügen Sie /etc/bind/named.conf.options die folgenden Zeilen hinzu:

    options {
      directory "/var/cache/bind";
    
      dnssec-validation no;
    
      auth-nxdomain no;    # conform to RFC 1035
      listen-on-v6 { any; };
      listen-on { any; };
      response-policy { zone "googleapis.zone"; };
      allow-query { any;};
    };
    
  3. Fügen Sie /etc/bind/named.conf.local die folgenden Zeilen hinzu:

    include "/etc/bind/named.conf.default-zones";

    zone "googleapis.zone" { type master; file "/etc/bind/db.googleapis.zone"; allow-query {none;}; };

  4. Fügen Sie /etc/bind/db.googleapis.zone die folgenden Zeilen hinzu:

    $TTL 1H
    @                       SOA LOCALHOST. noreply.localhost(1 1h 15m 30d 2h)
                            NS  LOCALHOST.

    *.googleapis.com CNAME restricted.googleapis.com. restricted.googleapis.com CNAME rpz-passthru.