Configura la connettività privata alle API e ai servizi Google

Questo documento descrive come configurare la connettività privata dagli host di una rete VPC o on-premise alle API e ai servizi Google supportati dai Controlli di servizio VPC.

Prima di leggere questo documento, ti consigliamo di acquisire familiarità con i concetti, le specifiche e la configurazione di rete di Private Google Access. Consulta i diagrammi di topologia di esempio sull'utilizzo di Accesso privato Google con i Controlli di servizio VPC.

Prima di iniziare

  • Abilita le API a cui vuoi accedere tramite la pagina API e servizi nella console Google Cloud.
  • Assicurati di disporre del ruolo necessario per creare o aggiornare le subnet. I proprietari, gli editor e le entità IAM dei progetti con il ruolo Amministratore di rete possono creare o aggiornare le subnet e assegnare indirizzi IP. Per ulteriori informazioni sui ruoli, leggi la documentazione relativa ai ruoli IAM.
  • Verifica che sia configurata una rete VPC per l'accesso privato Google e l'accesso privato Google per gli host on-premise. Sono supportate sia le reti VPC in modalità automatica sia quelle in modalità personalizzata. Le reti legacy non sono supportate.
  • Assicurati che le istanze VM in una rete VPC abbiano un indirizzo IP privato (nessun indirizzo IP pubblico) e si trovino in una subnet con l'accesso privato Google abilitato.
  • Per gli host on-premise, assicurati di avere un tunnel Cloud VPN o una connessione Cloud Interconnect alla tua rete VPC. Per supportare gli host on-premise con indirizzi IPv6, consulta Supporto IPv6.

Panoramica della procedura

Per configurare la connettività privata, completa le seguenti attività:

  • Configura i percorsi per gli intervalli di indirizzi IP restricted.googleapis.com. Per maggiori informazioni, consulta Configurare le route.
  • Configura le regole del firewall per consentire al traffico appropriato di raggiungere gli intervalli di indirizzi IPrestricted.googleapis.com. Per ulteriori informazioni, consulta Configurare le regole firewall.
  • Configura il DNS in modo che il traffico verso le API di Google venga risolto negli intervalli di indirizzi IP restricted.googleapis.com. Per ulteriori informazioni, consulta Configurare il DNS.

Supporto IPv6 per restricted.googleapis.com

Puoi accedere alle API Google utilizzando l'intervallo di indirizzi IPv6 per il dominio restricted.googleapis.com: 2600:2d00:0002:1000::/64.

Valuta la possibilità di configurare gli indirizzi IPv6 se vuoi utilizzare il dominio restricted.googleapis.com e hai client che utilizzano indirizzi IPv6. I client IPv6 che hanno configurato anche indirizzi IPv4 possono accedere ad API e servizi Google utilizzando gli indirizzi IPv4. Non tutti i servizi accettano il traffico proveniente da client IPv6.

Per consentire ai client IPv6 nel tuo ambiente on-premise di accedere alle API di Google utilizzando restricted.googleapis.com, devi configurare la connessione alla rete VPC in modo che supporti IPv6. Per ulteriori informazioni, consulta le seguenti pagine:

I client on-premise possono inviare richieste da qualsiasi indirizzo GUA o ULA IPv6, ad eccezione dell'intervallo ULAfda3:e722:ac3:cc00::/64, riservato per uso interno.

Per ulteriori informazioni sul VIP restricted.googleapis.com, consulta Configurare Accesso privato Google.

Connettività diretta ad API e servizi

Alcune API e alcuni servizi Google offrono connettività diretta dalle istanze delle macchine virtuali (VM) di Compute Engine, bypassando i front end di Google (GFEs). Per consentire questo traffico, devi assicurarti che le route e le regole firewall consentano al traffico in uscita di raggiungere 34.126.0.0/18 e 2001:4860:8040::/42. Non è necessario creare record DNS per questi indirizzi. Diversi servizi Google Cloud supportano la connettività diretta per offrire prestazioni avanzate per le API gRPC di Google. Per attivare questo rendimento migliorato, devi fornire l'accesso agli intervalli di indirizzi IP specificati.

La connettività diretta è supportata solo dalle risorse Google Cloud. Non puoi utilizzare la connettività diretta dagli host on-premise.

I servizi che offrono connettività diretta supportano i Controlli di servizio VPC.

Configura i percorsi per restricted.googleapis.com

Sebbene i Controlli di servizio VPC vengano applicati per i servizi compatibili e configurati, indipendentemente dal dominio utilizzato, restricted.googleapis.com offre una mitigazione del rischio aggiuntiva per l'esfiltrazione di dati. restricted.googleapis.com nega l'accesso alle API e ai servizi di Google non supportati dai Controlli di servizio VPC.

Sia per l'accesso privato Google sia per l'accesso privato Google per gli host on-premise, la rete VPC deve includere una route per gli intervalli di indirizzi IPrestricted.googleapis.com il cui hop successivo è il gateway internet predefinito. Anche se l'hop successivo è un gateway internet predefinito, il traffico inviato a restricted.googleapis.com rimane all'interno della rete di Google.

Se la tua rete VPC non ha una route predefinita il cui hop successivo è il gateway internet predefinito, puoi creare una route statica personalizzata la cui destinazione è l'intervallo di indirizzi IP restricted.googleapis.com e il cui hop successivo è il gateway internet predefinito. Per impedire l'accesso a internet, devi rimuovere altre route il cui hop successivo è il gateway internet predefinito.

Per ulteriori informazioni sull'utilizzo delle route VPC, consulta Utilizzo delle route nella documentazione VPC.

Configurare route statiche personalizzate in una rete VPC

Aggiungi route statici personalizzati per consentire l'accesso ai servizi gestiti da Google supportati da Controlli di servizio VPC.

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

Sostituisci quanto segue:

  • ROUTE_NAME: un nome per la route personalizzata
  • NETWORK_NAME: il nome della rete VPC
  • DESTINATION_RANGE: l'intervallo di destinazione per il percorso
    • Per instradare il traffico al VIP restricted.googleapis.com, utilizza i seguenti intervalli:
      • Per il traffico IPv4: 199.36.153.4/30
      • Per il traffico IPv6: 2600:2d00:0002:1000::/64
    • Per instradare il traffico verso le API che consentono la connettività diretta, utilizza i seguenti intervalli:
      • Per il traffico IPv4: 34.126.0.0/18
      • Per il traffico IPv6: 2001:4860:8040::/42

Comunicare il percorso con limitazioni agli host di una rete on-premise

Se utilizzi accesso privato Google per gli host on-premise, configura le route in modo che il traffico delle API di Google venga inoltrato tramite la connessione Cloud VPN o Cloud Interconnect. Per annunciare gli intervalli di indirizzi VIP soggetti a limitazioni alla tua rete on-premise, utilizza la modalità di annuncio personalizzato del router Cloud. Gli intervalli di indirizzi VIP limitati sono accessibili solo agli host on-premise che possono raggiungere la tua rete VPC tramite indirizzi IP privati.

Puoi aggiungere questa route pubblicizzata personalizzata a un router Cloud (per tutte le sessioni BGP sul router) o a una sessione BGP selezionata (per un singolo tunnel Cloud VPN o un collegamento VLAN).

Le route IPv6 vengono pubblicizzate solo nelle sessioni BGP in cui l'IPv6 è abilitato.

Per creare una route pubblicizzata personalizzata per l'intervallo limitato per tutte le sessioni BGP su un router Cloud esistente:

Console

  1. Nella console Google Cloud, vai alla pagina Cloud Routers.

    Vai a Router Cloud

  2. Seleziona il router Cloud da aggiornare.

  3. Nella pagina dei dettagli del router Cloud, seleziona Modifica.

  4. Espandi la sezione Route annunciate.

  5. Per Route (Percorsi), seleziona Crea route personalizzate.

  6. Per continuare a pubblicizzare le subnet disponibili per il router Cloud, seleziona Annuncia tutte le subnet visibili al router Cloud. L'attivazione di questa opzione riproduce il comportamento predefinito del router Cloud.

  7. Per aggiungere una route pubblicizzata, seleziona Aggiungi route personalizzata .

  8. Configura l'annuncio di route.

    • Origine: seleziona Intervallo IP personalizzato.
    • Intervallo di indirizzi IP:
      • Per la connettività IPv4: 199.36.153.4/30
      • Per la connettività IPv6: 2600:2d00:0002:1000::/64
    • Descrizione: aggiungi una descrizione di Restricted Google APIs IPs.
  9. Dopo aver aggiunto i percorsi, seleziona Salva.

gcloud

Esegui il comando update utilizzando il flag --set-advertisement-ranges o --add-advertisement-ranges per specificare gli intervalli IP personalizzati:

  • Per impostare intervalli IP personalizzati, utilizza il flag --set-advertisement-ranges. Eventuali route personalizzate annunciate esistenti vengono sostituite. L'esempio seguente aggiorna il router Cloud my-router in modo che annunci tutte le subnet e gli intervalli di indirizzi IP restricted.googleapis.com.

    gcloud compute routers update my-router \
        --advertisement-mode CUSTOM \
        --set-advertisement-groups ALL_SUBNETS \
        --set-advertisement-ranges RANGES
    

    Sostituisci RANGES con gli intervalli che vuoi utilizzare:

    • Per la connettività IPv4: 199.36.153.4/30
    • Per la connettività IPv6: 2600:2d00:0002:1000::/64
    • Per la connettività IPv4 e IPv6: 199.36.153.4/30,2600:2d00:0002:1000::/64

  • Per aggiungere intervalli IP personalizzati a un annuncio esistente, utilizza il flag --add-advertisement-ranges. Tieni presente che questo flag richiede che la modalità di pubblicità del router Cloud sia già impostata su custom. L'esempio seguente aggiunge gli intervalli di indirizzi IP restricted.googleapis.com agli annunci del router Cloud:

    gcloud compute routers update my-router \
        --add-advertisement-ranges RANGES
    

    Sostituisci RANGES con gli intervalli che vuoi utilizzare:

    • Per la connettività IPv4: 199.36.153.4/30
    • Per la connettività IPv6: 2600:2d00:0002:1000::/64
    • Per la connettività IPv4 e IPv6: 199.36.153.4/30,2600:2d00:0002:1000::/64

Per creare una route pubblicizzata personalizzata per l'intervallo limitato in una sessione BGP specifica di un router Cloud esistente:

Console

  1. Nella console Google Cloud, vai alla pagina Cloud Routers.

    Vai a Router Cloud

  2. Seleziona il router Cloud che contiene la sessione BGP da aggiornare.

  3. Nella pagina dei dettagli del router Cloud, seleziona la sessione BGP da aggiornare.

  4. Nella pagina Dettagli sessione BGP, seleziona Modifica.

  5. Per Route (Percorsi), seleziona Crea route personalizzate.

  6. Seleziona Annoncia tutte le subnet visibili al router Cloud per continuare a pubblicizzare le subnet disponibili per il router Cloud. L'attivazione di questa opzione riproduce il comportamento predefinito del router Cloud.

  7. Seleziona Aggiungi route personalizzata per aggiungere una route pubblicizzata.

  8. Configura l'annuncio di route.

    • Sorgente: seleziona Intervallo IP personalizzato per specificare un intervallo IP personalizzato.
    • Intervallo di indirizzi IP:
      • Per la connettività IPv4: 199.36.153.4/30
      • Per la connettività IPv6: 2600:2d00:0002:1000::/64
    • Descrizione: aggiungi una descrizione di Restricted Google APIs IPs.
  9. Dopo aver aggiunto le route, seleziona Salva.

gcloud

Esegui il comando update-bgp-peer utilizzando il flag --set-advertisement-ranges o --add-advertisement-ranges per specificare gli intervalli IP personalizzati.

  • Per impostare intervalli IP personalizzati, utilizza il flag --set-advertisement-ranges. Eventuali route personalizzate annunciate esistenti vengono sostituite.

    Se aggiungi intervalli personalizzati IPv6 e il traffico IPv6 è disabilitato per la sessione BGP, puoi attivarlo con il flag --enable-ipv6.

    L'esempio seguente aggiorna la sessione BGP my-bgp-session sul router Cloud my-router per pubblicizzare tutte le subnet e l'intervallo IP personalizzato:

    gcloud compute routers update-bgp-peer my-router \
        --peer-name my-bgp-session \
        --advertisement-mode CUSTOM \
        --set-advertisement-groups ALL_SUBNETS \
        --set-advertisement-ranges RANGES
    

    Sostituisci RANGES con gli intervalli che vuoi utilizzare:

    • Per la connettività IPv4: 199.36.153.4/30
    • Per la connettività IPv6: 2600:2d00:0002:1000::/64
    • Per la connettività IPv4 e IPv6: 199.36.153.4/30,2600:2d00:0002:1000::/64

  • Per aggiungere intervalli IP personalizzati a quelli esistenti, utilizza il --add-advertisement-ranges flag. Tieni presente che questo flag richiede che la modalità di pubblicità del router Cloud sia già impostata su custom.

    Se aggiungi intervalli personalizzati IPv6 e il traffico IPv6 è disabilitato per la sessione BGP, puoi attivarlo con il flag --enable-ipv6.

    L'esempio seguente aggiunge gli intervalli di indirizzi VIP limitati agli annunci del router Cloud:

    gcloud compute routers update-bgp-peer my-router \
        --peer-name my-bgp-session \
        --add-advertisement-ranges RANGES
    

    Sostituisci RANGES con gli intervalli che vuoi utilizzare:

    • Per la connettività IPv4: 199.36.153.4/30
    • Per la connettività IPv6: 2600:2d00:0002:1000::/64
    • Per la connettività IPv4 e IPv6: 199.36.153.4/30,2600:2d00:0002:1000::/64

    Per ulteriori informazioni sulla modalità di annuncio personalizzato, consulta Percorsi con annunci personalizzati.

Configurazione delle regole del firewall

Per l'accesso privato Google, le istanze VM utilizzano indirizzi IP interni e non richiedono indirizzi IP esterni per raggiungere le risorse dell'API Google protette. Tuttavia, è possibile che le istanze VM dispongano di indirizzi IP esterni o comunque soddisfino i requisiti per l'accesso a internet. Oltre alle route pubblicizzate personalizzate, puoi limitare il traffico in uscita dalle istanze VM nella tua rete VPC creando regole firewall per negare il traffico in uscita.

Per impostazione predefinita, la regola firewall di uscita implicita consente alle istanze VM di inviare traffico a qualsiasi destinazione se esiste un route applicabile. Per prima cosa, puoi creare una regola di rifiuto in uscita per bloccare tutto il traffico in uscita. Puoi quindi creare regole di uscita con priorità più elevata che consentano il traffico verso destinazioni selezionate nella rete VPC e agli intervalli di indirizzi IP restricted.googleapis.com. Tutte le comunicazioni con restricted.googleapis.com avvengono sulla porta TCP 443.

Per consentire al traffico da Google Cloud di raggiungere i VIP restricted.googleapis.com, aggiungi regole firewall per le seguenti destinazioni:

  • Per il traffico IPv4: 199.36.153.4/30
  • Per il traffico IPv6: 2600:2d00:0002:1000::/64

Per consentire al traffico da Google Cloud di raggiungere API e servizi che consentono la connettività diretta, aggiungi regole del firewall per le seguenti destinazioni:

  • Per il traffico IPv4: 34.126.0.0/18
  • Per il traffico IPv6: 2001:4860:8040::/42

Per ulteriori informazioni sull'utilizzo delle regole firewall VPC, consulta Utilizzare le regole firewall VPC nella documentazione di Cloud Next Generation Firewall.

Configura le regole del firewall on-premise in modo che il traffico proveniente dai tuoi host on-premise raggiunga gli intervalli di indirizzi IP restricted.googleapis.com.

  • Per il traffico IPv4: 199.36.153.4/30
  • Per il traffico IPv6: 2600:2d00:0002:1000::/64

La connettività diretta alle API e ai servizi Google non è supportata dalle reti on-premise.

Configura il DNS

Puoi utilizzare zone private gestite per le tue reti VPC. Le zone DNS private di Cloud DNS ti consentono di ospitare una zona DNS accessibile dalle reti VPC autorizzate. Per configurare il reindirizzamento da determinati server dei nomi on-premise, puoi utilizzare gli intervalli di indirizzi IP restricted.googleapis.com. Puoi quindi creare una zona privata per googleapis.com con un record A DNS che mappa restricted.googleapis.com e i record CNAME appropriati per ogni nome *.googleapis.com. Per saperne di più, consulta Gestire le zone.

Per l'accesso on-premise, puoi configurare un criterio di forwarding in entrata di Cloud DNS per consentire ai server dei nomi on-premise di eseguire query su una zona privata gestita da Cloud DNS. Puoi anche configurare un server dei nomi on-premise, ad esempio uno utilizzando BIND:

Configurare il DNS con Cloud DNS

Per attivare la risoluzione DNS per le istanze VM nella tua rete VPC, per gli host in una rete on-premise o per entrambi, utilizza Cloud DNS. Se utilizzi un VPC condiviso, consulta la sezione Zone private e VPC condiviso nella documentazione di Cloud DNS. Inoltre, se utilizzi la Rete VPC condiviso, consigliamo di includere il progetto host della rete VPC condiviso nello stesso perimetro di servizio dei progetti che si connettono alla rete.

Configurare Cloud DNS utilizzando le zone private

Puoi utilizzare le zone private per configurare Cloud DNS:

  1. Crea una zona privata gestita per la tua rete VPC.

    gcloud 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

    Sostituisci quanto segue:

    • ZONE_NAME: un nome per la zona che stai creando. Ad esempio, vpc. Questo nome viene utilizzato in ciascuno dei passaggi che seguono.
    • PROJECT_ID: l'ID del progetto che ospita la rete VPC.
    • NETWORK_NAME: il nome della rete VPC.
    • DESCRIPTION: una descrizione facoltativa leggibile della zona gestita.
  2. Avvia una transazione.

    gcloud dns record-sets transaction start --zone=ZONE_NAME

    Sostituisci ZONE_NAME con il nome della zona che hai creato nel primo passaggio.

  3. Aggiungi record DNS.

    gcloud dns record-sets transaction add --name=*.googleapis.com. \
        --type=CNAME restricted.googleapis.com. \
        --zone=ZONE_NAME \
        --ttl=300

    Sostituisci ZONE_NAME con il nome della zona che hai creato nel primo passaggio.

    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

    Sostituisci ZONE_NAME con il nome della zona che hai creato nel primo passaggio.

    Se configuri gli indirizzi IPv6 per restricted.googleapis.com, crea anche il seguente insieme di record:

    gcloud dns record-sets transaction add --name=restricted.googleapis.com. \
        --type=AAAA 2600:2d00:0002:1000:: \
        --zone=ZONE_NAME \
        --ttl=300
  4. Esegui la transazione.

    gcloud dns record-sets transaction execute --zone=ZONE_NAME

    Sostituisci ZONE_NAME con il nome della zona che hai creato nel primo passaggio.

  5. Facoltativo. Per consentire agli host on-premise di raggiungere il VIP limitato, completa i seguenti passaggi:

    1. Crea un criterio DNS e attiva l'inoltro DNS in entrata per rendere disponibili esternamente i servizi di risoluzione dei nomi della rete VPC per i sistemi nelle reti on-premise.

      gcloud dns policies create POLICY_NAME \
       --networks=https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME \
       --enable-inbound-forwarding \
       --description=DESCRIPTION

      Sostituisci quanto segue:

      • POLICY_NAME: un nome per il criterio che stai creando. Ad esempio, apipolicy.
      • PROJECT_ID: l'ID del progetto che ospita la rete VPC.
      • NETWORK_NAME: il nome della rete VPC.
      • DESCRIPTION: una descrizione facoltativa leggibile della zona gestita.
    2. Nella tua rete on-premise, fai in modo che il DNS on-premise punti all'indirizzo IP del forwarder Cloud DNS. Per trovare l'indirizzo IP del forwarder, utilizza il comando compute addresses list:

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

Configurare il DNS con BIND

Se utilizzi BIND per la risoluzione DNS, puoi configurarlo in modo da risolvere le richieste dell'API Google alle API Google con limitazioni. Utilizza il seguente esempio di configurazione BIND, che utilizza le zone di criteri di risposta (RPZ) per ottenere questo comportamento:

  1. Aggiungi le seguenti righe a /etc/bind/named.conf:

    include "/etc/bind/named.conf.options";
    include "/etc/bind/named.conf.local";
    
  2. Aggiungi le seguenti righe a /etc/bind/named.conf.options:

    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. Aggiungi le seguenti righe a /etc/bind/named.conf.local:

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

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

  4. Aggiungi le seguenti righe a /etc/bind/db.googleapis.zone:

    $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.

Configurare il DNS in casi speciali

Quando devi configurare il DNS in casi speciali, tieni presente quanto segue:

  • BIND personalizzato non è supportato quando si utilizza Dataflow. Per personalizzare la risoluzione DNS quando utilizzi Dataflow con i Controlli di servizio VPC, utilizza le zone private di Cloud DNS anziché i server BIND personalizzati. Per utilizzare la tua risoluzione DNS on-premise, ti consigliamo di utilizzare un metodo di inoltro DNS di Google Cloud.
  • Potresti dover configurare anche il DNS per gcr.io se, ad esempio, utilizzi Google Kubernetes Engine (GKE). Per ulteriori informazioni, consulta Configurazione di Container Registry per i cluster privati GKE.