Questa pagina descrive come configurare l'accesso privato ai servizi nella tua rete VPC.
L'accesso privato ai servizi viene implementato come connessione di peering VPC tra la tua rete VPC e la rete VPC sottostante Google Cloud in cui si trova la tua istanza Cloud SQL. La connessione privata consente alle istanze VM nella tua rete VPC e ai servizi a cui accedi di comunicare esclusivamente mediante indirizzi IP interni. Le istanze VM non hanno bisogno dell'accesso a internet o di indirizzi IP esterni per raggiungere i servizi disponibili tramite l'accesso privato ai servizi.
Prima di iniziare
Cloud SQL richiede l'accesso privato ai servizi per ogni rete VPC utilizzata per le connessioni IP private. Per gestire una connessione di accesso privato ai servizi, l'utente deve disporre delle seguenti autorizzazioni IAM:
compute.networks.list
compute.addresses.create
compute.addresses.list
servicenetworking.services.addPeering
Se non disponi di queste autorizzazioni, potresti ricevere errori di autorizzazioni insufficienti.
Se utilizzi una rete VPC condivisa, devi anche:
- Aggiungi il tuo utente al progetto host.
- Assegna le stesse quattro autorizzazioni a questo utente nel progetto host.
- Concedi all'utente l'autorizzazione IAM
compute.globalAddresses.list
.
Configura l'accesso privato ai servizi per Cloud SQL
La procedura di configurazione dell'accesso privato ai servizi è suddivisa in due parti:
- Selezionando un intervallo di indirizzi IP esistente o allocandone uno nuovo.
Hai anche la possibilità di consentire a Google di allocare l'intervallo per te. In questo caso, Google allocherà automaticamente un intervallo IP con lunghezza del prefisso pari a /20 e utilizzerà il nome default-ip-range.
Se intendi creare istanze in più regioni o per diversi tipi di database, devi disporre di un intervallo minimo /24 di indirizzi IP disponibili per ogni regione o tipo di database. Sono incluse altre applicazioni come Filestore o Memorystore. Per una nuova regione o un nuovo tipo di database, Cloud SQL deve avere un intervallo /24 gratuito.
- Creazione di una connessione privata dalla tua rete VPC alla rete del producer di servizi sottostante.
Alloca un intervallo di indirizzi IP
Console
-
Nella console Google Cloud , vai alla pagina Reti VPC.
- Seleziona la rete VPC che vuoi utilizzare.
- Seleziona la scheda
Private service connection . - Seleziona la scheda
Intervalli IP allocati per i servizi . - Fai clic su
Assegna intervallo IP . - Per il
Nome dell'intervallo allocato, specificagoogle-managed-services-VPC_NETWORK_NAME
, doveVPC_NETWORK_NAME
è il nome della rete VPC a cui ti stai connettendo (ad esempio,google-managed-services-default
). LaDescrizione è facoltativa. - Seleziona l'opzione
Personalizzato , poi inserisci l'intervallo di indirizzi IP da allocare in notazione CIDR. - Fai clic su
Alloca per creare l'intervallo allocato.
gcloud
Esegui una di queste operazioni:
- Per specificare un intervallo di indirizzi e una lunghezza del prefisso (subnet mask), utilizza i flag
addresses
eprefix-length
. Ad esempio, per allocare il blocco CIDR192.168.0.0/16
, specifica192.168.0.0
per l'indirizzo e16
per la lunghezza del prefisso. - Per specificare solo una lunghezza del prefisso (subnet mask), utilizza il flag
prefix-length
. Quando ometti l'intervallo di indirizzi, Google Cloud seleziona automaticamente un intervallo di indirizzi non utilizzato nella rete VPC. L'esempio seguente seleziona un intervallo di indirizzi IP non utilizzato con una lunghezza del prefisso di16
bit.
gcloud compute addresses create google-managed-services-VPC_NETWORK_NAME \ --global \ --purpose=VPC_PEERING \ --addresses=192.168.0.0 \ --prefix-length=16 \ --network=projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME
gcloud compute addresses create google-managed-services-VPC_NETWORK_NAME \ --global \ --purpose=VPC_PEERING \ --prefix-length=16 \ --network=projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME
Sostituisci VPC_NETWORK_NAME
con il nome della tua rete VPC, ad esempio my-vpc-network
.
L'esempio seguente alloca un intervallo IP che consente alle risorse nella rete VPC my-vpc-network
di connettersi alle istanze Cloud SQL utilizzando l'IP privato.
gcloud compute addresses create google-managed-services-my-vpc-network \ --global \ --purpose=VPC_PEERING \ --prefix-length=16 \ --network=projects/myprojectid/global/networks/myvpcnetwork \ --project=my-project
Terraform
Per allocare un intervallo di indirizzi IP, utilizza una risorsa Terraform.
Applica le modifiche
Per applicare la configurazione di Terraform in un progetto Google Cloud , completa i passaggi nelle sezioni seguenti.
Prepara Cloud Shell
- Avvia Cloud Shell.
-
Imposta il progetto Google Cloud predefinito in 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
Le variabili di ambiente vengono sostituite se imposti valori espliciti nel file di configurazione Terraform.
Prepara la directory
Ogni file di configurazione di Terraform deve avere la propria directory (chiamata anche modulo radice).
-
In Cloud Shell, crea una directory e un nuovo file al suo interno. Il nome file deve avere l'estensione
.tf
, ad esempiomain.tf
. In questo tutorial, il file viene denominatomain.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.(Facoltativo) Copia il codice da GitHub. Questa operazione è consigliata quando lo snippet Terraform fa parte di una soluzione end-to-end.
- Rivedi e modifica i parametri di esempio da applicare al tuo ambiente.
- Salva le modifiche.
-
Inizializza Terraform. Devi effettuare questa operazione una sola volta per directory.
terraform init
(Facoltativo) Per utilizzare l'ultima versione 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 di Terraform eseguendo il comando seguente e inserendo
yes
al prompt:terraform apply
Attendi che Terraform visualizzi il messaggio "Apply complete!" (Applicazione completata).
- Apri il tuo Google Cloud progetto 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
Rimuovi le risorse applicate in precedenza con la configurazione Terraform eseguendo il seguente comando e inserendo yes
al prompt:
terraform destroy
Crea una connessione privata
Console
-
Nella console Google Cloud , vai alla pagina Reti VPC.
- Seleziona la rete VPC che vuoi utilizzare.
- Seleziona la scheda Private service connection.
- Seleziona la scheda Connessioni private ai servizi.
- Fai clic su Crea connessione per creare una connessione privata tra la tua rete e un producer di servizi.
- Per l'allocazione assegnata, seleziona uno o più intervalli allocati esistenti che non vengono utilizzati da altri produttori di servizi.
- Fai clic su Connetti per creare la connessione.
gcloud
Crea una connessione privata.
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --ranges=google-managed-services-VPC_NETWORK_NAME \ --network=VPC_NETWORK_NAME \ --project=PROJECT_ID
Il comando avvia un'operazione a lunga esecuzione dell'istanza Cloud SQL, restituendo un ID operazione.
Controlla se l'operazione è andata a buon fine.
gcloud services vpc-peerings operations describe \ --name=OPERATION_ID
Puoi specificare più di un intervallo allocato quando crei una connessione privata. Ad esempio, se un intervallo è esaurito, puoi assegnare intervalli allocati aggiuntivi. Il servizio utilizza gli indirizzi IP di tutti gli intervalli forniti nell'ordine specificato.
Terraform
Per creare una connessione privata, utilizza una risorsa Terraform.
A un account di servizio nel formato service-HOST_PROJECT_NUMBER@service-networking.iam.gserviceaccount.com
viene concesso il ruolo servicenetworking.serviceAgent
durante la creazione della connessione privata perché l'account viene sottoposto a provisioning just-in-time.
Se visualizzi un errore relativo all'autorizzazione compute.globalAddresses.list
o
all'autorizzazione compute.projects.get
per il progetto, esegui questo comando gcloud
:
gcloud projects add-iam-policy-binding HOST_PROJECT_NAME \ --member=serviceAccount:service-HOST_PROJECT_NUMBER@service-networking.iam.gserviceaccount.com \ --role=roles/servicenetworking.serviceAgent
Modifica la configurazione dell'accesso privato ai servizi
Puoi modificare l'intervallo di indirizzi allocato di una connessione di servizio privato senza modificare le istanze Cloud SQL esistenti. Per modificare l'indirizzo IP privato di un'istanza Cloud SQL esistente, segui questi passaggi.
Per modificare l'intervallo di indirizzi allocato:
Console
-
Nella console Google Cloud , vai alla pagina Reti VPC.
- Seleziona la rete VPC che vuoi utilizzare.
- Seleziona la scheda Private service connection.
- Seleziona la scheda Intervalli IP allocati per i servizi.
Seleziona il nome dell'intervallo che vuoi eliminare.
Fai clic su Ritira.
Fai clic su Assegna intervallo IP.
Crea un nuovo intervallo con lo stesso nome e un nuovo intervallo
Il nome è importante perché la connessione privata è già stata stabilita utilizzando quel nome di indirizzo.
gcloud services vpc-peerings update \ --network=VPC_NETWORK_NAME \ --ranges=ALLOCATED_RANGES \ --service=servicenetworking.googleapis.com \ --force
Modificare l'indirizzo IP privato di un'istanza Cloud SQL esistente
Per modificare l'indirizzo IP privato di un'istanza Cloud SQL esistente, sposta l'istanza dalla rete originale a una rete VPC temporanea. Poi, modifica la configurazione dell'accesso privato ai servizi della rete originale dell'istanza e sposta l'istanza Cloud SQL di nuovo nella rete originale.
Per passare a una rete VPC diversa, segui tutti i passaggi, tranne l'ultimo (spostamento dell'istanza), della seguente procedura. In questo caso, la
TEMPORARY_VPC_NETWORK_NAME
è la nuova rete VPC. Inoltre,
elimina
la vecchia connessione privata.
Potrebbero essere necessari alcuni giorni prima che la connessione privata eliminata scompaia dalla consoleGoogle Cloud .
Se l'istanza Cloud SQL è ospitata in una rete VPC condiviso,
le variabili VPC_NETWORK_NAME
utilizzate nelle istruzioni seguenti devono essere i nomi delle reti VPC del progetto host. Per specificare una rete con una rete VPC condiviso, utilizza l'URL completo della rete, ad esempio projects/HOST_PROJECT/global/networks/NETWORK_NAME
.
Console
-
Nella console Google Cloud , vai alla pagina Reti VPC.
- Crea una rete VPC temporanea.
- Crea un'allocazione IP nella rete VPC temporanea.
- Crea una connessione privata nella rete VPC temporanea.
Sposta l'istanza Cloud SQL nella rete VPC temporanea.
gcloud beta sql instances patch INSTANCE_ID \ --project=PROJECT_ID \ --network=projects/PROJECT_ID/global/networks/TEMPORARY_VPC_NETWORK_NAME \ --no-assign-ip
Modifica la configurazione dell'accesso privato al servizio nella rete originale per aggiungere un nuovo intervallo allocato o eliminare quelli esistenti.
Sposta l'istanza Cloud SQL di nuovo nella rete VPC originale.
gcloud beta sql instances patch INSTANCE_ID \ --project=PROJECT_ID \ --network=projects/PROJECT_ID/global/networks/ORIGINAL_VPC_NETWORK_NAME \ --no-assign-ip