GoogleCloudPlatform / cloudsql-proxy

CIgo Reference

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

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:

  1. steagul -credential_file
  2. steagul -token
  3. cheia contului de serviciu la calea stocată în variabila de mediuGOOGLE_APPLICATION_CREDENTIALS.
  4. acreditările utilizatorului gcloud (setate din gcloud auth login)
  5. 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.

Lasă un răspuns

Adresa ta de email nu va fi publicată.