GoogleCloudPlatform / cloudsql-proxy

CIGo Reference

Il Cloud SQL Auth proxy è un file binario che fornisce l’autorizzazione e la crittografia basate su I durante la connessione a un’istanza Cloud SQL.

Vedere la pagina Panoramica di connessione per ulteriori informazioni sulla connessione a un’istanza SQL cloud o la pagina Informazioni sul proxy per i dettagli su come funziona il proxy SQL Cloud.

Nota: Il proxy non può fornire un percorso di rete a un’istanza SQL Cloud se non è già presente (ad esempio, il proxy non può accedere a un VPC se non ha già accesso ad esso).

Installazione

Per Linux a 64 bit, esegui:

wget https://storage.googleapis.com/cloudsql-proxy/v1.19.2/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxychmod +x cloud_sql_proxy

Rilasci per sistemi operativi aggiuntivi e architetture e si trovano nella pagina releasespage.

Per le distribuzioni alternative, vedi sotto in terze parti.

Immagini contenitore

Sono disponibili versioni containerizzate del proxy nei seguenti repository del registro di sistema del contenitore cloud di followingGoogle:

  • gcr.io/cloudsql-docker/gce-proxy
  • us.gcr.io/cloudsql-docker/gce-proxy
  • eu.gcr.io/cloudsql-docker/gce-proxy
  • asia.gcr.io/cloudsql-docker/gce-proxy

Ogni immagine è contrassegnata con la versione proxy associata. Seguenti tag arecurrently supportato:

  • $VERSION – immagine di default (consigliato)
  • $VERSION-alpine – utilizza alpine:3come un immagine di base (supportato solo da v1.17)
  • $VERSION-buster – utilizza debian:bustercome un immagine di base (supportato solo da v1.17)

Si consiglia di utilizzare la versione più recente del proxy e l’aggiornamento del versionregularly. Tuttavia, si consiglia anche di appuntare a un tag specifico ed evitare thelatest tag. Nota: la versione taggata è solo quella del proxy. Le modifiche nelle immagini di base possono interrompere configurazioni specifiche, anche su incrementi di versione non principali. Pertanto, è consigliabile testare le modifiche prima della distribuzione e utilizzare automatedrollbacks per ripristinare potenziali errori.

Installa dalla sorgente

Per installare dalla sorgente, assicurarsi di avere l’ultima versione di Goinstalled.

Quindi, esegui semplicemente:

go get github.com/GoogleCloudPlatform/cloudsql-proxy/cmd/cloud_sql_proxy

cloud_sql_proxy verrà inserito in $GOPATH/bin dopo il completamento di go get.

Usage

Tutte le seguenti invocazioni presuppongono che le credenziali valide siano presenti nell’ambiente. I seguenti esempi fanno riferimento a un INSTANCE_CONNECTION_NAME, che assume la forma: myproject:myregion:myinstance. Per trovareINSTANCE_CONNECTION_NAME, eseguire gcloud sql instances describe <INSTANCE_NAME> dove INSTANCE_NAME è il nome dell’istanza del database.

Esempio di socket TCP

# Starts the proxy listening on 127.0.0.1:5432cloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:5432
# Starts the proxy listening on on port 5432 on *all* interfacescloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:0.0.0.0:5432

Esempio di socket Unix

# The proxy will mount a Unix domain socket at /cloudsql/<INSTANCE_CONNECTION_NAME># Note: The directory specified by `-dir` must exist.cloud_sql_proxy -dir=/cloudsql -instances=<INSTANCE_CONNECTION_NAME>

Esempio IP privato

cloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:5432 -ip_address_types=PRIVATE

Per connettersi utilizzando IP privato, è necessario avere accesso tramite VPC di yourproject. Per ulteriori dettagli, vedere Requisiti IP privati.

Credenziali

Il proxy SQL Cloud utilizza un account Cloud I per autorizzare le connessioni contro l’istanza SQL di aCloud. Il proxy fornisce le credenziali per questi account nell’ordine seguente:

  1. Il flag -credential_file
  2. Il flag -token
  3. La chiave dell’account del servizio nel percorso memorizzato nella variabile di ambienteGOOGLE_APPLICATION_CREDENTIALS.
  4. Le credenziali utente gcloud (impostate da gcloud auth login)
  5. Le credenziali predefinite dell’applicazione

Nota: qualsiasi account che si connette a un database SQL cloud avrà bisogno di uno dei seguenti ruoli roles:

  • Cloud SQL Client (preferito)
  • Cloud SQL Editor
  • Cloud SQL Admin

Oppure si possono assegnare manualmente le seguenti autorizzazioni I:

  • cloudsql.instances.connect
  • cloudsql.instances.get

Vedere Ruoli e autorizzazioni in Cloud SQL per i dettagli.

Quando il proxy si autentica sotto serviceaccount predefinito della VM di Compute Engine, la VM deve avere almeno l’ambito API sqlservice.admin (cioè”https://www.googleapis.com/auth/sqlservice.admin”) e il progetto associato deve avere l’API SQL Admin abilitata. Anche l’account di servizio predefinito deve averealmeno privilegi di writer o editor per qualsiasi progetto di istanze SQL di destinazione.

Flag CLI

Il proxy di autenticazione SQL cloud richiede alcuni argomenti per configurare le istanze da connectto e il comportamento della connessione. Per un elenco completo dei flag supportati dal proxy,utilizzare cloud_sql_proxy -help.

Flag di autenticazione

-credential_file

Specifica il percorso di un account di servizio JSON chiave il proxy utilizza per autorizzare o autenticare le connessioni.

-token

Quando impostato, il proxy utilizza questo token Bearer per l’autorizzazione.

-enable_iam_login

Consente al proxy di utilizzare l’autenticazione del database Cloud SQL SQL. Ciò farà sì che il proxy utilizzi le credenziali dell’account I per l’autenticazione dell’utente del database. Fordetails, vedere Panoramica di Cloud SQL authentication database authentication

Flag di connessione

-instances="project1:region:instance1,project3:region:instance1"

Un elenco separato da virgole di istanze da aprire all’interno di -dir. Supporta anche l’esportazione di una porta TCP e la ridenominazione dei socket di dominio Unix predefiniti; vedere examplesbelow. Lo stesso elenco può essere fornito tramite la variabile d’ambiente ISTANZE, nel casoquando entrambi sono forniti-proxy utilizzerà il flag della riga di comando.

Esempio

Utilizzando i socket TCP:

./cloud_sql_proxy -instances=my-project:us-central1:sql-inst=tcp:3306 &mysql -u root -h 127.0.0.1

Utilizzando socket Unix:

./cloud_sql_proxy -dir=/cloudsql -instances=my-project:us-central1:sql-inst &mysql -u root -S /cloudsql/my-project:us-central1:sql-inst

personalizzata Di specificare il nome del socket Unix:

./cloud_sql_proxy -dir=/cloudsql \ -instances=my-project:us-central1:sql-inst=unix:custom_socket_name &mysql -u root -S /cloudsql/custom_socket_name

Per specificare un percorso personalizzato per un socket Unix (sostituisce -dir):

./cloud_sql_proxy -dir=/cloudsql \ -instances=my-project:us-central1:sql-inst=unix:/my/custom/sql-socket &mysql -u root -S /my/custom/sql-socket

-fuse

Richiede l’accesso a /dev/fuse e il fusermount binario. Un flag-fuse_tmp opzionale può specificare dove posizionare i file temporanei. Il directoryindicated da -dir è montato.

Esempio

Utilizzando -fuse, non è necessario specificare i nomi delle istanze in anticipo:

./cloud_sql_proxy -dir=/cloudsql -fuse &mysql -u root -S /cloudsql/my-project:us-central1:sql-inst

-instances_metadata=metadata_key

Utilizzabile solo su GCE. La chiave di metadati GCE data verrà rimossa per un elenco di istanze da aprire in -dir. La chiave dei metadati è relativada computeMetadata/v1/. Il formato per il valore è lo stesso del flag’ instances’. Viene utilizzata una strategia di sondaggio sospeso, il che significa che le modifiche al valore themetadata si rifletteranno in -dir anche mentre il proxy è in esecuzione.Quando un’istanza viene rimossa dall’elenco, il socket corrispondente verrà rimosso anche da -dir (a meno che non sia stato specificato anche in -instances), ma tutte le connessioni esistenti a questa istanza NON verranno terminate.

Esempio

./cloud_sql_proxy -dir=/cloudsql \ -instances_metadata instance/attributes/<custom-metadata-key> &mysql -u root -S /cloudsql/my-project:us-central1:sql-inst

Nota: -instances e -instances_metadata possono essere utilizzati contemporaneamente ma non sono compatibili con il flag -fuse.

-max_connections

Se previsto, il numero massimo di connessioni da stabilire prima di rifiutare newconnections. Il valore predefinito è 0 (nessun limite).

Flag aggiuntivi

-ip_address_types=PUBLIC,PRIVATE

Un elenco delimitato da virgole di tipi di IP preferiti per la connessione a un’istanza. Ad esempio, impostando questo su PRIVATO, il proxy forzerà la connessione a instancesusing IP privato associato a un’istanza. Predefinito a PUBLIC,PRIVATE

-term_timeout=30s

Quanto tempo attendere la chiusura delle connessioni prima di arrestare il proxy.Il valore predefinito è 0.

-skip_failed_instance_config

L’impostazione di questo flag impedirà al proxy di terminare se si verificano errori durante la configurazione dell’istanza. Si noti che ciò significa che alcune istanze possono essere impostate correttamente mentre altre potrebbero funzionare se il proxy viene riavviato.

-log_debug_stdout=true

Questo è per registrare l’output non di errore su standard out invece di errore standard. Ad esempio, se non si desidera che i messaggi relativi alla connessione registrino come errori, impostare questo flag su true. Il valore predefinito è false.

-structured_logs

Scrive tutti gli output di registrazione come JSON con i seguenti tasti: livello, ts,chiamante, msg. Ad esempio, il messaggio di avvio è simile a:

{"level":"info","ts":1616014011.8132386,"caller":"cloud_sql_proxy/cloud_sql_proxy.go:510","msg":"Usinggcloud's active project: "}

Esecuzione come Sidecar Kubernetes

Vedere l’esempio qui così come la connessione dal motore GoogleKubernetes.

Documentazione di riferimento

  • Cloud SQL
  • Cloud SQL Auth proxy Documentation
  • Cloud SQL Auth proxy Quickstarts
  • Cloud SQL Code Samples
  • Cloud SQL Auth proxy Package Documentation

Contributing

I contributi sono benvenuti. Si prega di consultare il documento di contributoper i dettagli.

Si prega di notare che questo progetto è rilasciato con un codice collaboratore di Conduct.By partecipando a questo progetto accetti di rispettare i suoi termini. Per ulteriori informazioni, consultare il Codice di condotta del contribuente.

Terze parti

ATTENZIONE: queste distribuzioni non sono ufficialmente supportate da Google.

Homebrew

Qui è disponibile la formula Homebrew per il proxy di autenticazione SQL cloud.

Kubernetes Cluster Service utilizzando Helm

Seguire queste istruzioni.

Questo grafico crea una distribuzione e un servizio, ma si consiglia di distribuire theproxy come contenitore sidecar nei pod.

. Net Proxy Wrapper (pacchetto Nuget)

Installa tramite Nuget, segui queste istruzioni.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.