GoogleCloudPlatform / cloudsql-proxy
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
- Immagini contenitore
- Installa dalla sorgente
- Usage
- Esempio di socket TCP
- Esempio di socket Unix
- Esempio IP privato
- Credenziali
- Flag CLI
- Flag di autenticazione
- -credential_file
- -token
- -enable_iam_login
- Flag di connessione
- -instances="project1:region:instance1,project3:region:instance1"
- -fuse
- -instances_metadata=metadata_key
- -max_connections
- Flag aggiuntivi
- -ip_address_types=PUBLIC,PRIVATE
- -term_timeout=30s
- -skip_failed_instance_config
- -log_debug_stdout=true
- -structured_logs
- Esecuzione come Sidecar Kubernetes
- Documentazione di riferimento
- Contributing
- Terze parti
- Homebrew
- Kubernetes Cluster Service utilizzando Helm
- . Net Proxy Wrapper (pacchetto Nuget)
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
– utilizzaalpine:3
come un immagine di base (supportato solo da v1.17) -
$VERSION-buster
– utilizzadebian:buster
come 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:
- Il flag
-credential_file
- Il flag
-token
- La chiave dell’account del servizio nel percorso memorizzato nella variabile di ambiente
GOOGLE_APPLICATION_CREDENTIALS
. - Le credenziali utente gcloud (impostate da
gcloud auth login
) - 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.