GoogleCloudPlatform / cloudsql-proxy
Cloud SQL auth proxy este un binar care oferă iam-basedauthorization și criptare atunci când se conectează la o instanță Cloud SQL.
consultați pagina Prezentare generală conectare pentru mai multe informații despre conectarea la o instanță Cloud SQL sau despre pagina proxy pentru detalii despre modul în care funcționează proxy-ul Cloud SQL.
notă: Proxy-ul nu poate furniza o cale de rețea către o instanță Cloud SQL dacă oneis nu este deja prezent (de exemplu, proxy-ul nu poate accesa un VPC dacă nu are deja acces la acesta).
- instalare
- imagini Container
- Install from Source
- utilizare
- exemplu de soclu TCP
- exemplu socket Unix
- exemplu IP privat
- acreditări
- steaguri CLI
- steaguri de autentificare
- -credential_file
- -token
- -enable_iam_login
- steaguri de conectare
- -instances="project1:region:instance1,project3:region:instance1"
- -fuse
- -instances_metadata=metadata_key
- -max_connections
- steaguri suplimentare
- -ip_address_types=PUBLIC,PRIVATE
- -term_timeout=30s
- -skip_failed_instance_config
- -log_debug_stdout=true
- -structured_logs
- rularea ca un Sidecar Kubernetes
- documentație de referință
- contribuind
- terță parte
- Homebrew
- Kubernetes Cluster service folosind Helm
- . Net Proxy Wrapper (Pachetul Nuget)
instalare
Pentru Linux pe 64 de biți, executați:
wget https://storage.googleapis.com/cloudsql-proxy/v1.19.2/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxychmod +x cloud_sql_proxy
versiuni pentru OS suplimentare și arhitecturi și să fie găsite pe releasespage.
pentru distribuții alternative, a se vedea mai jos sub terță parte.
imagini Container
există versiuni containerizate ale proxy-ului disponibile din următoarele depozite de registru de containere Google Cloud:
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
fiecare imagine este etichetată cu versiunea proxy asociată. Următoarele etichete sunt acceptate în prezent:
-
$VERSION
– imagine implicită (recomandată) -
$VERSION-alpine
– utilizeazăalpine:3
ca imagine de bază (acceptată numai de la v1. 17 în sus) -
$VERSION-buster
– utilizeazădebian:buster
ca imagine de bază (acceptată numai de la v1. 17 în sus)
vă recomandăm să utilizați cea mai recentă versiune a proxy-ului și să actualizați versiuneaîn mod regulat. Cu toate acestea, vă recomandăm, de asemenea, să fixați o anumită etichetă și să evitațiultima etichetă. Notă: Versiunea etichetată este doar cea a proxy-ului. Modificările în baseimages pot întrerupe anumite setări, chiar și în cazul incrementelor de versiune non-majore. Ca atare, este o bună practică pentru a testa modificările înainte de implementare, și de a folosi automatedrollbacks pentru a reveni potențiale eșecuri.
Install from Source
pentru a instala from source, asigurați-vă că aveți cea mai recentă versiune de Goinstalled.
apoi, pur și simplu rulați:
go get github.com/GoogleCloudPlatform/cloudsql-proxy/cmd/cloud_sql_proxy
cloud_sql_proxy
va fi plasat în $GOPATH/bin
după terminarea go get
.
utilizare
toate invocările următoare presupun acreditări valide sunt prezente în mediu. Următoarele exemple fac referire la un INSTANCE_CONNECTION_NAME
, care ia forma: myproject:myregion:myinstance
. Pentru a găsiINSTANCE_CONNECTION_NAME
, executați gcloud sql instances describe <INSTANCE_NAME>
unde INSTANCE_NAME
este numele instanței bazei de date.
exemplu de soclu 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
exemplu 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>
exemplu IP privat
cloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:5432 -ip_address_types=PRIVATE
pentru a vă conecta utilizând IP privat, trebuie să aveți acces prin VPC-ul yourproject. Pentru mai multe detalii, consultați Cerințe IP Private.
acreditări
proxy-ul Cloud SQL utilizează un cont Cloud iam pentru a autoriza conexiunile împotriva instanței ACLOUD SQL. Proxy-ul furnizează acreditările pentru aceste conturi în ordinea următoare:
- steagul
-credential_file
- steagul
-token
- cheia contului de serviciu la calea stocată în variabila de mediu
GOOGLE_APPLICATION_CREDENTIALS
. - acreditările utilizatorului gcloud (setate din
gcloud auth login
) - acreditările implicite ale aplicației
notă: orice cont care se conectează la o bază de date Cloud SQL va avea nevoie de unul dintre următoarele roluri IAM:
- Cloud SQL Client (preferat)
- Cloud SQL Editor
- Cloud SQL Admin
sau se poate atribui manual următoarele permisiuni IAM:
cloudsql.instances.connect
cloudsql.instances.get
consultați roluri și permisiuni în Cloud SQL pentru detalii.
când proxy autentifică sub Compute Engine vm implicit serviceaccount, VM trebuie să aibă cel puțin sqlservice.admin
API domeniul de aplicare (de exemplu,”https://www.googleapis.com/auth/sqlservice.admin”) și projectmust asociate au SQL Admin API activat. Contul de serviciu implicit trebuie să aibăcel puțin privilegii de scriitor sau editor pentru orice proiecte de instanțe SQL țintă.
steaguri CLI
proxy-ul Cloud SQL AUTH are câteva argumente pentru a configura ce instanțe să se conecteze și comportamentul conexiunii. Pentru o listă completă de steaguri acceptate de proxy,utilizați cloud_sql_proxy -help
.
steaguri de autentificare
-credential_file
specifică calea către o cheie de cont de serviciu JSON pe care proxy-urile o utilizează pentru a autoriza sau autentifica conexiunile.
-token
când este setat, proxy-ul folosește acest simbol purtător pentru autorizare.
-enable_iam_login
permite proxy-ului să utilizeze autentificarea bazei de date Cloud SQL IAM. Acest lucru va determina proxy-ul să utilizeze acreditările contului IAM pentru autentificarea utilizatorului bazei de date. Fordetails, consultați Prezentare generală a autentificării bazei de date Cloud SQL IAM
steaguri de conectare
-instances="project1:region:instance1,project3:region:instance1"
o listă separată prin virgulă de instanțe pentru a deschide în interiorul -dir
. De asemenea, supportsexposing un port TCP și redenumirea implicit prize de domeniu UNIX; a se vedea exemplesbelow. Aceeași listă pot fi furnizate prin variabile de mediu instanțe, în cazcând ambele sunt furnizate – proxy va folosi Pavilion linie de comandă.
exemplu
utilizarea soclurilor TCP:
./cloud_sql_proxy -instances=my-project:us-central1:sql-inst=tcp:3306 &mysql -u root -h 127.0.0.1
utilizarea soclurilor Unix:
./cloud_sql_proxy -dir=/cloudsql -instances=my-project:us-central1:sql-inst &mysql -u root -S /cloudsql/my-project:us-central1:sql-inst
pentru a specifica un nume de soclu Unix personalizat:
./cloud_sql_proxy -dir=/cloudsql \ -instances=my-project:us-central1:sql-inst=unix:custom_socket_name &mysql -u root -S /cloudsql/custom_socket_name
pentru a specifica o locație personalizată pentru un soclu Unix (suprascrie -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
necesită acces la /dev/fuse
, precum și fusermount
binar. Un steag opțional-fuse_tmp
poate specifica unde să plaseze fișierele temporare. Se montează directoryindicated by -dir
.
exemplu
folosind -fuse
, nu trebuie să specificați numele instanțelor înainte de timp:
./cloud_sql_proxy -dir=/cloudsql -fuse &mysql -u root -S /cloudsql/my-project:us-central1:sql-inst
-instances_metadata=metadata_key
utilizabil numai pe GCE. Cheia de metadate GCE dată va fi apelată pentru o listă de instanțe care se vor deschide în -dir
. Cheia metadatelor este relativede la computeMetadata/v1/
. Formatul pentru valoare este același cu steagul ‘instantes’. Se folosește o strategie de sondaj suspendat, ceea ce înseamnă că modificările aduse valorii themetadata vor fi reflectate în -dir
chiar și în timp ce proxy-ul rulează.Când o instanță este eliminată din listă, soclul corespunzător va fi eliminat și din -dir
(cu excepția cazului în care a fost specificat și în -instances
), dar orice conexiuni existente la această instanță nu vor fi terminate.
exemplu
./cloud_sql_proxy -dir=/cloudsql \ -instances_metadata instance/attributes/<custom-metadata-key> &mysql -u root -S /cloudsql/my-project:us-central1:sql-inst
notă: -instances
și -instances_metadata
pot fi utilizate în același timp, darnu sunt compatibile cu steagul -fuse
.
-max_connections
dacă este furnizat, numărul maxim de conexiuni pentru a stabili înainte de a refuza noiconexiuni. Implicit la 0 (Fără limită).
steaguri suplimentare
-ip_address_types=PUBLIC,PRIVATE
o listă delimitată prin virgulă a tipurilor de IP preferate pentru conectarea la o instanță. Forexample, setarea acestui lucru la privat va forța proxy-ul să se conecteze la instancesusing IP privat asociat unei instanțe. Implicit la PUBLIC,PRIVATE
-term_timeout=30s
cât timp să așteptați închiderea conexiunilor înainte de a închide proxy-ul.Implicit la 0.
-skip_failed_instance_config
setarea acestui steag va împiedica proxy-ul să se termine dacă apar erori în timpul configurării instanței. Vă rugăm să rețineți că acest lucru înseamnă unele cazuri mayfail să fie configurat corect în timp ce altele pot lucra în cazul în care proxy repornește.
-log_debug_stdout=true
acest lucru este de a conecta ieșire non-eroare la standard out în loc de eroare standard. De exemplu, dacă nu doriți ca mesajele legate de conexiune să se înregistreze ca erori, setați acest steag la true. Implicit la fals.
-structured_logs
scrie toate ieșire de logare ca JSON cu următoarele taste: nivel, ts, apelant,msg. De exemplu, mesajul de pornire arată ca:
{"level":"info","ts":1616014011.8132386,"caller":"cloud_sql_proxy/cloud_sql_proxy.go:510","msg":"Usinggcloud's active project: "}
rularea ca un Sidecar Kubernetes
a se vedea exemplul de aici, precum și conectarea la motorul GoogleKubernetes.
documentație de referință
- Cloud SQL
- Cloud SQL Auth documentație proxy
- Cloud SQL auth proxy Quickstarts
- Cloud SQL mostre de cod
- Cloud SQL Auth documentație pachet proxy
contribuind
contribuțiile sunt binevenite. Vă rugăm să consultați documentul contribuitor pentru detalii.
vă rugăm să rețineți că acest proiect este lansat cu un cod de contribuitor de Conduct.By participând la acest proiect sunteți de acord să respectați termenii acestuia. Consultați Codul de conduită al contribuabilului pentru mai multe informații.
terță parte
avertisment: aceste distribuții nu sunt acceptate oficial de Google.
Homebrew
există formula Homebrew pentru Cloud SQL auth proxy aici.
Kubernetes Cluster service folosind Helm
urmați aceste instrucțiuni.
această diagramă creează o implementare și un serviciu, dar vă recomandăm să implementați theproxy ca container sidecar în pod-urile dvs.
. Net Proxy Wrapper (Pachetul Nuget)
instalați prin Nuget, urmați theseinstructions.