GoogleCloudPlatform / cloudql-proxy
Cloud SQL Auth proxy är en binär som ger iam-basedauthorization och kryptering när du ansluter till en Cloud SQL-instans.
se sidan Anslutnings översikt för mer information omansluta till en Cloud SQL-instans, eller om proxysidanför detaljer om hur Cloud SQL-proxy fungerar.
notera: Proxyn kan inte tillhandahålla en nätverksväg till en Cloud SQL-instans om en inte redan finns (t.ex. kan proxyn inte komma åt en VPC om den inte redan har tillgång till den).
- Installation
- Containerbilder
- Installera från källan
- användning
- TCP-uttag exempel
- exempel på Unix-uttag
- privat IP-exempel
- referenser
- CLI-flaggor
- Autentiseringsflaggor
- -credential_file
- -token
- -enable_iam_login
- Anslutningsflaggor
- -instances="project1:region:instance1,project3:region:instance1"
- -fuse
- -instances_metadata=metadata_key
- -max_connections
- ytterligare flaggor
- -ip_address_types=PUBLIC,PRIVATE
- -term_timeout=30s
- -skip_failed_instance_config
- -log_debug_stdout=true
- -structured_logs
- körs som en Kubernetes sidovagn
- referensdokumentation
- bidragande
- tredje part
- Homebrew
- Kubernetes Klustertjänst med hjälp av Helm
- . Net Proxy Wrapper (Nuget paket)
Installation
för 64-bitars Linux, kör:
wget https://storage.googleapis.com/cloudsql-proxy/v1.19.2/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxychmod +x cloud_sql_proxy
utgåvor för ytterligare operativsystem och arkitekturer och finns på releasespage.
för alternativa distributioner, se nedan under tredje part.
Containerbilder
det finns containeriserade versioner av proxy tillgängliga från followingGoogle Cloud Container Registry repositories:
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
varje bild är taggad med tillhörande proxyversion. Följande taggar stöds för närvarande:
-
$VERSION
– standardbild (rekommenderas) -
$VERSION-alpine
– använderalpine:3
som en basbild (stöds endast från v1. 17 upp) -
$VERSION-buster
– använderdebian:buster
som en basbild (stöds endast från v1. 17 upp)
vi rekommenderar att du använder den senaste versionen av proxyn och uppdaterar versionenregelbundet. Vi rekommenderar dock att du fäster på en viss tagg och undviker den senaste taggen. OBS: Den taggade versionen är bara den för proxy. Förändringar i basbilder kan bryta specifika inställningar, även på icke-större versionssteg. Som sådan är det en bästa praxis att testa ändringar före distribution och använda automatiska rullbacks för att återställa potentiella fel.
Installera från källan
för att installera från källan, se till att du har den senaste versionen av Goinstalled.
kör sedan helt enkelt:
go get github.com/GoogleCloudPlatform/cloudsql-proxy/cmd/cloud_sql_proxy
cloud_sql_proxy
kommer att placeras i $GOPATH/bin
efter att go get
har slutförts.
användning
alla följande anrop antar att giltiga referenser finns i miljön. Följande exempel refererar alla till en INSTANCE_CONNECTION_NAME
, som har formen: myproject:myregion:myinstance
. För att hittaINSTANCE_CONNECTION_NAME
, kör gcloud sql instances describe <INSTANCE_NAME>
där INSTANCE_NAME
är namnet på databasinstansen.
TCP-uttag exempel
# 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
exempel på Unix-uttag
# 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>
privat IP-exempel
cloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:5432 -ip_address_types=PRIVATE
för att ansluta med privat IP måste du ha åtkomst via yourprojects VPC. För mer information, se privata IP-krav.
referenser
Cloud SQL-proxyn använder ett Cloud iam-konto för att auktorisera anslutningar mot aCloud SQL-instans. Proxykällorna för dessa konton iföljande ordning:
-
-credential_file
flagga -
-token
flagga - servicekontonyckeln på sökvägen lagrad i miljövariabeln
GOOGLE_APPLICATION_CREDENTIALS
. - GCloud-användaruppgifterna (Ställ in från
gcloud auth login
) - ansökan standard referenser
Obs: alla konton som ansluter till ett moln SQL-databas kommer att behöva en av deföljande iam Roller:
- Cloud SQL-klient (föredragen)
- Cloud SQL Editor
- Cloud SQL Admin
eller man kan manuellt tilldela följande iam-behörigheter:
cloudsql.instances.connect
cloudsql.instances.get
se roller och behörigheter i Cloud SQL för mer information.
när proxy autentiseras under Compute Engine VM standard serviceaccount, VM måste ha åtminstone sqlservice.admin
API omfattning (dvs”https://www.googleapis.com/auth/sqlservice.admin”) och tillhörande projectmust har SQL Admin API aktiverat. Standardtjänstkontot måste också haåtminstone writer eller editor privilegier till alla projekt av mål SQL-instanser.
CLI-flaggor
Cloud SQL Auth-proxy tar några argument för att konfigurera vilka instanser som ska anslutas till och anslutningsbeteende. För en fullständig lista över flaggor som stöds av proxyn,använd cloud_sql_proxy -help
.
Autentiseringsflaggor
-credential_file
anger sökvägen till en JSON service-konto nyckel proxyanvänder att auktorisera eller autentisera anslutningar.
-token
när den är inställd använder proxyn denna Bärartoken för godkännande.
-enable_iam_login
aktiverar proxy att använda Cloud SQL iam databasautentisering. Detta kommer att orsaka proxy att använda iam-kontouppgifter för databasanvändarautentisering. Fordetails, se översikt över Cloud SQL iam databasautentisering
Anslutningsflaggor
-instances="project1:region:instance1,project3:region:instance1"
en kommaseparerad lista över instanser som ska öppnas inuti -dir
. Stöder också att exponera en TCP-port och byta namn på standard Unix-Domänuttag; se exempelnedan. Samma lista kan tillhandahållas via instanser miljövariabel, i casewhen båda tillhandahålls-proxy kommer att använda kommandoraden flagga.
exempel
använda TCP-uttag:
./cloud_sql_proxy -instances=my-project:us-central1:sql-inst=tcp:3306 &mysql -u root -h 127.0.0.1
använda Unix-uttag:
./cloud_sql_proxy -dir=/cloudsql -instances=my-project:us-central1:sql-inst &mysql -u root -S /cloudsql/my-project:us-central1:sql-inst
ange ett anpassat Unix-socket-namn:
./cloud_sql_proxy -dir=/cloudsql \ -instances=my-project:us-central1:sql-inst=unix:custom_socket_name &mysql -u root -S /cloudsql/custom_socket_name
ange en anpassad plats för ett Unix-uttag (åsidosätter -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
kräver åtkomst till /dev/fuse
samt fusermount
binär. En valfri-fuse_tmp
– flagga kan ange var tillfälliga filer ska placeras. Directoryindikerat av -dir
är monterad.
exempel
med -fuse
behöver du inte ange instansnamn i förväg:
./cloud_sql_proxy -dir=/cloudsql -fuse &mysql -u root -S /cloudsql/my-project:us-central1:sql-inst
-instances_metadata=metadata_key
kan endast användas på GCE. Den angivna GCE-metadatanyckeln kommer att blipolled för en lista över instanser som ska öppnas i -dir
. Metadatanyckeln är relativfrån computeMetadata/v1/
. Formatet för värdet är detsamma som flaggan’ instanser’. En hanging-poll-strategi används, vilket innebär att ändringar i themetadata-värdet kommer att återspeglas i -dir
även när proxyn körs.När en instans tas bort från listan kommer motsvarande uttag att tas bort från -dir
också (om det inte också anges i -instances
), men alla befintliga anslutningar till denna instans kommer inte att avslutas.
exempel
./cloud_sql_proxy -dir=/cloudsql \ -instances_metadata instance/attributes/<custom-metadata-key> &mysql -u root -S /cloudsql/my-project:us-central1:sql-inst
Obs: -instances
och -instances_metadata
kan användas samtidigt menär inte kompatibla med -fuse
– flaggan.
-max_connections
om det tillhandahålls, det maximala antalet anslutningar för att upprätta innan du vägrar nyaanslutningar. Standardvärdet är 0 (ingen gräns).
ytterligare flaggor
-ip_address_types=PUBLIC,PRIVATE
en kommaseparerad lista över föredragna IP-typer för anslutning till en instans. Till exempel, om du ställer in detta till privat kommer proxyn att tvingas ansluta till instances med hjälp av en instans associerade privata IP. Standard för PUBLIC,PRIVATE
-term_timeout=30s
hur länge väntar du på att anslutningarna stängs innan du stänger av proxyn.Standardvärdet är 0.
-skip_failed_instance_config
om du ställer in den här flaggan kommer proxyn inte att avslutas om några fel uppstår under instanskonfigurationen. Observera att detta innebär att vissa fall kan misslyckas med att ställas in korrekt medan andra kan fungera om proxyn startas om.
-log_debug_stdout=true
detta är att logga icke-felutmatning till standard ut istället för standardfel. Till exempel, om du inte vill att anslutningsrelaterade meddelanden ska logga som fel, Ställ inDenna flagga till true. Standardvärdet är falskt.
-structured_logs
skriver alla loggningsutdata som JSON med följande tangenter: nivå, ts, caller,msg. Till exempel ser startmeddelandet ut:
{"level":"info","ts":1616014011.8132386,"caller":"cloud_sql_proxy/cloud_sql_proxy.go:510","msg":"Usinggcloud's active project: "}
körs som en Kubernetes sidovagn
se exemplet här samt anslutning från GoogleKubernetes Motor.
referensdokumentation
- moln SQL
- moln SQL Auth proxy dokumentation
- moln SQL Auth proxy Quickstarts
- moln SQL kod prover
- moln SQL Auth Proxy paket dokumentation
bidragande
bidrag är välkomna. Vänligen, se bidragande dokument för detaljer.
Observera att detta projekt släpps med en Bidragskod för Conduct.By genom att delta i detta projekt samtycker du till att följa dess villkor. Se contributor uppförandekod för mer information.
tredje part
varning: dessa distributioner stöds inte officiellt av Google.
Homebrew
det finns Homebrew formel för Cloud SQL Auth proxy här.
Kubernetes Klustertjänst med hjälp av Helm
följ dessa instruktioner.
det här diagrammet skapar en distribution och en tjänst, men vi rekommenderar att du distribuerar theproxy som en sidvagnsbehållare i dina pods.
. Net Proxy Wrapper (Nuget paket)
installera via Nuget, följ theseinstructions.