Questa pagina descrive come configurare un'istanza Cloud SQL per utilizzare l'IP privato.
Per informazioni su come funziona l'IP privato e sui requisiti di ambiente e gestione, consulta IP privato.
Prima di iniziare
Requisiti di API e IAM
- Devi abilitare l' API Service Networking per il tuo progetto Google Cloud.
- Per gestire una connessione di accesso privato ai servizi, l'utente deve disporre delle seguenti autorizzazioni IAM (Identity and Access Management). Se non hai le autorizzazioni necessarie, puoi visualizzare errori di autorizzazioni insufficienti.
compute.networks.list
compute.addresses.create
compute.addresses.list
servicenetworking.services.addPeering
Se utilizzi una rete VPC condivisa, devi anche aggiungere l'utente al progetto host e assegnargli le stesse autorizzazioni nel progetto host.
Se utilizzi una rete VPC condivisa, devi abilitare anche questa API per il progetto host.
Accesso privato ai servizi
Quando crei una nuova rete Virtual Private Cloud (VPC) nel progetto, devi configurare l'accesso privato ai servizi per allocare un intervallo di indirizzi IP e creare una connessione privata ai servizi. In questo modo le risorse nella rete VPC possono connettersi alle istanze Cloud SQL. La console Google Cloud fornisce una procedura guidata per aiutarti a impostare questa configurazione.
Configura un'istanza per utilizzare l'IP privato
Puoi configurare un'istanza Cloud SQL in modo che utilizzi l'IP privato quando crei l'istanza o per un'istanza esistente.
Configura l'IP privato per una nuova istanza
Per configurare un'istanza Cloud SQL in modo che utilizzi l'IP privato durante la creazione di un'istanza:
Console
-
Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.
- Fai clic su Crea istanza.
- Espandi Mostra opzioni di configurazione.
- Espandi Connessioni.
- Seleziona IP privato.
Un elenco a discesa mostra le reti VPC disponibili nel tuo progetto. Se il progetto è il progetto di servizio di un VPC condiviso, vengono mostrate anche le reti VPC del progetto host.
- Seleziona la rete VPC che vuoi utilizzare.
- Fai clic su Configura la connessione.
- Nella sezione Alloca un intervallo IP, seleziona una delle seguenti opzioni:
- Seleziona uno o più intervalli IP esistenti o creane uno nuovo dal menu a discesa. Il menu a discesa include intervalli allocati in precedenza, se ce ne sono. In alternativa, puoi selezionare Assegna un nuovo intervallo IP e inserire un nuovo intervallo e un nuovo nome.
- Utilizzare un intervallo IP allocato automaticamente nella rete.
- Fai clic su Continua.
- Fai clic su Crea connessione.
- Verifica di visualizzare il messaggio:
Private service connection for network VPC_NETWORK_NAME has been successfully created
. - Facoltativamente, puoi specificare un intervallo IP allocato per le tue istanze da utilizzare per le connessioni.
- Espandi Mostra l'opzione dell'intervallo IP allocato.
- Seleziona un intervallo IP dal menu a discesa.
- Completa la configurazione dell'istanza.
- Fai clic su Crea istanza.
Se visualizzi un messaggio che indica che devi configurare una connessione privata ai servizi, segui questi passaggi:
gcloud
Prima di creare un'istanza utilizzando un indirizzo IP privato, assicurati che il progetto sia configurato per l' accesso privato ai servizi.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
INSTANCE_ID
: l'ID istanzaPROJECT_ID
: l'ID progettoNETWORK_PROJECT_ID
: l'ID progetto della rete VPCVPC_NETWORK_NAME
: il nome della rete VPCRANGE_NAME
: facoltativo. Se specificato, imposta il nome di un intervallo per il quale è allocato un intervallo IP. Il nome dell'intervallo deve essere conforme aRFC-1035
e contenere da 1 a 63 caratteri.REGION_NAME
: il nome della regione
--network
. Per disabilitare l'IP pubblico, utilizza il flag --no-assign-ip
.
gcloud beta sql instances create INSTANCE_ID \ --project=PROJECT_ID \ --network=projects/NETWORK_PROJECT_ID/global/networks/VPC_NETWORK_NAME \ --no-assign-ip \ --allocated-ip-range-name=RANGE_NAME
Terraform
Per configurare l'IP privato per una nuova istanza, utilizza le seguenti risorse Terraform:
google_compute_network
google_compute_global_address
google_service_networking_connection
google_sql_database_instance
Applica le modifiche
Per applicare la configurazione Terraform in un progetto Google Cloud, completa i passaggi nelle sezioni seguenti.
prepara Cloud Shell
- Avvia Cloud Shell.
-
Imposta il progetto Google Cloud predefinito a cui vuoi applicare le configurazioni Terraform.
Devi eseguire questo comando una sola volta per progetto e puoi eseguirlo in qualsiasi directory.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Se imposti valori espliciti nel file di configurazione Terraform, le variabili di ambiente vengono sostituite.
Prepara la directory
Ogni file di configurazione Terraform deve avere una propria directory (detta anche modulo principale).
-
In Cloud Shell, crea una directory e un nuovo file al suo interno. Il nome del file deve avere l'estensione
.tf
, ad esempiomain.tf
. In questo tutorial, il file è indicato comemain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se stai seguendo un tutorial, puoi copiare il codice campione in ogni sezione o passaggio.
Copia il codice campione nel file
main.tf
appena creato.Se vuoi, copia il codice da GitHub. Questa opzione è consigliata se lo snippet Terraform fa parte di una soluzione end-to-end.
- Esamina e modifica i parametri di esempio da applicare al tuo ambiente.
- Salva le modifiche.
-
Inizializza Terraform. Devi eseguire questa operazione una sola volta per directory.
terraform init
Facoltativamente, per utilizzare la versione più recente del provider Google, includi l'opzione
-upgrade
:terraform init -upgrade
Applica le modifiche
-
Rivedi la configurazione e verifica che le risorse che Terraform creerà o aggiornerà corrispondano alle tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
Applica la configurazione Terraform eseguendo il comando seguente e inserendo
yes
al prompt:terraform apply
Attendi finché Terraform non visualizza il messaggio "Applicazione completata".
- Apri il progetto Google Cloud per visualizzare i risultati. Nella console Google Cloud, vai alle risorse nell'interfaccia utente per assicurarti che Terraform le abbia create o aggiornate.
Elimina le modifiche
Per eliminare le modifiche:
- Per disabilitare la protezione dall'eliminazione, nel file di configurazione Terraform imposta
l'argomento
deletion_protection
sufalse
.deletion_protection = "false"
- Applica la configurazione Terraform aggiornata eseguendo il comando seguente e inserendo
yes
al prompt:terraform apply
-
Rimuovi le risorse applicate in precedenza con la tua configurazione Terraform eseguendo il comando seguente e inserendo
yes
al prompt:terraform destroy
REST v1
Crea una nuova istanza con un indirizzo IP privato:
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: L'ID progetto
- INSTANCE_ID: L'ID istanza
- VPC_NETWORK_NAME: Specifica il nome della rete Virtual Private Cloud (VPC) che vuoi utilizzare per questa istanza. L'accesso privato ai servizi deve essere già configurato per la rete.
- RANGE_NAME: Facoltativo. Se specificato, imposta il nome di un intervallo per il quale è allocato un intervallo IP. Il nome dell'intervallo deve essere conforme a
RFC-1035
e contenere da 1 a 63 caratteri. - AUTHORIZED_NETWORKS: Per le connessioni con IP pubblico, specifica le connessioni da reti autorizzate che possono connettersi alla tua istanza.
Per il parametro ipv4Enabled
, imposta il valore su true
se utilizzi un indirizzo IP pubblico per la tua istanza o su false
se l'istanza ha un indirizzo IP privato.
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
Corpo JSON della richiesta:
{ "name": "INSTANCE_ID", "region": "region", "databaseVersion": "database-version", "settings": { "tier": "machine-type", "ipConfiguration": { "ipv4Enabled": false, "privateNetwork": "projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME", "allocatedIpRange": "RANGE_NAME" "authorizedNetworks": [AUTHORIZED_NETWORKS], } } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
REST v1beta4
Crea una nuova istanza con un indirizzo IP privato:
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: L'ID progetto
- INSTANCE_ID: L'ID istanza
- VPC_NETWORK_NAME: Specifica il nome della rete Virtual Private Cloud (VPC) che vuoi utilizzare per questa istanza. L'accesso privato ai servizi deve essere già configurato per la rete.
- RANGE_NAME: Facoltativo. Se specificato, imposta il nome di un intervallo per il quale è allocato un intervallo IP. Il nome dell'intervallo deve essere conforme a
RFC-1035
e contenere da 1 a 63 caratteri. - AUTHORIZED_NETWORKS: Per le connessioni con IP pubblico, specifica le connessioni da reti autorizzate che possono connettersi alla tua istanza.
Per il parametro ipv4Enabled
, imposta il valore su true
se utilizzi un indirizzo IP pubblico per la tua istanza o su false
se l'istanza ha un indirizzo IP privato.
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances
Corpo JSON della richiesta:
{ "name": "INSTANCE_ID", "region": "region", "databaseVersion": "database-version", "settings": { "tier": "machine-type", "ipConfiguration": { "ipv4Enabled": false, "privateNetwork": "projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME", "allocatedIpRange": "RANGE_NAME" "authorizedNetworks": [AUTHORIZED_NETWORKS], } } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
Configura l'IP privato per un'istanza esistente
La configurazione di un'istanza Cloud SQL esistente per l'utilizzo dell'IP privato determina il riavvio dell'istanza, con conseguente tempo di inattività.
Per configurare un'istanza esistente per l'uso dell'IP privato:
Console
-
Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.
- Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
- Seleziona Connessioni dal menu di navigazione di Cloud SQL.
- Nella scheda Networking, seleziona la casella di controllo IP privato.
Un elenco a discesa mostra le reti disponibili nel tuo progetto.
- Seleziona la rete VPC che vuoi utilizzare:
- Fai clic su Configura la connessione.
- Nella sezione Alloca un intervallo IP, scegli una delle seguenti opzioni:
- Seleziona uno o più intervalli IP esistenti o creane uno nuovo dal menu a discesa. Il menu a discesa include intervalli allocati in precedenza, se ce ne sono. In alternativa, puoi selezionare Assegna un nuovo intervallo IP e inserire un nuovo intervallo e un nuovo nome.
- Utilizza un intervallo IP allocato automaticamente nella tua rete.
- Fai clic su Continua.
- Fai clic su Crea connessione.
- Verifica che lo stato La connessione privata ai servizi per la rete
VPC_NETWORK_NAME
sia stata creata correttamente. - Fai clic su Salva.
Se vedi il messaggio È necessaria una connessione privata ai servizi:
gcloud
Assicurati che il progetto sia configurato per l' accesso privato ai servizi.
Aggiorna l'istanza Cloud SQL utilizzando il parametro --network
per specificare il nome della rete VPC selezionata.
gcloud beta sql instances patch INSTANCE_ID \ --project=PROJECT_ID \ --network=projects/NETWORK_PROJECT_ID/global/networks/VPC_NETWORK_NAME \ --no-assign-ip
REST v1
Crea una nuova istanza con un indirizzo IP privato:
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: L'ID progetto
- INSTANCE_ID: L'ID istanza
- VPC_NETWORK_NAME: Specifica il nome della rete Virtual Private Cloud (VPC) che vuoi utilizzare per questa istanza. L'accesso privato ai servizi deve essere già configurato per la rete.
- RANGE_NAME: Facoltativo. Se specificato, imposta il nome di un intervallo per il quale è allocato un intervallo IP. Il nome dell'intervallo deve essere conforme a
RFC-1035
e contenere da 1 a 63 caratteri. - AUTHORIZED_NETWORKS: Per le connessioni con IP pubblico, specifica le connessioni da reti autorizzate che possono connettersi alla tua istanza.
Per il parametro ipv4Enabled
, imposta il valore su true
se utilizzi un indirizzo IP pubblico per la tua istanza o su false
se l'istanza ha un indirizzo IP privato.
Metodo HTTP e URL:
PATCH https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID
Corpo JSON della richiesta:
{ "settings": { "ipConfiguration": { "ipv4Enabled": false, "privateNetwork": "projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME", "allocatedIpRange": "RANGE_NAME" "authorizedNetworks": [AUTHORIZED_NETWORKS], } } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
REST v1beta4
Crea una nuova istanza con un indirizzo IP privato:
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: L'ID progetto
- INSTANCE_ID: L'ID istanza
- VPC_NETWORK_NAME: Specifica il nome della rete Virtual Private Cloud (VPC) che vuoi utilizzare per questa istanza. L'accesso privato ai servizi deve essere già configurato per la rete.
- RANGE_NAME: Facoltativo. Se specificato, imposta il nome di un intervallo per il quale è allocato un intervallo IP. Il nome dell'intervallo deve essere conforme a
RFC-1035
e contenere da 1 a 63 caratteri. - AUTHORIZED_NETWORKS: per le connessioni con IP pubblico, specifica le connessioni da reti autorizzate che possono connettersi alla tua istanza.
Per il parametro ipv4Enabled
, imposta il valore su true
se utilizzi un indirizzo IP pubblico per la tua istanza o su false
se l'istanza ha un indirizzo IP privato.
Metodo HTTP e URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
Corpo JSON della richiesta:
{ "settings": { "ipConfiguration": { "ipv4Enabled": false, "privateNetwork": "projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME", "allocatedIpRange": "RANGE_NAME" "authorizedNetworks": [AUTHORIZED_NETWORKS], } } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
Connettiti a un'istanza utilizzando il relativo IP privato
Puoi utilizzare l'accesso privato ai servizi per connetterti alle istanze Cloud SQL da istanze di Compute Engine o Google Kubernetes Engine nella stessa rete VPC (definita qui come origini interne) o dall'esterno di questa rete (un'origine esterna).
Connetti da un'origine interna
Per eseguire la connessione da un'origine nello stesso progetto Google Cloud dell'istanza Cloud SQL, ad esempio il proxy di autenticazione Cloud SQL in esecuzione su una risorsa Compute Engine, tale risorsa deve trovarsi nella stessa rete VPC in cui è stato stabilito l'accesso privato ai servizi per l'istanza Cloud SQL.
Per connetterti da un'origine serverless, come l'ambiente standard di App Engine, Cloud Run o Cloud Functions, l'applicazione o la funzione si connette direttamente all'istanza tramite l'accesso VPC serverless senza il proxy di autenticazione Cloud SQL.
Connetti da una sorgente esterna
Se una rete esterna (ad esempio una rete on-premise o una rete VPC) è connessa alla rete VPC a cui è connessa l'istanza Cloud SQL, puoi utilizzare Cloud VPN o Cloud Interconnect per connetterti all'istanza da un client nella rete esterna.
Per consentire le connessioni da una rete esterna, procedi nel seguente modo:
- Assicurati che la tua rete VPC sia connessa alla rete esterna utilizzando un tunnel Cloud VPN o un collegamento VLAN per Dedicated Interconnect o Partner Interconnect.
- Assicurati che le sessioni BGP (Border Gateway Protocol) sui router Cloud che gestiscono i tunnel Cloud VPN e i collegamenti Cloud Interconnect (VLAN) abbiano ricevuto prefissi specifici (destinazioni) dalla tua rete on-premise.
Impossibile importare le route predefinite (destinazione 0.0.0.0/0) nella rete VPC di Cloud SQL perché questa ha una propria route predefinita locale. Le route locali per una destinazione vengono utilizzate anche se il peering Cloud SQL è configurato per importare route personalizzate dalla tua rete VPC.
-
Identifica le connessioni di peering prodotte dalla connessione ai servizi privati. A seconda del servizio, la connessione privata ai servizi potrebbe creare una o più delle seguenti connessioni in peering, ma non necessariamente tutte:
cloudsql-mysql-googleapis-com
cloudsql-postgres-googleapis-com
servicenetworking-googleapis-com
- Aggiorna tutte le connessioni in peering per abilitare Esporta route personalizzate.
- Identifica l'intervallo allocato utilizzato dalla connessione ai servizi privati.
- Crea un annuncio di route personalizzato per il router Cloud per l'intervallo allocato sui router Cloud che gestiscono le sessioni BGP per i tunnel Cloud VPN o i collegamenti di Cloud Interconnect (VLAN).
Connetti da Cloud Shell
Cloud Shell non supporta la connessione a un'istanza Cloud SQL che ha solo un indirizzo IP privato.
Connessione da indirizzi IP non RFC 1918
RFC 1918 specifica gli indirizzi IP assegnati per l'utilizzo interno (ossia all'interno di un'organizzazione) e che non verranno instradati su internet. In particolare:
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16
Le connessioni a un'istanza Cloud SQL utilizzando un indirizzo IP privato vengono autorizzate automaticamente per gli intervalli di indirizzi RFC 1918. In questo modo, tutti i client privati possono accedere al database senza passare per il proxy.
Per connetterti da un indirizzo IP non RFC 1918, devi impostare l'autorizzazione IP per istanza in modo da consentire il traffico da intervalli di indirizzi IP non RFC 1918.
Ad esempio, utilizza un comando gcloud
come il seguente:
gcloud sql instances patch INSTANCE_NAME \ --authorized-networks=192.88.99.0/24,11.0.0.0/24
Per impostazione predefinita, Cloud SQL non apprende le route di subnet non RFC 1918 dalla rete VPC. Devi aggiornare il peering di rete a Cloud SQL per esportare route non RFC 1918.
gcloud compute networks peerings update PEERING_CONNECTION \ --network=VPC_NETWORK_NAME \ --export-subnet-routes-with-public-ip \ --project=PROJECT_ID
PEERING_CONNECTION
è il nome della connessione di peering prodotta dalla connessione di servizi privati tra la tua rete VPC e la rete del producer di servizi.VPC_NETWORK_NAME
è il nome della tua rete VPC.PROJECT_ID
è l'ID del progetto della rete VPC. Se utilizzi un VPC condiviso, utilizza l'ID progetto host.
Sostituisci quanto segue:
Per ridurre l'esaurimento degli indirizzi IP, puoi utilizzare indirizzi IP pubblici utilizzati privatamente.
Connessione da indirizzi IP pubblici utilizzati privatamente
Se vuoi configurare l'istanza in un intervallo di indirizzi IP pubblici utilizzato privatamente, abilita export-subnet-routes-with-public-ip
nel peering di rete tra la tua rete e la rete Cloud SQL.
gcloud compute networks peerings update PEERING_CONNECTION \ --network=VPC_NETWORK_NAME \ --export-subnet-routes-with-public-ip \ --project=PROJECT_ID
PEERING_CONNECTION
è il nome della connessione di peering prodotta dalla connessione di servizi privati tra la tua rete VPC e la rete del producer di servizi. Per conoscere il nome della connessione in peering, vai alla pagina Peering di rete VPC.VPC_NETWORK_NAME
è il nome della tua rete VPC.PROJECT_ID
è l'ID del progetto della rete VPC. Se utilizzi un VPC condiviso, utilizza l'ID progetto host.
Sostituisci quanto segue:
Connettiti a un'istanza configurata con indirizzi IP pubblici utilizzati privatamente
Se la tua istanza è configurata in un intervallo di indirizzi IP pubblici utilizzato privatamente e vuoi connetterti all'istanza, abilita import-subnet-routes-with-public-ip
nel peering di rete tra la tua rete e la rete Cloud SQL.
gcloud compute networks peerings update PEERING_CONNECTION \ --network=VPC_NETWORK_NAME \ --import-subnet-routes-with-public-ip \ --project=PROJECT_ID
PEERING_CONNECTION
è il nome della connessione di peering prodotta dalla connessione di servizi privati tra la tua rete VPC e la rete del producer di servizi. Per conoscere il nome della connessione in peering, vai alla pagina Peering di rete VPC.VPC_NETWORK_NAME
è il nome della tua rete VPC.PROJECT_ID
è l'ID del progetto della rete VPC. Utilizza l'ID progetto host se usi un VPC condiviso.
Sostituisci quanto segue:
Risolvere i problemi
Consulta la sezione sulla risoluzione dei problemi per i problemi di connettività noti e anche il debug dei problemi di connessione per assistenza con l'autodiagnosi.
Passaggi successivi
- Scopri di più sull'IP privato.
- Scopri di più sull'accesso privato ai servizi.
- Scopri come utilizzare Controlli di servizio VPC per aggiungere un perimetro di servizio.
- Scopri di più su come configurare l'accesso privato ai servizi.
- Scopri di più sulla configurazione dell'accesso privato ai servizi per Cloud SQL.
- Scopri di più su Cloud VPN.
- Scopri di più sulle reti VPC.
- Scopri di più sul peering di rete VPC.
- Scopri di più sul VPC condiviso.