Connettiti a PostgreSQL
In qualità di amministratore di BigQuery, puoi creare una connessione per accedere ai dati PostgreSQL. Questa connessione consente agli analisti di dati di eseguire query sui dati in PostgreSQL.
Ambienti e versioni PostgreSQL supportati
La federazione di BigQuery supporta i seguenti ambienti di deployment PostgreSQL:
- Istanze PostgreSQL on-premise connesse a Google Cloud tramite Cloud VPN o Cloud Interconnect
- Istanze PostgreSQL autogestite su Compute Engine
- Istanze PostgreSQL ospitate nel cloud accessibili tramite indirizzi IP pubblici o collegamenti di rete
La federazione di BigQuery supporta le seguenti versioni di PostgreSQL:
- PostgreSQL 16 (consigliato)
- PostgreSQL 15
Prima di iniziare
Abilita le API necessarie, configura il database PostgreSQL e concedi i ruoli di Identity and Access Management che forniscono agli utenti le autorizzazioni necessarie per eseguire ogni attività in questo documento.
Abilita l'API BigQuery Connection.
Se prevedi di instradare il traffico attraverso reti private utilizzando i collegamenti di rete, abilita anche l'API Compute Engine.
Nel tuo database PostgreSQL, crea un utente del database dedicato con privilegi
SELECTsulle tabelle o sullo schema su cui intendi eseguire query:CREATE USER USER_NAME WITH PASSWORD 'PASSWORD'; GRANT USAGE ON SCHEMA SCHEMA_NAME TO USER_NAME; GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO USER_NAME;
Sostituisci quanto segue:
USER_NAME: il nome utente dell'utente del database.PASSWORD: la password dell'utente del database.SCHEMA_NAME: lo schema delle tabelle su cui vuoi eseguire query.
Configura la connessione di rete all'istanza del database PostgreSQL eseguendo una delle seguenti operazioni:
- Se il traffico viene instradato tramite reti private, crea un collegamento di rete nella stessa regione della connessione BigQuery. Il peering DNS non è supportato. Connettiti utilizzando un indirizzo IP o un nome host risolvibile all'interno della tua rete VPC.
- Se ti connetti tramite internet pubblico, aggiungi tutti gli intervalli di indirizzi IP di Google alle regole firewall del tuo database PostgreSQL.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per connetterti a PostgreSQL, chiedi all'amministratore di concederti i seguenti ruoli IAM:
-
Per creare una connessione:
BigQuery Connection Admin (
roles/bigquery.connectionAdmin) sul progetto -
Per configurare i collegamenti di rete:
Compute Admin (
roles/compute.admin) sul progetto
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Connetti BigQuery a PostgreSQL
Puoi connettere BigQuery a PostgreSQL nella consoleGoogle Cloud o nello strumento a riga di comando bq.
Console
Nella console Google Cloud , vai alla pagina BigQuery.
Nel riquadro Explorer, fai clic su Aggiungi dati.
Viene visualizzata la pagina Aggiungi dati.
Nel riquadro Filtra per, nella sezione Tipo di origine dati, seleziona Database.
In alternativa, nel campo Cerca origini dati, inserisci
postgresql.Nella sezione Origini dati in primo piano, fai clic su PostgreSQL.
Nella sezione Accedi ai dati esterni in loco, fai clic sulla scheda della soluzione Federazione di BigQuery con la descrizione Query federate su PostgreSQL (non sulle schede Cloud SQL o AlloyDB per PostgreSQL).
Viene visualizzato il riquadro Origine dati esterna.
Nel riquadro Origine dati esterna, configura quanto segue:
- Nel campo ID connessione, inserisci un ID connessione univoco (ad esempio
postgres_prod_conn). - Nella sezione Tipo di località, seleziona Regione, quindi seleziona la regione in cui si trova il set di dati BigQuery. Le query che utilizzano questa connessione devono essere eseguite da questa regione.
- (Facoltativo) Nel campo Nome descrittivo, inserisci un nome descrittivo per la connessione.
- (Facoltativo) Nel campo Descrizione, inserisci una descrizione per questa risorsa di connessione.
- Nella sezione Crittografia, seleziona Google-managed encryption key o Chiave Cloud KMS per utilizzare una chiave di crittografia gestita dal cliente (CMEK).
- Nel campo Host:porta, inserisci l'host e la porta del server di database PostgreSQL nel formato
HOST:PORT(ad esempio10.10.2.2:5432). - Nel campo Nome utente, inserisci l'utente del database che hai creato nei prerequisiti.
- Nel campo Password, inserisci la password dell'utente del database.
- Nel campo Database, inserisci il nome del database PostgreSQL.
- (Facoltativo) Nel campo Collegamento di rete, se utilizzi la connettività privata, inserisci il percorso della risorsa del collegamento di rete nel formato
projects/PROJECT_ID/regions/NA_REGION/networkAttachments/ATTACHMENT_NAME. - Nell'elenco Modalità TLS, seleziona una delle modalità TLS supportate (ad esempio, Crittografa i dati, verifica la CA e il nome host (opzione consigliata)).
- Nell'elenco Autorità di certificazione (CA), seleziona CA pubblica (Web PKI) o seleziona una CA personalizzata e incolla il certificato in formato PEM.
- Nel campo ID connessione, inserisci un ID connessione univoco (ad esempio
Fai clic su Crea connessione.
bq
Utilizza il comando bq mk con il flag --connection:
bq mk --connection \ --location=LOCATION \ --project_id=PROJECT_ID \ --connector_configuration '{ "connector_id": "postgresql", "endpoint": { "host_port": "HOST_PORT" }, "asset": { "database": "DATABASE" }, "authentication": { "username_password": { "username": "USERNAME", "password": { "plaintext": "PASSWORD" } } }, "tls": { "mode": "TLS_MODE" }, "network": { "private_service_connect": { "network_attachment": "projects/PROJECT_ID/regions/NA_REGION/networkAttachments/ATTACHMENT_NAME" } } }' \ CONNECTION_ID
Sostituisci quanto segue:
LOCATION: la regione BigQuery (ad esempious-central1) corrispondente al set di dati su cui vuoi eseguire query insieme a PostgreSQL. Le query che utilizzano questa connessione devono essere eseguite da questa regione.PROJECT_ID: il tuo ID progetto Google Cloud .HOST_PORT: l'host e la porta del server del database PostgreSQL nel formatoHOST:PORT(ad esempio,10.10.2.2:5432).DATABASE: il nome del database PostgreSQL.USERNAME: l'utente del database PostgreSQL.PASSWORD: la password dell'utente del database.TLS_MODE: la modalità di crittografia TLS (ENCRYPT_VERIFY_CA_AND_HOST,ENCRYPT_VERIFY_CA,ENCRYPT_VERIFY_NONEoDISABLE). Se utilizzi un certificato CA personalizzato conENCRYPT_VERIFY_CA_AND_HOSToENCRYPT_VERIFY_CA, includi l'oggetto"private_pki": { "trusted_certificates_pem": "CERT_CONTENT" }in"tls".NA_REGION: la regione in cui si trova il collegamento di rete.ATTACHMENT_NAME: il nome del tuo collegamento di rete. Se la connessione avviene tramite IP pubblico, ometti l'oggetto"network".CONNECTION_ID: l'identificatore univoco di questa connessione.- (Facoltativo)
--kms_key_name=KMS_KEY_NAME: una chiave di crittografia gestita dal cliente (CMEK). Se omesso, le credenziali sono protette dal valore predefinito Google-owned and Google-managed encryption key.
Configurazione TLS (Transport Layer Security)
Il connettore PostgreSQL supporta Transport Layer Security (TLS) per criptare il traffico delle query in transito tra BigQuery e il tuo database PostgreSQL.Quando connetti BigQuery a PostgreSQL, seleziona una delle seguenti modalità TLS:
Crittografa i dati e verifica l'autorità di certificazione (CA) e il nome host (modalità
ENCRYPT_VERIFY_CA_AND_HOST). Esegue la convalida completa del server utilizzando TLS. Crittografa tutti i dati in transito, verifica che il certificato del server di database sia firmato da una CA attendibile e controlla che il nome host a cui ti connetti corrisponda al nome comune (CN) o al nome alternativo del soggetto (SAN) nel certificato. Obbligatorio per le connessioni su IP pubblici.Crittografa i dati e verifica solo la CA (modalità
ENCRYPT_VERIFY_CA). Crittografa tutti i dati in transito e verifica che il certificato del server sia firmato da una CA attendibile, ma non verifica il nome host del server. Utilizza questa modalità se il certificato del server è firmato da una CA attendibile, ma ti connetti utilizzando un indirizzo IP o un nome host che non corrisponde al CN o al SAN del certificato.Solo crittografia (modalità
ENCRYPT_VERIFY_NONE). Crittografa tutti i dati trasferiti tra BigQuery e il server. Non esegue la verifica del certificato o del nome host. Consigliato solo all'interno di VPC privati.Nessuna crittografia o verifica (modalità
DISABLE). Non cripta i dati e non esegue la verifica del certificato o del nome host. Consentito solo quando la connessione avviene tramite collegamenti di rete privati all'interno di reti VPC protette.
Certificati server attendibili in formato PEM
Se utilizzi la modalità ENCRYPT_VERIFY_CA_AND_HOST o la modalità ENCRYPT_VERIFY_CA, segui questi passaggi:
- Se il certificato del server di database è firmato da una CA pubblica (come quelle incluse nel programma Mozilla Root CA, tra cui Let's Encrypt, DigiCert o Google Trust Services), non è necessario fornire un certificato. I certificati radice per le CA pubbliche sono considerati attendibili per impostazione predefinita.
- Se utilizzi un certificato firmato da una CA interna o privata all'interno della tua organizzazione o un certificato autofirmato, devi fornire la catena di certificati completa in formato PEM (Privacy-Enhanced Mail) nel campo Certificato PEM attendibile durante la configurazione della connessione.
Condividi le connessioni con gli utenti
Puoi concedere i seguenti ruoli per consentire agli utenti di eseguire query sui dati e gestire le connessioni:
roles/bigquery.connectionUser: consente agli utenti di utilizzare le connessioni per connettersi a origini dati esterne ed eseguire query su di esse.roles/bigquery.connectionAdmin: consente agli utenti di gestire le connessioni.
Per saperne di più sui ruoli e sulle autorizzazioni IAM in BigQuery, consulta Ruoli e autorizzazioni predefiniti.
Seleziona una delle seguenti opzioni:
Console
Vai alla pagina BigQuery.
Le connessioni sono elencate nel progetto, in un gruppo denominato Connessioni.
Nel riquadro a sinistra, fai clic su Spazio di esplorazione:

Se non vedi il riquadro a sinistra, fai clic su Espandi riquadro sinistro per aprirlo.
Fai clic sul progetto, su Connessioni e poi seleziona una connessione.
Nel riquadro Dettagli, fai clic su Condividi per condividere una connessione. Quindi:
Nella finestra di dialogo Autorizzazioni di connessione, condividi la connessione con altre entità aggiungendole o modificandole.
Fai clic su Salva.
bq
Non puoi condividere una connessione con lo strumento a riga di comando bq. Per condividere una connessione, utilizza la console Google Cloud o il metodo dell'API BigQuery Connections.
API
Utilizza il metodo projects.locations.connections.setIAM nella sezione di riferimento dell'API REST BigQuery Connections e fornisci un'istanza della risorsa policy.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Java.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.
Prezzi
Le query e le connessioni federate sono soggette ai seguenti addebiti:
- Si applicano i prezzi standard delle query federate.
- L'utilizzo di VPC è soggetto ai prezzi di Virtual Private Cloud.
- L'utilizzo di Cloud VPN è soggetto ai prezzi di Cloud VPN.
- L'utilizzo di Cloud NAT è soggetto ai prezzi di Cloud NAT.
Passaggi successivi
- Scopri di più sui diversi tipi di connessione.
- Scopri di più sulla gestione delle connessioni.
- Scopri come eseguire query sui dati PostgreSQL.