Accesso alle API da VM con indirizzi IP esterni

Un'istanza di macchina virtuale (VM) con un indirizzo IP esterno assegnato alla sua intera interfaccia di rete può connettersi alle API e ai servizi Google se i requisiti di rete descritti su questa pagina sono soddisfatti. Sebbene la connessione venga stabilita dall'indirizzo IP esterno della VM, il traffico rimane all'interno di Google Cloud e non viene inviato tramite internet pubblico.

Requisiti di rete

Per accedere alle API e ai servizi Google da una VM con un indirizzo IP esterno, devi soddisfare i seguenti requisiti:

  • Se vuoi connetterti alle API e ai servizi Google utilizzando IPv6, devi soddisfare entrambi i seguenti requisiti:

Riepilogo delle opzioni di configurazione

La seguente tabella riassume i diversi modi in cui puoi configurare Accesso privato Google. Per informazioni più dettagliate sulla configurazione, consulta Configurazione di rete.

Opzione Dominio Configurazione DNS Configurazione del routing Configurazione del firewall
Domini predefiniti Non è richiesta alcuna configurazione DNS speciale.

Assicurati che la rete VPC possa instradare il traffico agli intervalli di indirizzi IP utilizzati dalle API e dai servizi Google.

  • Configurazione di base: verifica di avere route predefinite con hop successivo default-internet-gateway e un intervallo di destinazione 0.0.0.0/0 (per il traffico IPv4) e ::/0 (per il traffico IPv6, se necessario). Crea questi route se mancano.
  • Configurazione personalizzata: crea route per gli intervalli di indirizzi IP utilizzati dalle API e dai servizi Google.

Assicurati che le regole del firewall consentano l'uscita agli intervalli di indirizzi IP utilizzati dalle API e dai servizi Google.

La regola firewall in uscita predefinita consente questo traffico, se non esiste una regola di priorità superiore che lo blocca.

private.googleapis.com

Configura i record DNS in una zona DNS privata per inviare richieste ai seguenti indirizzi IP:

Per il traffico IPv4:

  • 199.36.153.8/30

Per il traffico IPv6:

  • 2600:2d00:0002:2000::/64

Assicurati che la rete VPC abbia route per i seguenti intervalli IP:

Per il traffico IPv4:

  • 199.36.153.8/30
  • 34.126.0.0/18

Per il traffico IPv6:

  • 2600:2d00:0002:2000::/64
  • 2001:4860:8040::/42

Assicurati che le regole del firewall consentano l'uscita per i seguenti intervalli IP:

Per il traffico IPv4:

  • 199.36.153.8/30
  • 34.126.0.0/18

Per il traffico IPv6:

  • 2600:2d00:0002:2000::/64
  • 2001:4860:8040::/42
restricted.googleapis.com

Configura i record DNS per inviare richieste ai seguenti indirizzi IP:

Per il traffico IPv4:

  • 199.36.153.4/30

Per il traffico IPv6:

  • 2600:2d00:0002:1000::/64

Assicurati che la rete VPC abbia route per i seguenti intervalli IP:

Per il traffico IPv4:

  • 199.36.153.4/30
  • 34.126.0.0/18

Per il traffico IPv6:

  • 2600:2d00:0002:1000::/64
  • 2001:4860:8040::/42

Assicurati che le regole del firewall consentano l'uscita per i seguenti intervalli IP:

Per il traffico IPv4:

  • 199.36.153.4/30
  • 34.126.0.0/18

Per il traffico IPv6:

  • 2600:2d00:0002:1000::/64
  • 2001:4860:8040::/42

Configurazione di rete

Questa sezione descrive i requisiti di rete di base che devi soddisfare affinché una VM nella tua rete VPC possa accedere alle API e ai servizi Google.

Opzioni di dominio

Scegli il dominio che vuoi utilizzare per accedere alle API e ai servizi Google.

Gli indirizzi IP virtuali private.googleapis.com e restricted.googleapis.com supportano solo i protocolli basati su HTTP su TCP (HTTP, HTTPS e HTTP/2). Tutti gli altri protocolli, inclusi MQTT e ICMP, non sono supportati.

Intervalli di indirizzi IP e di dominio Servizi supportati Esempio di utilizzo

Domini predefiniti.

Tutti i nomi di dominio per le API e i servizi Google tranne private.googleapis.com e restricted.googleapis.com.

Vari intervalli di indirizzi IP: puoi determinare un insieme di intervalli IP contenenti i possibili indirizzi utilizzati dai domini predefiniti facendo riferimento ai indirizzi IP per i domini predefiniti.

Consente l'accesso API alla maggior parte delle API e dei servizi Google, indipendentemente dal fatto che siano supportati dai Controlli di servizio VPC. Include l'accesso alle API di Google Maps, Google Ads e Google Cloud. Sono incluse le applicazioni web di Google Workspace come Gmail e Documenti Google, e altre applicazioni web.

I domini predefiniti vengono utilizzati quando non configuri i record DNS per private.googleapis.com e restricted.googleapis.com.

private.googleapis.com

199.36.153.8/30

2600:2d00:0002:2000::/64

Consente l'accesso API alla maggior parte delle API e dei servizi Google, indipendentemente dal fatto che siano supportati dai Controlli di servizio VPC. Include l'accesso alle API di Google Maps, Google Ads, Google Cloud e alla maggior parte delle altre API di Google, incluso l'elenco che segue. Non supporta le applicazioni web di Google Workspace come Gmail e Documenti Google. Non supporta alcun sito web interattivo.

Nomi di dominio corrispondenti:

  • accounts.google.com (solo i percorsi necessari per l'autenticazione OAuth)
  • *.aiplatform-notebook.cloud.google.com
  • *.aiplatform-notebook.googleusercontent.com
  • appengine.google.com
  • *.appspot.com
  • *.backupdr.cloud.google.com
  • backupdr.cloud.google.com
  • *.backupdr.googleusercontent.com
  • backupdr.googleusercontent.com
  • *.cloudfunctions.net
  • *.cloudproxy.app
  • *.composer.cloud.google.com
  • *.composer.googleusercontent.com
  • *.datafusion.cloud.google.com
  • *.datafusion.googleusercontent.com
  • *.dataproc.cloud.google.com
  • dataproc.cloud.google.com
  • *.dataproc.googleusercontent.com
  • dataproc.googleusercontent.com
  • dl.google.com
  • gcr.io o *.gcr.io
  • *.googleapis.com
  • *.gke.goog
  • *.gstatic.com
  • *.kernels.googleusercontent.com
  • *.ltsapis.goog
  • *.notebooks.cloud.google.com
  • *.notebooks.googleusercontent.com
  • packages.cloud.google.com
  • pkg.dev o *.pkg.dev
  • pki.goog o *.pki.goog
  • *.run.app
  • source.developers.google.com
  • storage.cloud.google.com

Utilizza private.googleapis.com per accedere alle API e ai servizi Google utilizzando un insieme di indirizzi IP instradabili solo da Google Cloud.

Scegli private.googleapis.com nelle seguenti circostanze:

  • Non utilizzi i Controlli di servizio VPC.
  • Utilizzi i Controlli di servizio VPC, ma devi anche accedere ad API e servizi Google non supportati dai Controlli di servizio VPC.1

restricted.googleapis.com

199.36.153.4/30

2600:2d00:0002:1000::/64

Consente l'accesso API alle API e ai servizi di Google supportati dai Controlli di servizio VPC.

Blocca l'accesso alle API e ai servizi di Google che non supportano Controlli di servizio VPC. Non supporta le API Google Workspace o le applicazioni web di Google Workspace come Gmail e Documenti Google.

Utilizza restricted.googleapis.com per accedere alle API e ai servizi Google utilizzando un insieme di indirizzi IP instradabili solo da Google Cloud.

Scegli restricted.googleapis.com se solo hai bisogno di accedere alle API e ai servizi Google supportati da Controlli di servizio VPC.

Il dominio restricted.googleapis.com non consente l'accesso alle API e ai servizi di Google che non supportano i Controlli di servizio VPC.1

1 Se devi limitare gli utenti solo alle API e ai servizi Google supportati da Controlli di servizio VPC, utilizza restricted.googleapis.com, in quanto offre una mitigazione del rischio aggiuntiva per l'esfiltrazione di dati. L'utilizzo di restricted.googleapis.com nega l'accesso alle API e ai servizi di Google non supportati dai Controlli di servizio VPC. Per ulteriori dettagli, consulta Configurare la connettività privata nella documentazione di Controlli di servizio VPC.

Supporto IPv6 per private.googleapis.com e restricted.googleapis.com

I seguenti intervalli di indirizzi IPv6 possono essere utilizzati per indirizzare il traffico dai client IPv6 alle API e ai servizi Google:

  • private.googleapis.com: 2600:2d00:0002:2000::/64
  • restricted.googleapis.com: 2600:2d00:0002:1000::/64

Valuta la possibilità di configurare gli indirizzi IPv6 se vuoi utilizzare il dominio private.googleapis.com o 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.

Configurazione DNS

Per la connettività con i servizi e le API di Google, puoi scegliere di inviare i pacchetti agli indirizzi IP associati al VIP private.googleapis.com o restricted.googleapis.com. Per utilizzare un VIP, devi configurare il DNS in modo che le VM nella tua rete VPC raggiungano i servizi utilizzando gli indirizzi VIP anziché gli indirizzi IP pubblici.

Le sezioni seguenti descrivono come utilizzare le zone DNS per inviare pacchetti agli indirizzi IP associati al VIP scelto. Segui le istruzioni per tutti gli scenari che ti riguardano:

Quando configuri i record DNS per i VIP, utilizza solo gli indirizzi IP descritti nei passaggi che seguono. Non mescolare indirizzi di VIP di private.googleapis.com e restricted.googleapis.com. Ciò può causare errori intermittenti perché i servizi offerti differiscono in base alla destinazione di un pacchetto.

Configura il DNS per googleapis.com

Crea una zona DNS e i record per googleapis.com:

  1. Crea una zona DNS privata per googleapis.com. Valuta la possibilità di creare una zona privata Cloud DNS a questo scopo.
  2. Nella zona googleapis.com, crea i seguenti record DNS privati per private.googleapis.com o restricted.googleapis.com, a seconda del dominio che hai scelto di utilizzare.

    • Per private.googleapis.com:

      1. Crea un record A per private.googleapis.com che rimandi ai seguenti indirizzi IP: 199.36.153.8, 199.36.153.9, 199.36.153.10, 199.36.153.11.

      2. Per connetterti alle API utilizzando indirizzi IPv6, configura anche un AAAA record per private.googleapis.com che rimandi a 2600:2d00:0002:2000::.

    • Per restricted.googleapis.com:

      1. Crea un record A per restricted.googleapis.com che rimandi ai seguenti indirizzi IP: 199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7.

      2. Per connetterti alle API utilizzando indirizzi IPv6, crea anche un record AAAA per restricted.googleapis.com che rimandi a 2600:2d00:0002:1000::.

    Per creare record DNS privati in Cloud DNS, consulta Aggiungere un record.

  3. Nella zona googleapis.com, crea un record CNAME per *.googleapis.com che rimandi al dominio che hai configurato: private.googleapis.com o restricted.googleapis.com.

Configurare il DNS per altri domini

Alcune API e alcuni servizi Google vengono forniti utilizzando nomi di dominio aggiuntivi, tra cui *.gcr.io, *.gstatic.com, *.pkg.dev, pki.goog e *.run.app. Consulta la tabella degli intervalli di indirizzi IP e di dominio in Opzioni di dominio per determinare se è possibile accedere ai servizi del dominio aggiuntivo utilizzando private.googleapis.com o restricted.googleapis.com. Poi, per ogni dominio aggiuntivo:

  1. Crea una zona DNS per DOMAIN (ad esempio gcr.io). Se utilizzi Cloud DNS, assicurati che questa zona si trovi nello stesso progetto della zona privata googleapis.com.

  2. In questa zona DNS, crea i seguenti record DNS privati per uno private.googleapis.com o restricted.googleapis.com, a seconda del dominio che hai scelto di utilizzare.

    • Per private.googleapis.com:

      1. Crea un record A per DOMAIN che rimandi ai seguenti indirizzi IP: 199.36.153.8, 199.36.153.9, 199.36.153.10, 199.36.153.11.

      2. Per connetterti alle API utilizzando indirizzi IPv6, crea anche un record AAAA per DOMAIN che rimandi a 2600:2d00:0002:2000::.

    • Per restricted.googleapis.com:

      1. Crea un record A per DOMAIN che rimandi ai seguenti indirizzi IP: 199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7.

      2. Per connetterti alle API utilizzando indirizzi IPv6, crea anche un record AAAA per restricted.googleapis.com che rimandi a 2600:2d00:0002:1000::.

  3. Nella zona DOMAIN, crea un record CNAME per *.DOMAIN che punti a DOMAIN. Ad esempio, crea un record CNAME per *.gcr.io che rimandi a gcr.io.

Configurare il DNS per i nomi di dominio personalizzati di Cloud Storage

Se utilizzi bucket Cloud Storage e invii richieste a un nome di dominio Cloud Storage personalizzato, configurare i record DNS per il nome di dominio Cloud Storage personalizzato in modo che puntino ai indirizzi IP di private.googleapis.com o restricted.googleapis.com non è sufficiente per consentire l'accesso ai bucket Cloud Storage.

Se vuoi inviare richieste a un nome di dominio personalizzato Cloud Storage, devi anche impostare esplicitamente l'intestazione Host della richiesta HTTP e l'SNI TLS su storage.googleapis.com. Gli indirizzi IP per private.googleapis.com e restricted.googleapis.com non supportano gli hostname Cloud Storage personalizzati nelle intestazioni Host delle richieste HTTP e negli SNI TLS.

Opzioni di routing

La rete VPC deve avere route appropriate i cui hop successivi sono il gateway internet predefinito. Google Cloud non supporta il routing del traffico verso le API e i servizi Google tramite altre istanze VM o hop successivi personalizzati. Nonostante il nome gateway internet predefinito, i pacchetti inviati dalle VM nella rete VPC alle API e ai servizi Google rimangono all'interno della rete di Google.

  • Se selezioni i domini predefiniti, le istanze VM si connettono alle API e ai servizi Google utilizzando un sottoinsieme di indirizzi IP esterni di Google. Questi indirizzi IP sono instradabili pubblicamente, ma il percorso da una VM in una rete VPC a questi indirizzi rimane all'interno della rete di Google.

  • Google non pubblica route su internet per nessuno degli indirizzi IP utilizzati dai domini private.googleapis.com o restricted.googleapis.com. Di conseguenza, a questi domini puoi accedere solo dalle VM in una rete VPC o dai sistemi on-premise connessi a una rete VPC.

Se la tua rete VPC contiene una route predefinita il cui hop successivo è il gateway internet predefinito, puoi utilizzarla per accedere alle API e ai servizi Google senza dover creare route personalizzate. Per maggiori dettagli, vedi Routing con un route predefinito.

Se hai sostituito una route predefinita (destinazione 0.0.0.0/0 o ::0/0) con una route personalizzata il cui hop successivo non è il gateway internet predefinito, puoi soddisfare i requisiti di routing per le API e i servizi Google utilizzando il routing personalizzato.

Se la tua rete VPC non dispone di una route predefinita IPv6, non avrai connettività IPv6 alle API e ai servizi Google. Aggiungi una route predefinita IPv6 per consentire la connettività IPv6.

Routing con un percorso predefinito

Ogni rete VPC contiene una route predefinita IPv4 (0.0.0.0/0) quando viene creata. Se attivi gli indirizzi IPv6 esterni in una subnet, alla rete VPC viene aggiunta una route predefinita IPv6 (::/0) generata dal sistema.

Le route predefinite forniscono un percorso agli indirizzi IP per le seguenti destinazioni:

  • I domini predefiniti.

  • private.googleapis.com: 199.36.153.8/30 e 2600:2d00:0002:2000::/64.

  • restricted.googleapis.com: 199.36.153.4/30 e 2600:2d00:0002:1000::/64.

Per controllare la configurazione di una route predefinita in una determinata rete, segui queste indicazioni.

Console

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

    Vai a Route

  2. Filtra l'elenco dei percorsi in modo da visualizzare solo quelli della rete che devi ispezionare.

  3. Cerca una route la cui destinazione è 0.0.0.0/0 per il traffico IPv4 o ::/0 per il traffico IPv6 e il cui hop successivo è gateway internet predefinito.

gcloud

Utilizza il seguente comando gcloud, sostituendo NETWORK_NAME con il nome della rete da ispezionare:

gcloud compute routes list \
    --filter="default-internet-gateway NETWORK_NAME"

Se devi creare una route IPv4 predefinita sostitutiva, consulta Aggiunta di una route statica.

Se devi creare una route IPv6 predefinita sostitutiva, consulta Aggiunta di una route IPv6 predefinita.

Routing personalizzato

In alternativa a una route predefinita, puoi utilizzare route statiche personalizzate, ciascuna con una destinazione più specifica e ciascuna che utilizza l'hop successivo del gateway internet predefinito. Il numero di route necessarie e i relativi indirizzi IP di destinazione dipendono dal dominio scelto.

Inoltre, ti consigliamo di aggiungere percorsi per 34.126.0.0/18 e 2001:4860:8040::/42. Per ulteriori informazioni, consulta Riepilogo delle opzioni di configurazione.

Per controllare la configurazione delle route personalizzate per le API e i servizi Google in una determinata rete, segui queste istruzioni.

Console

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

    Vai a Route

  2. Utilizza il campo di testo Filtra tabella per filtrare l'elenco di route utilizzando i seguenti criteri, sostituendo NETWORK_NAME con il nome della tua rete VPC.

    • Rete: NETWORK_NAME
    • Tipo di hop successivo: default internet gateway
  3. Esamina la colonna Intervallo IP di destinazione per ogni route. Se hai scelto i domini predefiniti, controlla la presenza di diverse route statiche personalizzate, una per ogni intervallo di indirizzi IP utilizzato dal dominio predefinito. Se hai scelto private.googleapis.com o restricted.googleapis.com, cerca l'intervallo IP del dominio.

gcloud

Utilizza il seguente comando gcloud, sostituendo NETWORK_NAME con il nome della rete da ispezionare:

gcloud compute routes list \
    --filter="default-internet-gateway NETWORK_NAME"

I percorsi sono elencati in formato tabella, a meno che non personalizzi il comando con il --format flag. Cerca la destinazione di ogni percorso nella colonna DEST_RANGE. Se hai scelto i domini predefiniti, controlla la presenza di diversi percorsi statici personalizzati, uno per ogni intervallo di indirizzi IP utilizzato dal dominio predefinito. Se hai scelto private.googleapis.com o restricted.googleapis.com, cerca l'intervallo IP del dominio.

Se devi creare route, consulta l'articolo Aggiunta di una route statica.

Configurazione del firewall

La configurazione del firewall della rete VPC deve consentire l'accesso dalle VM agli indirizzi IP utilizzati dalle API e dai servizi Google. La regola implicita allow egress soddisfa questo requisito.

In alcune configurazioni del firewall, devi creare regole di autorizzazione in uscita specifiche. Ad esempio, supponiamo che tu abbia creato una regola di rifiuto in uscita che blocchi il traffico verso tutte le destinazioni (0.0.0.0 per IPv4 o ::/0 per IPv6). In questo caso, devi creare una regola firewall di uscita consentita la cui priorità è superiore alla regola di divieto di uscita per ogni intervallo di indirizzi IP utilizzato dal dominio scelto per le API e i servizi Google.

Inoltre, ti consigliamo di includere 34.126.0.0/18 e 2001:4860:8040::/42 nella regola del firewall che consente l'uscita. Per ulteriori informazioni, consulta Riepilogo delle opzioni di configurazione.

Per creare regole firewall, consulta la sezione Creare regole firewall. Puoi limitare le VM a cui si applicano le regole del firewall quando definisci la destinazione di ogni regola di autorizzazione in uscita.

Indirizzi IP per i domini predefiniti

Questa sezione descrive come creare un elenco di intervalli IP dei domini predefiniti utilizzati dalle API e dai servizi Google, ad esempio *.googleapis.com e *.gcr.io. Questi intervalli vengono allocati in modo dinamico e cambiano spesso, pertanto non è possibile definire intervalli IP specifici per singoli servizi o API. Per mantenere un elenco accurato, configura l'automazione in modo da eseguire lo script ogni giorno. Per alternative alla gestione di un elenco di intervalli di indirizzi IP, ti consigliamo di utilizzare il VIP private.googleapis.com o Private Service Connect.

  • Google pubblica l'elenco completo degli intervalli IP che mette a disposizione degli utenti su internet in goog.json.

  • Google pubblica inoltre un elenco degli intervalli di indirizzi IP esterni globali e a livello di area geografica disponibili per le risorse Google Cloud dei clienti in cloud.json.

Gli indirizzi IP utilizzati dai domini predefiniti per le API e i servizi Google rientrano nell'elenco degli intervalli calcolati sottraendo tutti gli intervalli in cloud.json da quelli in goog.json. Questi elenchi vengono aggiornati di frequente.

Puoi utilizzare il seguente script Python per creare un elenco di intervalli di indirizzi IP che includono quelli utilizzati dai domini predefiniti per le API e i servizi Google.

Per informazioni sull'esecuzione di questo script, consulta Come eseguire.

from __future__ import print_function

import json

try:
    from urllib import urlopen
except ImportError:
    from urllib.request import urlopen
    from urllib.error import HTTPError

import netaddr

IPRANGE_URLS = {
    "goog": "https://www.gstatic.com/ipranges/goog.json",
    "cloud": "https://www.gstatic.com/ipranges/cloud.json",
}


def read_url(url):
    try:
        return json.loads(urlopen(url).read())
    except (IOError, HTTPError):
        print("ERROR: Invalid HTTP response from %s" % url)
    except json.decoder.JSONDecodeError:
        print("ERROR: Could not parse HTTP response from %s" % url)


def get_data(link):
    data = read_url(link)
    if data:
        print("{} published: {}".format(link, data.get("creationTime")))
        cidrs = netaddr.IPSet()
        for e in data["prefixes"]:
            if "ipv4Prefix" in e:
                cidrs.add(e.get("ipv4Prefix"))
            if "ipv6Prefix" in e:
                cidrs.add(e.get("ipv6Prefix"))
        return cidrs


def main():
    cidrs = {group: get_data(link) for group, link in IPRANGE_URLS.items()}
    if len(cidrs) != 2:
        raise ValueError("ERROR: Could process data from Google")
    print("IP ranges for Google APIs and services default domains:")
    for ip in (cidrs["goog"] - cidrs["cloud"]).iter_cidrs():
        print(ip)


if __name__ == "__main__":
    main()