Panoramica di PGAdapter

Questa pagina fornisce una panoramica di PGAdapter. Per informazioni su come avviare PGAdapter, consulta Avviare PGAdapter.

PGAdapter è un proxy sidecar che supporta l' interfaccia PostgreSQL per Spanner. Viene eseguito sulla stessa macchina dell'applicazione ed espone un endpoint su localhost che supporta il protocollo di cavo PostgreSQL. Traduce il protocollo con cavo PostgreSQL nel protocollo di cavo Spanner, gRPC. Con questo proxy in esecuzione in locale, un client PostgreSQL come psql può connettersi a un database Spanner Spanner con dialetto PostgreSQL.

Il seguente diagramma mostra come psql si connette a Spanner tramite PGAdapter.

psql si connette a Spanner tramite PGAdapter

PGAdapter supporta le modalità di query semplice ed estesa e qualsiasi tipo di dati supportato dall'interfaccia PostgreSQL per Spanner.

Ambienti di esecuzione di PGAdapter

Puoi eseguire PGAdapter utilizzando uno dei seguenti metodi:

  • Autonomi. PGAdapter viene fornito come file JAR e viene eseguito in modalità autonoma nella JVM.
  • Docker. PGAdapter è pacchettizzato anche come immagine Docker.
  • Cloud Run. PGAdapter può essere distribuito come proxy sidecar in Cloud Run.
  • Proxy sidecar. Un utilizzo tipico come proxy sidecar è in un cluster Kubernetes.
  • In corso. Il codice dell'applicazione Java può utilizzare il file JAR fornito per creare e avviare un'istanza PGAdapter.

Per maggiori dettagli su questi metodi, consulta Avviare PGAdapter.

Autorizzazione con PGAdapter

PGAdapter determina l'account di servizio o un'altra entità di Identity and Access Management (IAM) da utilizzare per la connessione esaminando le credenziali specificate all'avvio. Le autorizzazioni IAM concesse a quell'entità determinano le autorizzazioni di cui l'applicazione di connessione dispone sul database.

Quando è in uso un controllo dell'accesso granulare, puoi specificare facoltativamente un ruolo del database all'avvio di PGAdapter. Se specifichi un ruolo del database, PGAdapter utilizza un controllo dell'accesso granulare quando invia richieste per query e istruzioni DML. Ciò richiede l'autorizzazione IAM spanner.databases.useRoleBasedAccess e, per i ruoli del database diversi da public, l'autorizzazione spanner.databaseRoles.use. I privilegi concessi al ruolo di database determinano le operazioni che l'applicazione di connessione può eseguire. Se non specifichi un ruolo del database, vengono utilizzate le autorizzazioni a livello di database concesse all'entità IAM. Per eseguire istruzioni DDL, l'entità deve avere l'autorizzazione spanner.databases.updateDdl.

Per ulteriori informazioni, consulta Informazioni sul controllo dell'accesso granulare e Controllo dell'accesso con IAM.

Passaggi successivi