Configurazione dell'accesso privato ai servizi

Questo documento descrive come configurare le connessioni IP private alla tua istanza Cloud SQL utilizzando 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.

Abilita le API richieste

Abilita l'API Service Networking (servicenetworking.googleapis.com) e l'API Compute Engine (compute.googleapis.com) nel progetto che ospita l'istanza Cloud SQL.

Se utilizzi una rete VPC condivisa, devi abilitare queste API anche nel progetto host del VPC condiviso.

Puoi abilitare le API utilizzando il seguente comando:

gcloud services enable servicenetworking.googleapis.com compute.googleapis.com --project=PROJECT_ID

Sostituisci PROJECT_ID con l'ID progetto (o l'ID progetto host del VPC condiviso).

Se l'API Service Networking non è abilitata, quando crei l'istanza Cloud SQL con un indirizzo IP privato, l'operazione non riesce e viene visualizzato un errore SERVICE_NETWORKING_NOT_ENABLED.

Ruoli e autorizzazioni richiesti

Per ottenere le autorizzazioni necessarie per creare e gestire una connessione di accesso privato ai servizi, chiedi all'amministratore di concederti il ruolo IAM Compute Network Admin (roles/compute.networkAdmin) nel progetto che ospita l'istanza Cloud SQL. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Questo ruolo predefinito contiene le autorizzazioni necessarie per creare e gestire una connessione di accesso privato ai servizi. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per creare e gestire una connessione di accesso privato ai servizi sono necessarie le seguenti autorizzazioni:

  • compute.addresses.create
  • compute.addresses.list
  • compute.globalAddresses.create
  • compute.globalAddresses.createInternal
  • compute.globalAddresses.list
  • compute.networks.list
  • compute.networks.use
  • servicenetworking.services.addPeering
  • serviceusage.services.list

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Se utilizzi una rete VPC condivisa, devi anche concedere il ruolo Amministratore di rete Compute (roles/compute.networkAdmin) all'utente nel progetto host del VPC condiviso.

Configura l'accesso privato ai servizi per Cloud SQL

La procedura di configurazione dell'accesso privato ai servizi si compone di due parti:

  • Seleziona un intervallo di indirizzi IP esistente o allocane uno nuovo.

    Se crei l'istanza Cloud SQL nella console Google Cloud , hai anche la possibilità di consentire a Google di allocare un intervallo di indirizzi IP per te. In questo caso, Google allocherà automaticamente un intervallo IP con lunghezza del prefisso pari a /24 e utilizzerà il nome default-ip-range.

    Se prevedi di creare istanze Cloud SQL in più regioni o per tipi di database diversi, devi avere un intervallo minimo di indirizzi IP /24 disponibile per ogni regione o tipo di database. Sono incluse altre applicazioni come Filestore o Memorystore. Per un nuovo tipo di regione o database, Cloud SQL deve avere un intervallo /24 libero.

  • Crea la connessione Private Service Connect dalla tua rete VPC alla rete del producer di servizi sottostante.

Per informazioni sui requisiti dell'ambiente di rete e dell'applicazione e sulle autorizzazioni IAM necessarie per l'accesso privato ai servizi, consulta Requisiti per le connessioni IP private.

Alloca un intervallo di indirizzi IP

Console

  1. Nella console Google Cloud , vai alla pagina Reti VPC.

    Vai a Reti VPC

  2. Seleziona la rete VPC che vuoi utilizzare.
  3. Seleziona la scheda Accesso privato ai servizi.
  4. Seleziona la scheda Intervalli IP allocati per i servizi.
  5. Fai clic su Alloca intervallo IP.
  6. Per il Nome dell'intervallo allocato, specifica google-managed-services-VPC_NETWORK_NAME, dove VPC_NETWORK_NAME è il nome della rete VPC a cui ti connetti (ad esempio, google-managed-services-default). La Descrizione è facoltativa.
  7. Seleziona l'opzione Personalizzato, quindi inserisci l'intervallo di indirizzi IP da allocare, in notazione CIDR.
  8. Fai clic su Alloca per creare l'intervallo allocato.

gcloud

Esegui una delle seguenti operazioni:

  • Per specificare un intervallo di indirizzi e una lunghezza del prefisso (subnet mask), utilizza i flag addresses e prefix-length. Ad esempio, per allocare il blocco CIDR 192.168.0.0/16, specifica 192.168.0.0 per l'indirizzo e 16 per la lunghezza del prefisso.
  •     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
        
  • Per specificare solo una lunghezza del prefisso (subnet mask), utilizza il flag prefix-length. Se ometti l'intervallo di indirizzi, Google Cloud seleziona automaticamente un intervallo di indirizzi inutilizzato nella tua rete VPC. L'esempio seguente seleziona un intervallo di indirizzi IP non utilizzato con una lunghezza del prefisso di 16 bit.
  •   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.

resource "google_compute_global_address" "private_ip_address" {
  name          = "private-ip-address"
  purpose       = "VPC_PEERING"
  address_type  = "INTERNAL"
  prefix_length = 16
  network       = google_compute_network.peering_network.id
}

Applica le modifiche

Per applicare la configurazione di Terraform in un progetto Google Cloud , completa i passaggi descritti nelle sezioni seguenti.

Prepara Cloud Shell

  1. Avvia Cloud Shell.
  2. 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 Terraform deve avere la propria directory (chiamata anche modulo principale).

  1. In Cloud Shell, crea una directory e un nuovo file al suo interno. Il nome file deve avere l'estensione .tf, ad esempio main.tf. In questo tutorial, il file viene chiamato main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 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.

  3. Esamina e modifica i parametri di esempio da applicare al tuo ambiente.
  4. Salva le modifiche.
  5. Inizializza Terraform. Devi eseguire 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

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

  2. Applica la configurazione Terraform eseguendo il comando seguente e inserendo yes al prompt:
    terraform apply

    Attendi che Terraform visualizzi il messaggio "Apply complete!".

  3. Apri il tuo 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

Rimuovi le risorse applicate in precedenza con la configurazione Terraform eseguendo questo comando e inserendo yes al prompt:

terraform destroy

Crea una connessione privata

Console

  1. Nella console Google Cloud , vai alla pagina Reti VPC.

    Vai a Reti VPC

  2. Seleziona la rete VPC che vuoi utilizzare.
  3. Seleziona la scheda Connessione privata ai servizi.
  4. Seleziona la scheda Connessioni private ai servizi.
  5. Fai clic su Crea connessione per creare una connessione privata tra la tua rete e un producer di servizi.
  6. Per Allocazione assegnata, seleziona uno o più intervalli allocati esistenti che non vengono utilizzati da altri producer di servizi.
  7. Fai clic su Connetti per creare la connessione.

gcloud

  1. Crea una connessione di accesso privato ai servizi per la rete VPC nel tuo progetto.

    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 dell'istanza Cloud SQL a lunga esecuzione, restituendo un ID operazione.

  2. 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 è stato esaurito, puoi assegnare altri intervalli allocati. Il servizio utilizza gli indirizzi IP di tutti gli intervalli forniti nell'ordine specificato.

Terraform

Per creare una connessione privata, utilizza una risorsa Terraform.

resource "google_service_networking_connection" "default" {
  network                 = google_compute_network.peering_network.id
  service                 = "servicenetworking.googleapis.com"
  reserved_peering_ranges = [google_compute_global_address.private_ip_address.name]
}

A un account di servizio nel formato service-HOST_PROJECT_NUMBER@service-networking. viene concesso il ruolo servicenetworking.serviceAgent durante la creazione della connessione privata perché il provisioning dell'account viene eseguito just-in-time.

Se visualizzi un errore relativo all'autorizzazione compute.globalAddresses.list o 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. \
    --role=roles/servicenetworking.serviceAgent

Configurare un'istanza per l'IP privato utilizzando l'accesso privato ai servizi

Puoi configurare l'accesso privato ai servizi per le istanze nuove ed esistenti.

Configura l'IP privato per una nuova istanza

Console

  1. Nella console Google Cloud , vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Fai clic su Crea istanza.
  3. Nella sezione Personalizza la tua istanza, espandi Mostra opzioni di configurazione.
  4. Espandi Connessioni.
  5. Seleziona IP privato.
  6. Seleziona Accesso privato ai servizi (PSA).

    Un elenco a discesa mostra le reti VPC disponibili nel tuo progetto. Se il tuo progetto è il progetto di servizio di un VPC condiviso, vengono visualizzate anche le reti VPC del progetto host.

  7. Seleziona la rete VPC che vuoi utilizzare.
  8. Se viene visualizzato un messaggio che indica che devi configurare una connessione di servizio privato, segui questi passaggi:

    1. Fai clic su Configura connessione.
    2. 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 gli intervalli allocati in precedenza, se presenti, oppure puoi selezionare Alloca un nuovo intervallo IP e inserire un nuovo intervallo e un nuovo nome.
      • Utilizza un intervallo IP allocato automaticamente nella tua rete.
    3. Fai clic su Continua.
    4. Fai clic su Crea connessione.
    5. Verifica che venga visualizzato il messaggio: Private service connection for network VPC_NETWORK_NAME has been successfully created.
  9. Facoltativamente, puoi specificare un intervallo IP allocato che le istanze possono utilizzare per le connessioni.
    1. Espandi Mostra opzione intervallo IP allocato.
    2. Seleziona un intervallo IP dal menu a discesa.
  10. Completa la configurazione dell'istanza.
  11. Fai clic su Crea istanza.

gcloud

Prima di creare un'istanza utilizzando un indirizzo IP privato, assicurati che il tuo progetto sia configurato per l'accesso privato ai servizi.

Esegui i seguenti comandi gcloud CLI per configurare il networking dell'accesso privato ai servizi per Cloud SQL:

  1. Abilita le API richieste:
    gcloud services enable \
        sqladmin.googleapis.com \
        compute.googleapis.com \
        servicenetworking.googleapis.com \
        --project=PROJECT_ID
        
  2. Alloca un intervallo di indirizzi IP per il peering di rete VPC:
    gcloud compute addresses create google-managed-services-VPC_NETWORK_NAME \
        --global \
        --purpose=VPC_PEERING \
        --prefix-length=16 \
        --network=projects/NETWORK_PROJECT_ID/global/networks/VPC_NETWORK_NAME \
        --project=PROJECT_ID
        
  3. Stabilisci la connessione di peering di rete VPC:
    gcloud services vpc-peerings connect \
        --service=servicenetworking.googleapis.com \
        --ranges=google-managed-services-VPC_NETWORK_NAME \
        --network=VPC_NETWORK_NAME \
        --project=PROJECT_ID
        

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • INSTANCE_ID: l'ID istanza
  • PROJECT_ID: l'ID progetto
  • NETWORK_PROJECT_ID: L'ID progetto della rete VPC

  • VPC_NETWORK_NAME: il nome della rete VPC
  • RANGE_NAME: facoltativo. Se specificato, imposta un nome di intervallo per cui viene allocato un intervallo IP. Il nome dell'intervallo deve essere conforme a RFC-1035 e contenere da 1 a 63 caratteri.
  • REGION_NAME: il nome della regione
Per specificare il nome della rete VPC, utilizza il parametro --network. Per disattivare l'IP pubblico, utilizza il flag --no-assign-ip.

Per applicare l'utilizzo della nuova architettura di rete per l'istanza, utilizza il flag --enforce-new-sql-network-architecture. Assicurati di aver allocato un numero sufficiente di indirizzi IP. Se utilizzi l'applicazione della nuova architettura di rete prima che un progetto venga completamente sottoposto ad upgrade, potresti riscontrare un errore di creazione dell'istanza se non è disponibile spazio di indirizzi IP sufficiente. Per saperne di più, consulta Esegui l'upgrade di un'istanza alla nuova architettura di rete e Alloca un intervallo di indirizzi 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 \
  --enforce-new-sql-network-architecture

Terraform

Per configurare l'IP privato per una nuova istanza, utilizza le seguenti risorse Terraform:


resource "google_compute_network" "peering_network" {
  name                    = "private-network"
  auto_create_subnetworks = "false"
}

resource "google_compute_global_address" "private_ip_address" {
  name          = "private-ip-address"
  purpose       = "VPC_PEERING"
  address_type  = "INTERNAL"
  prefix_length = 16
  network       = google_compute_network.peering_network.id
}

resource "google_service_networking_connection" "default" {
  network                 = google_compute_network.peering_network.id
  service                 = "servicenetworking.googleapis.com"
  reserved_peering_ranges = [google_compute_global_address.private_ip_address.name]
}

resource "google_sql_database_instance" "instance" {
  name             = "private-ip-sql-instance"
  region           = "us-central1"
  database_version = "SQLSERVER_2019_STANDARD"
  root_password    = "INSERT-PASSWORD-HERE"

  depends_on = [google_service_networking_connection.default]

  settings {
    tier = "db-custom-2-7680"
    ip_configuration {
      ipv4_enabled    = "false"
      private_network = google_compute_network.peering_network.id
    }
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

resource "google_compute_network_peering_routes_config" "peering_routes" {
  peering              = google_service_networking_connection.default.peering
  network              = google_compute_network.peering_network.name
  import_custom_routes = true
  export_custom_routes = true
}


## Uncomment this block after adding a valid DNS suffix

# resource "google_service_networking_peered_dns_domain" "default" {
#   name       = "example-com"
#   network    = google_compute_network.peering_network.id
#   dns_suffix = "example.com."
#   service    = "servicenetworking.googleapis.com"
# }

Applica le modifiche

Per applicare la configurazione di Terraform in un progetto Google Cloud , completa i passaggi descritti nelle sezioni seguenti.

Prepara Cloud Shell

  1. Avvia Cloud Shell.
  2. 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 Terraform deve avere la propria directory (chiamata anche modulo principale).

  1. In Cloud Shell, crea una directory e un nuovo file al suo interno. Il nome file deve avere l'estensione .tf, ad esempio main.tf. In questo tutorial, il file è denominato main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 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.

  3. Esamina e modifica i parametri di esempio da applicare al tuo ambiente.
  4. Salva le modifiche.
  5. Inizializza Terraform. Devi eseguire 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

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

  2. Applica la configurazione Terraform eseguendo il comando seguente e inserendo yes al prompt:
    terraform apply

    Attendi che Terraform visualizzi il messaggio "Apply complete!".

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

Per eliminare le modifiche:

  1. Per disattivare la protezione dalle eliminazioni, nel file di configurazione Terraform imposta l'argomento deletion_protection su false.
    deletion_protection =  "false"
  2. Applica la configurazione Terraform aggiornata eseguendo il comando seguente e inserendo yes al prompt:
    terraform apply
  1. Rimuovi le risorse applicate in precedenza con la configurazione Terraform eseguendo questo comando 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, apporta le sostituzioni seguenti:

  • 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 un nome per l'intervallo per cui viene 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 IP pubbliche, specifica le connessioni dalle reti autorizzate che possono connettersi alla tua istanza.

Per il parametro ipv4Enabled, imposta il valore su true se utilizzi un indirizzo IP pubblico per l'istanza o su false se l'istanza ha un indirizzo IP privato.

Puoi utilizzare il campo sqlNetworkArchitecture per applicare l'utilizzo della nuova architettura di rete per l'istanza al momento della creazione, anche se l'upgrade del progetto non è stato eseguito completamente. Per ulteriori dettagli sulla nuova architettura di rete e sulle sue implicazioni, consulta Esegui l'upgrade di un'istanza alla nuova architettura di rete e Alloca un intervallo di indirizzi IP.

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],
      
    }
  },
  "sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE"
}

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, apporta le sostituzioni seguenti:

  • 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 un nome per l'intervallo IP allocato. Il nome dell'intervallo deve essere conforme a RFC-1035 e contenere da 1 a 63 caratteri.
  • AUTHORIZED_NETWORKS: Per le connessioni IP pubbliche, specifica le connessioni dalle reti autorizzate che possono connettersi alla tua istanza.

Per il parametro ipv4Enabled, imposta il valore su true se utilizzi un indirizzo IP pubblico per l'istanza o su false se l'istanza ha un indirizzo IP privato.

Puoi utilizzare il campo sqlNetworkArchitecture per forzare l'utilizzo della nuova architettura di rete per l'istanza al momento della creazione, anche se il progetto non è completamente aggiornato. Per ulteriori dettagli sulla nuova architettura di rete e sulle sue implicazioni, consulta Esegui l'upgrade di un'istanza alla nuova architettura di rete e Alloca un intervallo di indirizzi IP.

Metodo HTTP e URL:

POST https://sqladmin.googleapis.com/sql/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],
      
    }
  },
  "sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE"
}

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 di un IP privato causa il riavvio dell'istanza, con conseguente tempo di inattività.

Per configurare un'istanza esistente in modo che utilizzi un IP privato:

Console

  1. Nella console Google Cloud , vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
  3. Seleziona Connessioni dal menu di navigazione di Cloud SQL.
  4. Nella scheda Networking, seleziona la casella di controllo IP privato.

    Un elenco a discesa mostra le reti disponibili nel tuo progetto.

  5. Seleziona la rete VPC che vuoi utilizzare:
  6. Se viene visualizzato il messaggio È richiesta una connessione di servizio privato:

    1. Fai clic su Configura connessione.
    2. 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 gli intervalli allocati in precedenza, se presenti, oppure puoi selezionare Alloca un nuovo intervallo IP e inserire un nuovo intervallo e un nuovo nome.
      • Utilizza un intervallo IP allocato automaticamente nella tua rete.
    3. Fai clic su Continua.
    4. Fai clic su Crea connessione.
    5. Verifica che venga visualizzato lo stato La connessione di servizio privato per la rete VPC_NETWORK_NAME è stata creata correttamente.
  7. Fai clic su Salva.

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.

Per forzare l'utilizzo della nuova architettura di rete per l'istanza quando aggiungi una configurazione di rete con IP privato, utilizza il flag --enforce-new-sql-network-architecture. Assicurati di aver allocato spazio sufficiente per gli indirizzi IP nel tuo intervallo IP. Se utilizzi l'applicazione della nuova architettura di rete prima che un progetto venga completamente sottoposto ad upgrade, potresti riscontrare un errore di creazione dell'istanza se non è disponibile spazio di indirizzi IP sufficiente.

Per saperne di più, consulta Esegui l'upgrade di un'istanza alla nuova architettura di rete e Alloca un intervallo di indirizzi IP.

gcloud beta sql instances patch INSTANCE_ID \
  --project=PROJECT_ID \
  --network=projects/NETWORK_PROJECT_ID/global/networks/VPC_NETWORK_NAME \
  --no-assign-ip \
  --enforce-new-sql-network-architecture

REST v1

Crea una nuova istanza con un indirizzo IP privato:

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • 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 un nome di intervallo per cui viene 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 IP pubbliche, specifica le connessioni dalle reti autorizzate che possono connettersi alla tua istanza.

Per il parametro ipv4Enabled, imposta il valore su true se utilizzi un indirizzo IP pubblico per l'istanza o su false se l'istanza ha un indirizzo IP privato.

Puoi utilizzare il campo sqlNetworkArchitecture per applicare l'utilizzo della nuova architettura di rete per l'istanza al momento della creazione, anche se non è stato eseguito l'upgrade completo del progetto. Per ulteriori dettagli sulla nuova architettura di rete e sulle sue implicazioni, consulta Esegui l'upgrade di un'istanza alla nuova architettura di rete e Alloca un intervallo di indirizzi IP.

Metodo HTTP e URL:

PATCH https://sqladmin.googleapis.com/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],
      
    }
  },
  "sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE"
}

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, apporta le sostituzioni seguenti:

  • 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 un nome per l'intervallo per cui viene 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 IP pubbliche, specifica le connessioni dalle reti autorizzate che possono connettersi alla tua istanza.

Per il parametro ipv4Enabled, imposta il valore su true se utilizzi un indirizzo IP pubblico per l'istanza o su false se l'istanza ha un indirizzo IP privato.

Puoi utilizzare il campo sqlNetworkArchitecture per forzare l'utilizzo della nuova architettura di rete per l'istanza al momento della creazione, anche se il progetto non è completamente aggiornato. Per ulteriori dettagli sulla nuova architettura di rete e sulle sue implicazioni, consulta Esegui l'upgrade di un'istanza alla nuova architettura di rete e Alloca un intervallo di indirizzi IP.

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],
      
    }
  },
  "sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE"
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

Modifica la configurazione dell'accesso privato ai servizi

Puoi modificare l'intervallo di indirizzi allocato di una connessione di servizi privati 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

  1. Nella console Google Cloud , vai alla pagina Reti VPC.

    Vai a Reti VPC

  2. Seleziona la rete VPC che vuoi utilizzare.
  3. Seleziona la scheda Connessione privata ai servizi.
  4. Seleziona la scheda Intervalli IP allocati per i servizi.
  5. Seleziona il nome dell'intervallo che vuoi eliminare.

  6. Fai clic su Sblocca.

  7. Fai clic su Assegna intervallo IP.

  8. Crea un nuovo intervallo con lo stesso nome e un nuovo intervallo

    Il nome è importante perché la connessione privata è già stata stabilita utilizzando il nome dell'indirizzo.

gcloud services vpc-peerings update \
--network=VPC_NETWORK_NAME \
--ranges=ALLOCATED_RANGES \
--service=servicenetworking.googleapis.com \
--force

Modifica 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. Quindi, 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), nella procedura seguente. 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 Google Cloud console.

Se l'istanza Cloud SQL è ospitata in una rete VPC condiviso, le variabili VPC_NETWORK_NAME utilizzate nelle seguenti istruzioni 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

  1. Nella console Google Cloud , vai alla pagina Reti VPC.

    Vai a Reti VPC

  2. Crea una rete VPC temporanea.
  3. Crea un'allocazione IP nella rete VPC temporanea.
  4. Crea una connessione privata nella rete VPC temporanea.
  5. 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
  6. Modifica la configurazione dell'accesso privato ai servizi nella rete originale per aggiungere un nuovo intervallo allocato o eliminare quelli esistenti.

  7. Sposta l'istanza Cloud SQL 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

Connettiti a un'istanza utilizzando il suo indirizzo IP privato

Utilizzi l'accesso privato ai servizi per connetterti alle istanze Cloud SQL da istanze Compute Engine o Google Kubernetes Engine nella stessa rete VPC (definita qui come origini interne) o da una rete esterna (un'origine esterna).

Connettiti da un'origine interna

Per connetterti da un'origine nello stesso progetto Google Cloud dell'istanza Cloud SQL, ad esempio il Cloud SQL Auth Proxy in esecuzione su una risorsa Compute Engine, la 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, ad esempio l'ambiente standard App Engine, Cloud Run o Cloud Run Functions, la tua applicazione o funzione si connette direttamente alla tua istanza tramite l'accesso VPC serverless senza il Cloud SQL Auth Proxy.

Connettiti da un'origine 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:

  1. 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.
  2. 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 (destinazioni) specifici dalla tua rete on-premise.

    Le route predefinite (destinazione 0.0.0.0/0) non possono essere importate nella rete VPC Cloud SQL perché questa rete 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.

  3. Identifica le connessioni di peering prodotte dalla connessione di servizi privati. A seconda del servizio, la connessione Private Service Connect potrebbe creare una o più delle seguenti connessioni di peering, ma non necessariamente tutte:
    • cloudsql-mysql-googleapis-com
    • cloudsql-postgres-googleapis-com
    • servicenetworking-googleapis-com
  4. Aggiorna tutte le connessioni di peering per attivare Esporta route personalizzate.
  5. Identifica l'intervallo allocato utilizzato dalla connessione Private Service Connect.
  6. Configura la modalità di annuncio personalizzata del router Cloud per l'intervallo allocato sui router Cloud che gestiscono le sessioni BGP per i tunnel Cloud VPN o i collegamenti Cloud Interconnect (VLAN).

Connetti da Cloud Shell

Cloud Shell utilizza una macchina virtuale Compute Engine gestita da Google Cloud e si trova al di fuori della tua rete VPC. Pertanto, non esiste un percorso di connettività tra Cloud Shell e lo spazio degli indirizzi IP privati della tua rete VPC.

Di conseguenza, Cloud Shell non supporta la connessione a un'istanza Cloud SQL che ha solo un indirizzo IP privato.

Per connetterti alle istanze Cloud SQL da una rete esterna utilizzando la connettività IP privato, consulta Connettiti a un'istanza Cloud SQL dall'esterno del relativo VPC.

Connettiti da indirizzi IP non RFC 1918

RFC 1918 specifica gli indirizzi IP assegnati per essere utilizzati internamente (ovvero all'interno di un'organizzazione) e non verranno instradati su internet. Nello specifico, si tratta di:

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16

Le connessioni a un'istanza Cloud SQL che utilizza 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 attraverso il proxy.

Per connetterti da un indirizzo IP non RFC 1918, devi impostare l'autorizzazione IP per istanza per consentire il traffico dagli 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 tua rete VPC. Per esportare le route non RFC 1918, devi aggiornare il peering di rete a Cloud SQL.

gcloud compute networks peerings update PEERING_CONNECTION \
--network=VPC_NETWORK_NAME \
--export-subnet-routes-with-public-ip \
--project=PROJECT_ID

    Sostituisci quanto segue:

  • PEERING_CONNECTION è il nome della connessione in peering prodotta dalla connessione Private Service Connect 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.

Per mitigare l'esaurimento degli indirizzi IP, puoi utilizzare indirizzi IP pubblici utilizzati privatamente.

Connettiti da indirizzi IP pubblici utilizzati privatamente

Se vuoi configurare la tua istanza in un intervallo di indirizzi IP pubblici utilizzati privatamente, attiva export-subnet-routes-with-public-ip sul 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

    Sostituisci quanto segue:

  • PEERING_CONNECTION è il nome della connessione in 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.

Connettiti a un'istanza configurata con indirizzi IP pubblici utilizzati privatamente

Se l'istanza è configurata in un intervallo di indirizzi IP pubblici utilizzati privatamente e vuoi connetterti, attiva import-subnet-routes-with-public-ip sul 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

Sostituisci quanto segue:

  • PEERING_CONNECTION è il nome della connessione in peering prodotta dalla connessione di servizi privati tra la tua rete VPC e la rete del producer di servizi. Per trovare 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 utilizzi un VPC condiviso.

Connettiti utilizzando un endpoint di scrittura

Oltre a un indirizzo IP privato, puoi utilizzare un endpoint di scrittura in una stringa di connessione SQL. Un endpoint di scrittura è un nome DNS (Domain Name Service) globale che si risolve automaticamente nell'indirizzo IP dell'istanza principale attuale. Utilizzando un endpoint di scrittura, puoi evitare di dover apportare modifiche alla connessione dell'applicazione quando si verifica un errore della regione.

Se si verifica un failover o uno switchover di una replica, l'endpoint di scrittura può aiutare a gestire gli indirizzi IP privati delle istanze. In questo caso, utilizza l'endpoint di scrittura per connetterti all'istanza che funge da istanza principale.

Come Cloud SQL crea un endpoint di scrittura

Se abiliti l'API Cloud DNS per il tuo progetto Google Cloud e in seguito crei un'istanza Cloud SQL Enterprise Plus principale, promuovi la replica per l'istanza o esegui l'upgrade dell'istanza dalla versione Cloud SQL Enterprise, Cloud SQL genera automaticamente un endpoint di scrittura e lo assegna all'istanza.

Per saperne di più, consulta Visualizzare l'endpoint di scrittura.

Assegna un endpoint di scrittura a un'istanza

Se non abiliti l'API Cloud DNS per il tuo progetto Google Cloud e poi crei, promuovi o esegui l'upgrade dell'istanza, Cloud SQL non assegna automaticamente l'endpoint di scrittura all'istanza.

Per fare in modo che Cloud SQL generi un endpoint di scrittura e lo assegni all'istanza, consulta Generare l'endpoint di scrittura.

Limitazioni di Managed Service for Microsoft Active Directory

Se la regione dell'istanza principale originale non è disponibile e Managed Service for Microsoft Active Directory è abilitato, l'endpoint di scrittura dell'istanza principale appena promossa non può essere utilizzato con l'autenticazione Managed Microsoft AD per connettersi dopo un'operazione di failover.

Supporto degli endpoint di scrittura della versione Cloud SQL Enterprise Plus nei trust tra foreste

Una VM unita on-premise si basa sul routing del suffisso del nome per l'autenticazione. Gli endpoint di scrittura di un'istanza della versione Cloud SQL Enterprise Plus, gestiti da Cloud SQL, utilizzano un formato hostname distinto, ad esempio *.sql-psa.goog.

Se l'endpoint di scrittura associato alla tua istanza Cloud SQL Enterprise Plus opera da un dominio connesso tramite una relazione di trust, questo formato di connessione potrebbe impedire al dominio on-premise di trovare automaticamente il dominio autorevole per il nome principale del servizio.

Per risolvere il problema, devi aggiungere il suffisso del dominio gestito da Cloud SQL pertinente (ad esempio, goog o sql-psa.goog) come suffisso UPN alternativo. Devi aggiungere questo suffisso, a livello di foresta, all'interno di Active Directory del dominio gestito utilizzando l'account setupadmin:

  1. In Active Directory gestito, completa i seguenti passaggi:
    1. Nella finestra Server Manager, seleziona Strumenti. Quindi seleziona Domini e trust di Active Directory.
    2. Nel riquadro, fai clic con il tasto destro del mouse su Domini e trust di Active Directory (il nodo radice).
    3. Quindi seleziona Proprietà.
    4. Nella scheda Suffissi UPN, inserisci il suffisso UPN alternativo (ad esempio, sql-psa.goog).
    5. Fai clic su Aggiungi.
    6. Fai clic su Applica.
    7. Fai clic su OK.
  2. In Active Directory on-premise, completa i seguenti passaggi:
    1. Nella finestra Server Manager, seleziona Strumenti, quindi seleziona Domini e trust di Active Directory.
    2. Nel riquadro, fai clic con il tasto destro del mouse sul nome di dominio AD gestito e sulle relazioni di trust. Questo è il dominio gestito specifico che ha il trust verso il tuo dominio on-premise.
    3. Seleziona Properties (Proprietà), quindi vai alla scheda Trusts (Trust).
    4. Nelle sezioni Domini attendibili per questo dominio (attendibilità in uscita) o Domini che considerano attendibile questo dominio (attendibilità in entrata), seleziona la voce per il nome di dominio gestito e poi fai clic su Proprietà.
    5. Vai alla scheda Name Suffix Routing (Routing del suffisso del nome) e fai clic su Refresh (Aggiorna).
    6. Trova e seleziona il suffisso del nome appena aggiunto, ad esempio sql-psa.goog e fai clic su Attiva.
    7. Fai clic su Applica e su Ok in tutte le finestre di dialogo rimanenti.

Risoluzione dei problemi

Consulta la sezione Risoluzione dei problemi per i problemi di connettività noti e la sezione Debug dei problemi di connessione per assistenza con l'autodiagnostica.