Connettiti a un'istanza utilizzando Private Service Connect

Questa pagina descrive come utilizzare Private Service Connect per connettersi a un'istanza AlloyDB per PostgreSQL.

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

Ruoli obbligatori

Per poter connetterti a un'istanza AlloyDB, devi concedere tutti i seguenti ruoli a un utente nella tua rete VPC.

Ruolo Descrizione
compute.networkAdmin Concede il pieno controllo sulla rete VPC che avvia una connessione a un'istanza AlloyDB. Se utilizzi Private Service Connect per connetterti a un'istanza AlloyDB da più reti VPC, ogni rete ha il proprio amministratore.
dns.admin Concede il controllo completo sulle risorse Cloud DNS, inclusi record e zone DNS.
alloydb.admin Fornisce il controllo completo di un'istanza AlloyDB e la controlla durante il suo ciclo di vita.
alloydb.databaseUser (facoltativo) Fornisce l'accesso all'istanza AlloyDB. Se ti connetti tramite il client AlloyDB Auth Proxy, devi disporre del ruolo Client AlloyDB. Se esegui la connessione direttamente, non sono necessari ruoli e autorizzazioni IAM (Identity and Access Management).

Attivare Private Service Connect

L'attivazione di Private Service Connect prevede la creazione di un cluster AlloyDB con Private Service Connect configurato e poi di un'istanza AlloyDB con un elenco di progetti consentiti.

Crea un cluster principale AlloyDB

L'esempio seguente utilizza il comando gcloud alloydb clusters create con il flag --enable-private-service-connect che crea un cluster AlloyDB con Private Service Connect abilitato.

La procedura di creazione di un cluster rimane invariata, ad eccezione del passaggio del flag --enable-private-service-connect. Per informazioni dettagliate sulla creazione di un cluster, vedi Creare un cluster e la relativa istanza principale.

Per creare il cluster, utilizza il comando gcloud alloydb clusters create.

  gcloud alloydb clusters create CLUSTER_ID \
    --password=PASSWORD \
    --region=REGION_ID \
    --project=PROJECT_ID \
    --enable-private-service-connect

Sostituisci quanto segue:

  • CLUSTER_ID: l'ID del cluster che stai creando. Deve iniziare con una lettera minuscola e può contenere lettere minuscole, numeri e trattini.

  • PASSWORD: la password da utilizzare per l'utente postgres predefinito.

  • REGION_ID: la regione in cui vuoi collocare il cluster.

  • PROJECT_ID: l'ID del progetto dove vuoi posizionare il cluster.

Questo comando avvia un'operazione a lunga esecuzione, restituendo un ID operazione.

Un cluster secondario creato per un cluster principale abilitato per Private Service Connect eredita automaticamente la configurazione di Private Service Connect. Per ulteriori informazioni, vedi Creare un cluster secondario.

Crea un'istanza AlloyDB

L'esempio seguente mostra come creare un'istanza principale con un elenco di progetti consentiti configurati. La procedura di creazione di un'istanza rimane invariata, ad eccezione del passaggio dell'elenco dei progetti consentiti utilizzando il flag --allowed-psc-projects per un cluster principale abilitato per Private Service Connect.

Per ulteriori informazioni sulla creazione di altri tipi di istanze, vedi Creare un'istanza del pool di lettura e Creare un'istanza secondaria.

Per creare l'istanza principale, utilizza il comando gcloud alloydb instances create.

  gcloud alloydb instances create INSTANCE_ID \
      --instance-type=PRIMARY \
      --cpu-count=CPU_COUNT \
      --availability-type=AVAILABILITY \
      --region=REGION_ID \
      --cluster=CLUSTER_ID \
      --project=PROJECT_ID \
      --allowed-psc-projects=ALLOWED_PROJECT_LIST

Sostituisci quanto segue:

  • INSTANCE_ID: l'ID dell'istanza che stai creando. Deve iniziare con una lettera minuscola e può contenere lettere minuscole, numeri e trattini.
  • CPU_COUNT: il numero di vCPU che vuoi per l'istanza. I valori validi sono:
    • 2: 2 vCPU, 16 GB di RAM
    • 4: 4 vCPU, 32 GB di RAM
    • 8: 8 vCPU, 64 GB di RAM
    • 16: 16 vCPU, 128 GB di RAM
    • 32: 32 vCPU, 256 GB di RAM
    • 64: 64 vCPU, 512 GB di RAM
    • 96: 96 vCPU, 768 GB di RAM
    • 128: 128 vCPU, 864 GB di RAM
  • AVAILABILITY: indica se questa istanza deve essere di alta disponibilità (HA) con nodi in più zone. I valori validi includono:
    • REGIONAL: crea un'istanza HA con nodi attivi e di standby distinti e il failover automatico tra di essi. Questo è il valore predefinito, adatto per gli ambienti di produzione.
    • ZONAL: crea un'istanza di base contenente un solo nodo e senza failover automatico.
  • REGION_ID: la regione in cui vuoi posizionare l'istanza.
  • CLUSTER_ID: l'ID del cluster creato in precedenza.
  • ALLOWED_PROJECT_LIST: l'elenco separato da virgole degli ID progetto o del numero di progetto a cui vuoi consentire l'accesso all'istanza, ad esempio my-project-1, 12345,my-project-n.

Recupera il collegamento al servizio

Dopo aver creato un'istanza AlloyDB con Private Service Connect abilitato, recupera l'URL del collegamento di servizio e utilizzalo per creare l'endpoint Private Service Connect.

Utilizza il comando gcloud alloydb instances describe per visualizzare i dettagli di un'istanza.

gcloud alloydb instances describe INSTANCE_ID \
 --cluster=CLUSTER_ID --region=REGION_ID

Sostituisci quanto segue:

  • INSTANCE_ID: l'ID dell'istanza.
  • CLUSTER_ID: l'ID del cluster.
  • REGION_ID: la regione in cui è dipiegato il cluster AlloyDB.

Un esempio di risposta al comando è il seguente:

  "pscInstanceConfig": {
    "serviceAttachmentLink:": "https://www.googleapis.com/compute/v1/projects/my-project/regions/my-region/serviceAttachments/my-service-attachment-id"
        "allowedConsumerProjects": {
          "45678",
          "12345",
              "67890",
            },
            "pscDnsName": "11111111-1111-1111-1111-111111111111.22222222-2222-2222-2222-222222222222.alloydb-psc.goog."
          }

Il parametro pscServiceAttachmentLink contiene il valore dell'URL dell'allegato del servizio.

Creare un endpoint Private Service Connect

Per creare un endpoint Private Service Connect, passa l'URL dell'attacco del servizio insieme a un nome di endpoint univoco. Per ulteriori informazioni sulla creazione di un endpoint Private Service Connect, consulta Creare un endpoint.

Puoi anche prenotare un indirizzo IP interno per l'endpoint Private Service Connect utilizzando il comando gcloud compute addresses create e poi utilizzare l'indirizzo IP prenotato durante la creazione dell'endpoint.

Connettiti a un'istanza AlloyDB

Puoi connetterti a un'istanza AlloyDB con Private Service Connect abilitato utilizzando una delle seguenti opzioni:

  • un indirizzo IP interno
  • un record DNS
  • Proxy di autenticazione AlloyDB
  • Connettori dei linguaggi AlloyDB

La connessione tramite record DNS richiede la creazione di un record DNS in una zona DNS privata nella rete VPC corrispondente. Dopo aver creato un record DNS, puoi utilizzarlo per connetterti direttamente a un'istanza abilitata per Private Service Connect utilizzando un record DNS, AlloyDB Auth Proxy o i connettori dei linguaggi AlloyDB.

Configura una zona gestita DNS e un record DNS

Per configurare una zona gestita DNS e un record DNS nella tua rete:

  1. Per visualizzare informazioni di riepilogo su un'istanza AlloyDB, incluso il nome DNS dell'istanza, utilizza il comando gcloud alloydb instances describe:

    gcloud alloydb instances describe INSTANCE_ID \
    --project=CLUSTER_ID

    Sostituisci quanto segue:

    • INSTANCE_ID: l'ID dell'istanza.
    • CLUSTER_ID: l'ID del cluster.

    Nella risposta, verifica che venga visualizzato il nome DNS. Il nome DNS ha il pattern INSTANCE_UID.PROJECT_UID.REGION_NAME.alloydb-psc.goog..

  2. Per creare una zona DNS privata, utilizza il comando gcloud dns managed-zones create. Questa zona è associata alla rete VPC utilizzata per connettersi all'istanza AlloyDB 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

    Sostituisci quanto segue:

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

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

    Sostituisci quanto segue:

    • 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).

Eseguire la connessione direttamente utilizzando un record DNS

Dopo aver creato un endpoint Private Service Connect e un record DNS, puoi connetterti direttamente utilizzando il record DNS.

  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

    Sostituisci quanto segue:

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

    psql user=USERNAME host=DNS_RECORD

    Sostituisci quanto segue:

    • USERNAME: il nome dell'utente che si connette all'istanza.
    • DNS_RECORD: il record DNS dell'endpoint.

Connettiti utilizzando il proxy di autenticazione AlloyDB

AlloyDB Auth Proxy è un connettore che ti consente di stabilire connessioni criptate e autorizzate ai database AlloyDB. Il proxy di autenticazione AlloyDB funziona con un client locale in esecuzione nell'ambiente locale. L'applicazione comunica con il proxy di autenticazione AlloyDB con il protocollo di database standard utilizzato dal database.

Quando imposti il flag --psc durante l'avvio del client Auth Proxy, AlloyDB Auth Proxy utilizza il record DNS che hai creato per connettersi all'istanza abilitata per Private Service Connect.

Assicurati di avviare il client Auth Proxy passando l'URI dell'istanza recuperato utilizzando il comando gcloud alloydb instances list e imposta il flag --psc.

Per ulteriori informazioni su come connetterti a un'istanza utilizzando il proxy di autenticazione, consulta Eseguire la connessione utilizzando il proxy di autenticazione.

Eseguire la connessione utilizzando i connettori dei linguaggi AlloyDB

I connettori dei linguaggi AlloyDB sono librerie che forniscono mTLS automatico con TLS 1.3 e autorizzazione Identity and Access Management (IAM) quando ti connetti a un'istanza AlloyDB.

Dopo che Language Connector ha stabilito che l'istanza supporta Private Service Connect, utilizza il record DNS che hai creato per connettersi all'istanza.

Java

Se utilizzi Private Service Connect per connetterti all'istanza AlloyDB, includere quanto segue:

config.addDataSourceProperty("alloydbIpType", "PSC");

Per ulteriori informazioni sull'utilizzo dell'endpoint Private Service Connect nei connettori di lingua Java, consulta il repository GitHub.

Python (pg8000)

Se utilizzi Private Service Connect per connetterti all'istanza AlloyDB, includere quanto segue:

  def getconn() -> pg8000.dbapi.Connection:
      conn: pg8000.dbapi.Connection = connector.connect(
          inst_uri,
          "pg8000",
          user=user,
          password=password,
          db=db,
          # use ip_type to specify PSC
          ip_type=IPTypes.PSC,
      )
      return conn

Per ulteriori informazioni sull'utilizzo dell'endpoint Private Service Connect nei connettori di lingua Python, consulta il repository GitHub.

Python (asyncpg)

Se utilizzi Private Service Connect per connetterti all'istanza AlloyDB, includere quanto segue:

  async def getconn() -> asyncpg.Connection:
    conn: asyncpg.Connection = await connector.connect(
        inst_uri,
        "asyncpg",
        user=user,
        password=password,
        db=db,
        # use ip_type to specify PSC
        ip_type=IPTypes.PSC,
    )
    return conn

Per ulteriori informazioni sull'utilizzo dell'endpoint Private Service Connect nei connettori di lingua Python, consulta il repository GitHub.

Go (pgx)

Se utilizzi Private Service Connect per connetterti all'istanza AlloyDB, includere quanto segue:

d.Dial(ctx, instURI, alloydbconn.WithPSC())

Per ulteriori informazioni sull'utilizzo dell'endpoint Private Service Connect nei connettori per il linguaggio Go, consulta il repository GitHub.

Go (database/SQL)

Se utilizzi Private Service Connect per connetterti all'istanza AlloyDB, includere quanto segue:

  cleanup, err := pgxv5.RegisterDriver(
    "alloydb",
    alloydbconn.WithDefaultDialOptions(alloydbconn.WithPSC())
)

Per ulteriori informazioni sull'utilizzo dell'endpoint Private Service Connect nei connettori per il linguaggio Go, consulta il repository GitHub.

Connettiti direttamente tramite un indirizzo IP interno

Dopo aver creato un endpoint Private Service Connect, puoi connetterti direttamente a un'istanza AlloyDB utilizzando l'indirizzo IP configurato.

  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

    Sostituisci quanto segue:

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

    psql user=USERNAME hostaddr=IP_ADDRESS"

    Sostituisci quanto segue:

    • USERNAME: il nome dell'utente che si connette all'istanza.
    • IP_ADDRESS: l'indirizzo IP dell'endpoint.

Limitazioni

  • Puoi configurare fino a 20 endpoint Private Service Connect che si connettono al collegamento al servizio di un'istanza AlloyDB con Private Service Connect abilitato.
  • Non puoi utilizzare il flag --network quando crei un cluster abilitato per Private Service Connect perché è associato all'accesso ai servizi privati.
  • Non puoi attivare o disattivare Private Service Connect in un'istanza esistente.
  • Non puoi configurare un'istanza in cui è abilitato Private Service Connect per utilizzare l'accesso ai servizi privati.
  • Le estensioni pglogical, dblink e postgres_fdw che richiedono la connettività in uscita non sono supportate.