Connettiti a un'istanza utilizzando Private Service Connect

Questa pagina descrive come utilizzare Private Service Connect per connetterti a un'istanza Cloud SQL.

Puoi utilizzare Private Service Connect per connetterti a un'istanza Cloud SQL principale o a una delle sue repliche di lettura da più reti Virtual Private Cloud (VPC) che appartengono a gruppi, team, progetti o organizzazioni diversi.

Prima di iniziare

Il supporto per l'utilizzo di Private Service Connect con un'istanza Cloud SQL è disponibile per gcloud CLI versione 416.0.0 e successive.

Ruoli utente

La tabella seguente fornisce informazioni sui ruoli richiesti per utilizzare Private Service Connect con un'istanza Cloud SQL:

Ruolo Descrizione
compute.networkAdmin

Concede il controllo completo sulla rete VPC che avvia una connessione a un'istanza Cloud SQL. Puoi creare e gestire indirizzi IP, regole firewall ed endpoint Private Service Connect.

Se utilizzi Private Service Connect per connetterti a un'istanza Cloud SQL da più reti VPC, ogni rete ha il proprio amministratore.

dns.admin Concede il controllo completo sulle risorse Cloud DNS, inclusi le zone e i record DNS.
cloudsql.admin Fornisce il controllo completo di un'istanza Cloud SQL e controlla il suo ciclo di vita.
cloudsql.instanceUser Fornisce l'accesso all'istanza Cloud SQL. Se ti connetti tramite il client proxy di autenticazione Cloud SQL, devi disporre del ruolo Client Cloud SQL. Se ti connetti direttamente, non hai bisogno di ruoli e autorizzazioni di Identity and Access Management (IAM).

crea un'istanza di Cloud SQL

Puoi creare un'istanza e abilitare Private Service Connect utilizzando gcloud CLI, Terraform o l'API.

gcloud

Per creare un'istanza e abilitare Private Service Connect, utilizza il comando gcloud sql instances create:

gcloud sql instances create INSTANCE_NAME \
--project=PROJECT_ID \
--region=REGION_NAME \
--enable-private-service-connect \
--allowed-psc-projects=ALLOWED_PROJECTS \
--availability-type=AVAILABILITY_TYPE \
--no-assign-ip \
--tier=MACHINE_TYPE \
--database-version=DATABASE_VERSION

Effettua le seguenti sostituzioni:

  • INSTANCE_NAME: il nome dell'istanza.
  • PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud che contiene l'istanza.
  • REGION_NAME: nome della regione dell'istanza.
  • ALLOWED_PROJECTS: un elenco di ID o numeri di progetto consentiti, separati da virgole. Se un progetto non è incluso in questo elenco, non puoi utilizzarlo per creare un'istanza e abilitare Private Service Connect.

  • AVAILABILITY_TYPE: abilita l'alta disponibilità per l'istanza. Per questo parametro, specifica uno dei seguenti valori:
    • REGIONAL: abilita l'alta disponibilità ed è consigliata per le istanze di produzione. Il failover dell'istanza viene eseguito su un'altra zona all'interno della regione selezionata.
    • ZONAL: non fornisce funzionalità di failover. Questo è il valore predefinito.

    Per ulteriori informazioni su come impostare e rimuovere l'alta disponibilità per le istanze, vedi Configurare l'alta disponibilità per un'istanza esistente e Disattivare l'alta disponibilità per un'istanza.

  • MACHINE_TYPE: il tipo di macchina dell'istanza.
  • DATABASE_VERSION: la versione del database per l'istanza (ad esempio, POSTGRES_13).

Terraform

Per creare un'istanza con Private Service Connect abilitato, utilizza la google_sql_database_instancerisorsa Terraform.

resource "google_sql_database_instance" "default" {
  name             = "postgres-instance"
  region           = "us-central1"
  database_version = "POSTGRES_14"
  settings {
    tier              = "db-custom-2-7680"
    availability_type = "REGIONAL"
    backup_configuration {
      enabled = true
    }
    ip_configuration {
      psc_config {
        psc_enabled               = true
        allowed_consumer_projects = []
      }
      ipv4_enabled = false
    }
  }
  deletion_protection = false # Set to "true" to prevent destruction of the resource
}

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

prepara Cloud Shell

  1. Avvia Cloud Shell.
  2. 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).

  1. In Cloud Shell, crea una directory e un nuovo file al suo interno. Il nome del file deve avere l'estensione .tf, ad esempio main.tf. In questo tutorial, il file è indicato come 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.

    Se vuoi, copia il codice da GitHub. Questa opzione è consigliata se 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

    Facoltativamente, per utilizzare la versione più recente 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 finché Terraform non visualizza il messaggio "Applicazione completata".

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

REST v1

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

  • PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud che contiene l'istanza.
  • INSTANCE_NAME: il nome dell'istanza.
  • REGION_NAME: nome della regione dell'istanza.
  • AVAILABILITY_TYPE: abilita l'alta disponibilità per l'istanza. Per questo parametro, specifica uno dei seguenti valori:
    • REGIONAL: abilita l'alta disponibilità ed è consigliata per le istanze di produzione. Il failover dell'istanza viene eseguito su un'altra zona all'interno della regione selezionata.
    • ZONAL: non fornisce funzionalità di failover. Questo è il valore predefinito.

    Per ulteriori informazioni su come impostare e rimuovere l'alta disponibilità per le istanze, vedi Configurare l'alta disponibilità per un'istanza esistente e Disattivare l'alta disponibilità per un'istanza.

  • ALLOWED_PROJECTS: un elenco di ID o numeri di progetto consentiti, separati da virgole. Se un progetto non è incluso in questo elenco, non puoi utilizzarlo per creare un'istanza e abilitare Private Service Connect.

  • MACHINE_TYPE: il tipo di macchina dell'istanza.

Metodo HTTP e URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances

Corpo JSON della richiesta:

{
  "name": "INSTANCE_NAME",
  "project": PROJECT_ID",
  "region": "REGION_NAME",
  "databaseVersion": "POSTGRES_13",
  "kind": "sql#instance",
  "settings": {
    "availabilityType": "AVAILABILITY_TYPE",
    "ipConfiguration": {
      "ipv4Enabled": false,
      "pscConfig": {
        "allowedConsumerProjects": [
          "ALLOWED_PROJECTS"
        ],
        "pscEnabled": true
      }
    },
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "tier": "MACHINE_TYPE"
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME",
  "status": "RUNNING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "2023-06-14T18:48:35.499Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

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

  • PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud che contiene l'istanza.
  • INSTANCE_NAME: il nome dell'istanza.
  • REGION_NAME: nome della regione dell'istanza.
  • AVAILABILITY_TYPE: abilita l'alta disponibilità per l'istanza. Per questo parametro, specifica uno dei seguenti valori:
    • REGIONAL: abilita l'alta disponibilità ed è consigliata per le istanze di produzione. Il failover dell'istanza viene eseguito su un'altra zona all'interno della regione selezionata.
    • ZONAL: non fornisce funzionalità di failover. Questo è il valore predefinito.

    Per ulteriori informazioni su come impostare e rimuovere l'alta disponibilità per le istanze, vedi Configurare l'alta disponibilità per un'istanza esistente e Disattivare l'alta disponibilità per un'istanza.

  • ALLOWED_PROJECTS: un elenco di ID o numeri di progetto consentiti, separati da virgole. Se un progetto non è incluso in questo elenco, non puoi utilizzarlo per creare un'istanza e abilitare Private Service Connect.

  • MACHINE_TYPE: il tipo di macchina dell'istanza.

Metodo HTTP e URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances

Corpo JSON della richiesta:

{
  "name": "INSTANCE_NAME",
  "project": PROJECT_ID",
  "region": "REGION_NAME",
  "databaseVersion": "POSTGRES_13",
  "kind": "sql#instance",
  "settings": {
    "availabilityType": "AVAILABILITY_TYPE",
    "ipConfiguration": {
      "ipv4Enabled": false,
      "pscConfig": {
        "allowedConsumerProjects": [
          "ALLOWED_PROJECTS"
        ],
        "pscEnabled": true
      }
    },
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "tier": "MACHINE_TYPE"
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME",
  "status": "RUNNING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "2023-06-14T18:48:35.499Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Recupera il collegamento al servizio

Dopo aver creato un'istanza Cloud SQL con Private Service Connect abilitato, recupera l'URI del collegamento al servizio e utilizzalo per creare l'endpoint Private Service Connect.

gcloud

Per visualizzare le informazioni di riepilogo su un'istanza con Private Service Connect abilitato, ad esempio il campo pscServiceAttachmentLink che mostra l'URI che punta al collegamento al servizio dell'istanza, utilizza il comando gcloud sql instances describe:

gcloud sql instances describe INSTANCE_NAME \
--project=PROJECT_ID

Effettua le seguenti sostituzioni:

  • INSTANCE_NAME: il nome dell'istanza Cloud SQL a cui possono connettersi gli endpoint Private Service Connect nelle reti VPC
  • PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud che contiene l'istanza

L'esempio seguente mostra un output di esempio per questo comando:

gcloud sql instances describe myinstance \
--project=12345

...
pscServiceAttachmentLink: projects/45678/regions/myregion/serviceAttachments/myserviceattachment

Terraform

Per ottenere l'URI del collegamento al servizio, utilizza la google_compute_addressrisorsa Terraform.

resource "google_compute_address" "default" {
  name         = "psc-compute-address"
  region       = "us-central1"
  address_type = "INTERNAL"
  subnetwork   = "default"     # Replace value with the name of the subnet here.
  address      = "10.128.0.42" # Replace value with the IP address to reserve.
}

data "google_sql_database_instance" "default" {
  name = resource.google_sql_database_instance.default.name
}

resource "google_compute_forwarding_rule" "default" {
  name                  = "psc-forwarding-rule-${google_sql_database_instance.default.name}"
  region                = "us-central1"
  network               = "default"
  ip_address            = google_compute_address.default.self_link
  load_balancing_scheme = ""
  target                = data.google_sql_database_instance.default.psc_service_attachment_link
}

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

prepara Cloud Shell

  1. Avvia Cloud Shell.
  2. 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).

  1. In Cloud Shell, crea una directory e un nuovo file al suo interno. Il nome del file deve avere l'estensione .tf, ad esempio main.tf. In questo tutorial, il file è indicato come 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.

    Se vuoi, copia il codice da GitHub. Questa opzione è consigliata se 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

    Facoltativamente, per utilizzare la versione più recente 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 finché Terraform non visualizza il messaggio "Applicazione completata".

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

Crea un endpoint Private Service Connect

Puoi prenotare un indirizzo IP interno per l'endpoint Private Service Connect e creare un endpoint con quell'indirizzo. Per creare l'endpoint, sono necessari l'URI del collegamento al servizio e i progetti consentiti per l'istanza.

gcloud

  1. Per prenotare un indirizzo IP interno per l'endpoint Private Service Connect, utilizza il comando gcloud compute addresses create:

    gcloud compute addresses create ADDRESS_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --subnet=SUBNET_NAME \
    --addresses=INTERNAL_IP_ADDRESS

    Effettua le seguenti sostituzioni:

    • ADDRESS_NAME: il nome dell'indirizzo IP interno.
    • PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud per l'endpoint.
    • REGION_NAME: il nome della regione dell'endpoint.
    • SUBNET_NAME: il nome della subnet per l'indirizzo IP.
    • INTERNAL_IP_ADDRESS: l'indirizzo IP da prenotare. Questo indirizzo IP deve essere compreso nell'intervallo IP principale della subnet. L'indirizzo IP può essere un indirizzo RFC 1918 o una subnet con intervalli non RFC.
  2. Per verificare che l'indirizzo IP sia riservato, utilizza il comando gcloud compute addresses list:

    gcloud compute addresses list ADDRESS_NAME \
    --project=PROJECT_ID

    Nella risposta, verifica che venga visualizzato lo stato RESERVED per l'indirizzo IP.

  3. Per creare l'endpoint Private Service Connect e puntarlo al collegamento del servizio Cloud SQL, utilizza il comando gcloud compute forwarding-rules create:

    gcloud compute forwarding-rules create ENDPOINT_NAME \
    --address=ADDRESS_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --network=NETWORK_NAME \
    --target-service-attachment=SERVICE_ATTACHMENT_URI

    Effettua le seguenti sostituzioni:

    • ENDPOINT_NAME: il nome dell'endpoint
    • NETWORK_NAME: il nome della rete VPC per l'endpoint
    • SERVICE_ATTACHMENT_URI: l'URI del collegamento al servizio
  4. Per verificare che il collegamento al servizio accetti l'endpoint, utilizza il comando gcloud compute forwarding-rules describe:

    gcloud compute forwarding-rules describe ENDPOINT_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME

    Nella risposta, verifica che venga visualizzato lo stato ACCEPTED per il campo pscConnectionStatus. L'endpoint può connettersi al collegamento al servizio.

Connettiti a un'istanza Cloud SQL

Puoi connetterti a un'istanza Cloud SQL con Private Service Connect abilitato utilizzando un indirizzo IP interno, un record DNS, il proxy di autenticazione Cloud SQL, i connettori di linguaggio Cloud SQL o altre applicazioni Google Cloud.

Configura una zona gestita DNS e un record DNS

Cloud SQL non crea automaticamente record DNS. Al contrario, la risposta dell'API istanza lookup fornisce un nome DNS suggerito. Ti consigliamo di creare il record DNS in una zona DNS privata nella rete VPC corrispondente. Questo fornisce un modo coerente di utilizzare il proxy di autenticazione Cloud SQL per connetterti da reti diverse.

gcloud

  1. Per visualizzare le informazioni di riepilogo su un'istanza Cloud SQL, incluso il nome DNS dell'istanza, utilizza il comando gcloud sql instances describe:

    gcloud sql instances describe INSTANCE_NAME \
    --project=PROJECT_ID

    Effettua le seguenti sostituzioni:

    • INSTANCE_NAME: il nome dell'istanza Cloud SQL
    • PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud che contiene l'istanza

    Nella risposta, verifica che venga visualizzato il nome DNS. Questo nome ha il seguente pattern: INSTANCE_UID.PROJECT_DNS_LABEL.REGION_NAME.sql.goog.. Ad esempio: 1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog..

  2. Per creare una zona DNS privata, utilizza il comando gcloud dns managed-zones create. Questa zona è associata alla rete VPC utilizzata per la connessione all'istanza Cloud SQL tramite l'endpoint Private Service Connect.

    gcloud dns managed-zones create ZONE_NAME \
    --project=PROJECT_ID \
    --description=DESCRIPTION \
    --dns-name=DNS_NAME \
    --networks=NETWORK_NAME \
    --visibility=private

    Effettua le seguenti sostituzioni:

    • ZONE_NAME: il nome della zona DNS
    • PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud che contiene la zona
    • DESCRIPTION: una descrizione della zona (ad esempio, una zona DNS per l'istanza Cloud SQL)
    • DNS_NAME: il nome DNS della zona, ad esempio REGION_NAME.sql.goog. (dove REGION_NAME è il nome della regione della zona)
    • NETWORK_NAME: il nome della rete VPC
  3. Dopo aver creato l'endpoint Private Service Connect, utilizza il comando gcloud dns record-sets create per creare un record DNS nella zona:

    gcloud dns record-sets create DNS_NAME \
    --project=PROJECT_ID \
    --type=RRSET_TYPE \
    --rrdatas=RR_DATA \
    --zone=ZONE_NAME

    Effettua le seguenti sostituzioni:

    • DNS_NAME: il nome DNS recuperato in precedenza in questa procedura.
    • RRSET_TYPE: il tipo di record di risorse del set di record DNS (ad esempio, A).
    • RR_DATA: l'indirizzo IP allocato per l'endpoint Private Service Connect (ad esempio 198.51.100.5). Puoi anche inserire più valori, ad esempio rrdata1 rrdata2 rrdata3 (ad esempio 10.1.2.3 10.2.3.4 10.3.4.5).

Connessione diretta tramite record DNS

Prima di connetterti a un'istanza Cloud SQL utilizzando un record DNS, completa le seguenti azioni:

  1. Crea un endpoint Private Service Connect.
  2. Conferma che il collegamento al servizio dell'istanza accetti l'endpoint. Per verificare che lo stato dell'endpoint sia ACCEPTED, controlla lo stato.
  3. Configura una zona gestita DNS e un record DNS.

Una volta soddisfatte queste condizioni, utilizza il nome DNS per accedere all'istanza da qualsiasi rete VPC in cui hai creato l'endpoint.

gcloud

  1. Per recuperare il record DNS dell'endpoint Private Service Connect, utilizza il comando gcloud compute addresses describe:

    gcloud compute addresses describe DNS_RECORD \
    --project=PROJECT_ID \
    --region=REGION_NAME

    Effettua le seguenti sostituzioni:

    • DNS_RECORD: il record DNS per l'endpoint
    • PROJECT_ID: l'ID o il numero del progetto del progetto Google Cloud che contiene l'endpoint
    • REGION_NAME: nome della regione dell'endpoint
  2. Per connetterti all'istanza Cloud SQL, utilizza il record DNS.

    psql "sslmode=disable dbname=DATABASE_NAME user=USERNAME host=DNS_RECORD"

    Effettua le seguenti sostituzioni:

    • DATABASE_NAME: il nome del database Cloud SQL per PostgreSQL contenuto all'interno dell'istanza
    • USERNAME: il nome dell'utente che si connette all'istanza
    • DNS_RECORD: record DNS dell'endpoint

Connettiti direttamente tramite un indirizzo IP interno

Prima di connetterti a un'istanza Cloud SQL con Private Service Connect abilitato, completa le seguenti azioni:

  1. Crea un endpoint Private Service Connect.
  2. Conferma che il collegamento al servizio dell'istanza accetti l'endpoint. Per verificare che lo stato dell'endpoint sia ACCEPTED, controlla lo stato.

Una volta soddisfatte queste condizioni, utilizza l'indirizzo IP dell'endpoint per accedere all'istanza da qualsiasi rete VPC in cui hai creato l'endpoint.

gcloud

  1. Per recuperare l'indirizzo IP dell'endpoint Private Service Connect, utilizza il comando gcloud compute addresses describe:

    gcloud compute addresses describe ADDRESS_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME

    Effettua le seguenti sostituzioni:

    • ADDRESS_NAME: il nome dell'indirizzo IP dell'endpoint
    • PROJECT_ID: l'ID o il numero del progetto del progetto Google Cloud che contiene l'endpoint
    • REGION_NAME: nome della regione dell'endpoint
  2. Per connetterti all'istanza Cloud SQL, utilizza l'indirizzo IP interno.

    psql "sslmode=disable dbname=DATABASE_NAME user=USERNAME hostaddr=IP_ADDRESS"

    Effettua le seguenti sostituzioni:

    • DATABASE_NAME: il nome del database Cloud SQL per PostgreSQL contenuto all'interno dell'istanza
    • USERNAME: il nome dell'utente che si connette all'istanza
    • IP_ADDRESS: l'indirizzo IP dell'endpoint

Connettiti utilizzando il proxy di autenticazione Cloud SQL

Il proxy di autenticazione Cloud SQL è un connettore che fornisce l'accesso sicuro a un'istanza con Private Service Connect abilitato, senza bisogno di reti autorizzate o per la configurazione di SSL.

Per consentire le connessioni client del proxy di autenticazione Cloud SQL, configura un record DNS che corrisponda al nome DNS consigliato fornito per l'istanza. Il record DNS è una mappatura tra una risorsa DNS e un nome di dominio.

Scarica e installa il proxy di autenticazione Cloud SQL

Per connetterti alle istanze in cui è abilitato Private Service Connect, devi scaricare e installare il programma binario per il proxy di autenticazione Cloud SQL. Il programma binario scaricato dipende dal sistema operativo e dall'utilizzo o meno di un kernel a 32 o a 64 bit. La maggior parte dei componenti hardware più recenti utilizza un kernel a 64 bit.

Se non hai la certezza che sulla tua macchina sia in esecuzione un kernel a 32 o 64 bit, utilizza il comando uname -a per Linux o macOS. Per Windows, consulta la documentazione di Windows.

Avvia il proxy di autenticazione Cloud SQL

Il proxy di autenticazione Cloud SQL supporta le connessioni alle istanze in cui è abilitata Private Service Connect. Per ulteriori informazioni, vedi Avviare il proxy di autenticazione Cloud SQL.

gcloud

  1. Per visualizzare informazioni di riepilogo su un'istanza Cloud SQL, incluso il nome della connessione dell'istanza, utilizza il comando gcloud sql instances describe. Il nome di questa connessione è nel formato PROJECT_ID:REGION_NAME:INSTANCE_NAME.

    gcloud sql instances describe INSTANCE_NAME \
    --project=PROJECT_ID \
    --format='value(connectionName)'

    Effettua le seguenti sostituzioni:

    • INSTANCE_NAME: il nome dell'istanza Cloud SQL
    • PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud che contiene l'istanza
  2. Copia il nome di connessione istanza.
  3. Avvia il proxy di autenticazione Cloud SQL:

    ./cloud-sql-proxy INSTANCE_CONNECTION_NAME --psc 

    Sostituisci INSTANCE_CONNECTION_NAME con il nome della connessione dell'istanza che hai copiato nel passaggio precedente.

Connettiti utilizzando i connettori di linguaggio Cloud SQL

I connettori di linguaggio Cloud SQL sono librerie che forniscono l'accesso sicuro a un'istanza Cloud SQL con Private Service Connect abilitato, senza bisogno di reti autorizzate o per la configurazione di SSL.

Per consentire le connessioni con i connettori di linguaggio Cloud SQL, configura un record DNS che corrisponda al nome DNS consigliato fornito per l'istanza. Il record DNS è una mappatura tra una risorsa DNS e un nome di dominio.

I connettori di linguaggio Cloud SQL supportano le connessioni Private Service Connect tramite il tipo di IP PSC nelle rispettive librerie.

Connettiti da App Engine Standard, Cloud Run o Cloud Functions

Per connetterti alle istanze Cloud SQL con Private Service Connect abilitato, puoi utilizzare l'ambiente Standard App Engine, Cloud Run o Cloud Functions.

In questi ambienti serverless supportati sono supportati sia i connettori di linguaggio Cloud SQL sia le connessioni TCP dirette mediante un indirizzo IP e un numero di porta. Per le connessioni TCP dirette, si tratta dell'indirizzo IP che prenoti quando crei l'endpoint Private Service Connect. Puoi specificare l'indirizzo IP come indirizzo dell'host del database.

Se crei un record DNS per l'endpoint, puoi specificare questo record per l'host.

Effettuare la connessione da BigQuery

Per accedere ai dati in Cloud SQL ed eseguire query su questi dati tramite una connessione IP interna, utilizza il parametro
--enable-google-private-path . Questo parametro è valido solo se:

  • Utilizzi il parametro --no-assign-ip.
  • Puoi utilizzare il parametro --network per specificare il nome della rete VPC da utilizzare per creare una connessione interna.

Testa la connettività

Per verificare la connettività in entrata a un'istanza Cloud SQL con Private Service Connect abilitato, imposta l'indirizzo IP dell'endpoint Private Service Connect come indirizzo IP di destinazione.

gcloud

Per creare un test di connettività per un'istanza Cloud SQL con Private Service Connect abilitato, utilizza il comando gcloud network-management connectivity-tests create:

gcloud network-management connectivity-tests create CONNECTIVITY_TEST_NAME \
--source-instance=SOURCE_INSTANCE \
--destination-cloud-sql-instance=DESTINATION_CLOUD_SQL_INSTANCE \
--destination-network=DESTINATION_NETWORK \
--destination-port=DESTINATION_PORT \
--protocol=tcp

Effettua le seguenti sostituzioni:

  • CONNECTIVITY_TEST_NAME: il nome del test di connettività.
  • SOURCE_INSTANCE: l'URI dell'istanza Compute Engine in cui si trova l'indirizzo IP di origine (ad esempio, projects/myproject/zones/myzone/instances/myinstance).
  • DESTINATION_CLOUD_SQL_INSTANCE: l'URL dell'istanza Cloud SQL (ad esempio projects/myproject/instances/myinstance).
  • DESTINATION_NETWORK: l'URI della rete VPC in cui si trova l'indirizzo IP di destinazione (ad esempio, projects/myproject/global/networks/mynetwork).
  • DESTINATION_PORT: il numero di porta riservato per l'istanza. Per le istanze Cloud SQL per PostgreSQL, il numero di porta è 5432.

Limitazioni

  • Puoi configurare fino a 20 endpoint Private Service Connect che si connettono al collegamento al servizio di un'istanza Cloud SQL con Private Service Connect abilitato.
  • I seguenti flag sono invalidati o interessati:
    • --no-assign-ip: utilizza questo flag perché le istanze Cloud SQL con Private Service Connect abilitato non sono supportate per l'utilizzo di altri tipi di connettività, come le connessioni IP esterne
    • --authorized-networks: non puoi utilizzare questo flag per aggiungere reti autorizzate
    • --network: non puoi utilizzare questo flag perché è associato all'accesso privato ai servizi
    • --allocated-ip-range-name: non puoi utilizzare questo flag perché i nomi degli intervalli IP consentiti non sono supportati
  • Non puoi creare una replica esterna di un'istanza con Private Service Connect abilitato.
  • Non puoi attivare o disattivare Private Service Connect su un'istanza esistente.
  • Non puoi configurare un'istanza con Private Service Connect abilitato per l'utilizzo dell'accesso privato ai servizi o di connessioni IP esterne.
    • Non puoi abilitare le connessioni IP esterne su un'istanza con Private Service Connect abilitato.
    • Non puoi abilitare l'accesso privato ai servizi o aggiungere reti autorizzate all'istanza.
    • Non puoi modificare il tipo di connettività dell'istanza.
  • Non puoi utilizzare il comando gcloud sql connect, Cloud Shell o Cloud Build per connetterti alle istanze Cloud SQL con Private Service Connect abilitato.
  • Se esegui migrazioni omogene a Cloud SQL, non puoi utilizzare Database Migration Service per connetterti alle istanze Cloud SQL con Private Service Connect abilitato.
  • Quando testi la connettività a un'istanza Cloud SQL con Private Service Connect abilitato, non puoi impostare i seguenti elementi:
    • L'indirizzo IP interno o il nome DNS dell'istanza come destinazione direttamente
    • L'istanza come origine
    • L'indirizzo IP dell'endpoint Private Service Connect come origine
  • L'inserimento nella lista consentita basata su IP mediante reti autorizzate non è supportata.
  • Le estensioni pglogical, pl/proxy, dblink e postgres_fdw non sono supportate.
  • Il controllo, il logging e le metriche basati sull'IP client non sono supportati per gli insight sulle query e sul sistema. Tuttavia, sono supportate le reti VPN e Interconnect.
  • Se il tuo progetto di rete contiene istanze che utilizzano la vecchia architettura di rete Cloud SQL, non puoi creare un'istanza Private Service Connect. Cloud SQL fornisce strumenti per aiutarti a eseguire l'upgrade delle istanze dalla vecchia architettura di rete alla nuova architettura di rete. Per ulteriori informazioni o per verificare l'architettura di rete delle istanze Cloud SQL nel progetto ed eseguire gli upgrade necessari, consulta Eseguire l'upgrade di un'istanza alla nuova architettura di rete.

Risolvere i problemi

Questa sezione contiene informazioni sui problemi associati alle istanze Cloud SQL con Private Service Connect abilitato, oltre ai passaggi per la risoluzione dei problemi.

Problema Risoluzione dei problemi
Il collegamento al servizio dell'istanza non accetta l'endpoint Private Service Connect.
  1. Per controllare lo stato dell'endpoint, utilizza il comando gcloud compute forwarding-rules describe.

    gcloud compute forwarding-rules describe ENDPOINT_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    | grep pscConnectionStatus

    Effettua le seguenti sostituzioni:

    • ENDPOINT_NAME: il nome dell'endpoint
    • PROJECT_ID: l'ID o il numero del progetto del progetto Google Cloud che contiene l'endpoint
    • REGION_NAME: nome della regione dell'endpoint
  2. Verifica che lo stato dell'endpoint sia ACCEPTED. Se lo stato è PENDING, l'istanza non consente il progetto Google Cloud che contiene l'endpoint. Assicurati che il progetto di rete in cui è stato creato l'endpoint sia consentito. Per ulteriori informazioni, vedi Modificare un'istanza con Private Service Connect abilitato.

Passaggi successivi