Private Verbindung zu Google APIs und Google-Diensten einrichten

Mit VPC Service Controls können Sie den Zugriff auf Google-APIs und -Dienste von Hosts aus steuern, die private IP-Adressen verwenden. Bei diesen Hosts kann es sich um VM-Instanzen in einem VPC-Netzwerk oder um Clients in einem lokalen Netzwerk handeln.

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 private Verbindungen für Hosts in einem VPC-Netzwerk oder einem lokalen Netzwerk einrichten. Eine Übersicht und beispielhafte Topologiediagramme finden Sie unter Privater Google-Zugriff mit VPC Service Controls.

Hinweise

  • Aktivieren Sie die APIs, auf die Sie über die Seite APIs und Dienste in der Google Cloud Console zugreifen möchten.
  • 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.
  • Privater Google-Zugriff und privater Google-Zugriff für lokale Hosts erfordern ein VPC-Netzwerk. Es werden VPC-Netzwerke im automatischen und im benutzerdefinierten Modus unterstützt. Legacy-Netzwerke werden nicht unterstützt.
  • Für VM-Instanzen in einem VPC-Netzwerk müssen sie nur eine private IP-Adresse haben (keine öffentliche IP-Adresse) und 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.

Überblick über das Verfahren

Führen Sie die folgenden Schritte aus, um eine private Verbindung einzurichten:

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

Route zu restricted.googleapis.com konfigurieren

Sowohl für den privaten Google-Zugriff als auch für den privaten Google-Zugriff für lokale Hosts muss Ihr VPC-Netzwerk eine Route mit einem Ziel für 199.36.153.4/30 enthalten, dessen nächster Hop das Standard-Internet-Gateway 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 verfügt möglicherweise bereits über eine Standardroute, deren nächster Hop das Standard-Internet-Gateway ist. Ist dies nicht der Fall, können Sie eine benutzerdefinierte statische Route erstellen, deren Ziel 199.36.153.4/30 ist und deren nächster Hop das Standard-Internet-Gateway 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 den eingeschränkten VIP erhalten. Sie können eine benutzerdefinierte dynamische Route mithilfe von Cloud Router erstellen, um das eingeschränkte VIP Advertisement durchzuführen.

Weitere Informationen zum Arbeiten mit VPC-Routen finden Sie unter Routes 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 aktivieren, 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
        

    Wobei:

    • ROUTE_NAME ist ein Name für die benutzerdefinierte Route.

    • NETWORK_NAME ist der Name Ihres VPC-Netzwerks.

Ankündigung der eingeschränkten Route zu Hosts in einem lokalen Netzwerk

Wenn Sie privaten Google-Zugriff für lokale Hosts verwenden, konfigurieren Sie Routen so, dass Google API-Traffic über Ihre Cloud VPN- oder Cloud Interconnect-Verbindung weitergeleitet wird. Verwenden Sie zur Ankündigung des eingeschränkten VIPs (199.36.153.4/30) in Ihrem lokalen Netzwerk Benutzerdefiniertes Cloud Route-Route Advertisement. Auf diesen IP-Adressbereich können nur lokale Hosts zugreifen, die über private IP-Adressen auf Ihr VPC-Netzwerk zugreifen 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 Routen-Advertising.
    • Quelle: Wählen Sie Benutzerdefinierter IP-Bereich, 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 wollen, 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 Advertising anhängen. Für dieses Flag muss der Advertising-Modus des Cloud Routers bereits auf custom eingestellt sein. Im folgenden Beispiel wird die benutzerdefinierte IP Restricted Google APIs IPs dem Advertising 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 Routen-Advertising.
    • Quelle: Wählen Sie Benutzerdefinierter IP-Bereich, 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 wollen, 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 und 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 Advertising-Modus des Cloud Routers bereits auf custom eingestellt sein. Im folgenden Beispiel wird der IP-Bereich 199.36.153.4/30 der eingeschränkten Google APIs dem Advertising des Cloud Routers 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 Advertising finden Sie unter Benutzerdefiniertes Router Advertisement.

Firewallregeln konfigurieren

Bei privatem Google-Zugriff verwenden VM-Instanzen interne IP-Adressen und benötigen 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 einschränken, indem Sie Firewallregeln erstellen, um ausgehenden Traffic zu verhindern.

Standardmäßig wird VM-Instanzen durch die implizierte Regel 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, und dann 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 unter Firewallregeln verwenden in der VPC-Dokumentation.

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 er *.googleapis.com als CNAME an 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 Ihnen den Einsatz von verwalteten privaten Cloud DNS-Zonen für Ihre VPC-Netzwerke.

Für den lokalen Zugriff können Sie eine Cloud DNS-Richtlinie für eingehende Weiterleitungen konfigurieren, um lokale Nameserver zum Abfragen einer verwalteten Cloud DNS-Zone zu aktivieren, oder einen lokalen Nameserver konfigurieren, z. B. einen 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, von bestimmten lokalen Nameservern aus erreichbar ist. Sie können eine private Zone für googleapis.com mit einem A-Eintrag für restricted.googleapis.com und die entsprechenden CNAME-Einträge für jeden *.googleapis.com-Namen erstellen. Private Cloud DNS-Zonen unterstützen keine partiellen Überschreibungen. Sie können also nur alle Anfragen an *.googleapis.com zu restricted.googleapis.com umleiten. Aus diesem Grund können Sie keine Google APIs und Dienste verwenden, die die Verwendung des VIPs restricted.googleapis.com nicht unterstützen. Weitere Informationen finden Sie unter Zonen verwalten.
  • Benutzerdefiniertes BIND und die VIP-Adresse restricted.googleapis.com können nicht für Dataflow verwendet werden, da die DNS-Auflösung von Dataflow nicht angepasst werden kann.

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, finden Sie weitere Informationen in der Dokumentation zu Cloud DNS unter Private Zonen und freigegebene VPCs. Wenn Sie Shared VPC verwenden, stellen Sie außerdem sicher, dass das Shared VPC-Netzwerkhostprojekt im selben Dienstperimeter enthalten ist wie Projekte, die eine Verbindung zum 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 sich Ihr VPC-Netzwerk befindet.

    • 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, um lokalen Hosts Zugriff auf den eingeschränkten VIP zu gewähren:

    1. Erstellen Sie eine DNS-Richtlinie und aktivieren Sie die eingehende DNS-Weiterleitung, um die Namensauflösungsdienste des VPC-Netzwerks extern für Systeme 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 ein Name für die Richtlinie, die Sie erstellen. Beispiel: apipolicy

      • PROJECT_ID ist die ID des Projekts, in dem sich Ihr VPC-Netzwerk befindet.

      • 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 des Forwarders zu ermitteln:

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

DNS mit BIND konfigurieren

Wenn Sie BIND für die DNS-Auflösung verwenden, können Sie es so konfigurieren, dass Google API-Anfragen für die eingeschränkten Google APIs aufgelöst werden. Verwenden Sie die folgende Beispiel-BIND-Konfiguration, die Antwortrichtlinien (RPZ) verwendet, um dieses Verhalten zu erreichen:

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

        include "/etc/bind/named.conf.options";
        include "/etc/bind/named.conf.local";
        
  2. Fügen Sie die folgenden Zeilen zu /etc/bind/named.conf.options 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 die folgenden Zeilen zu /etc/bind/named.conf.local 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 die folgenden Zeilen zu /etc/bind/db.googleapis.zone 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.