GoogleCloudPlatform / cloudsql-proxy
de Cloud SQL Auth-proxy is een binair programma dat op iam gebaseerde autorisatie en encryptie biedt bij het verbinden met een Cloud SQL-instantie.
zie de overzichtspagina verbinden voor meer informatie over het verbinden met een cloudsql-instantie, of de pagina over de proxy voor details over hoe de Cloudsql-proxy werkt.
Noot: De Proxy kan geen netwerkpad geven naar een Cloudsql-instantie als oneis nog niet aanwezig is (bijvoorbeeld, de proxy kan geen toegang krijgen tot een VPC als het er nog geen toegang toe heeft).
- installatie
- Containerafbeeldingen
- vanaf bron installeren
- gebruik
- TCP-socket voorbeeld
- Unix socket voorbeeld
- privé IP voorbeeld
- referenties
- CLI Flags
- Authenticatievlaggen
- -credential_file
- -token
- -enable_iam_login
- Verbindingsvlaggen
- -instances="project1:region:instance1,project3:region:instance1"
- -fuse
- -instances_metadata=metadata_key
- -max_connections
- extra vlaggen
- -ip_address_types=PUBLIC,PRIVATE
- -term_timeout=30s
- -skip_failed_instance_config
- -log_debug_stdout=true
- -structured_logs
- draaien als een Kubernetes-zijspan
- referentiedocumentatie
- bijdragen
- derde partij
- Homebrew
- Kubernetes Cluster Service met behulp van Helm
- . net Proxy Wrapper (NuGet Package)
installatie
voor 64-bit Linux, uitvoeren:
wget https://storage.googleapis.com/cloudsql-proxy/v1.19.2/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxychmod +x cloud_sql_proxy
Releases voor extra OS ‘ s en architecturen en zijn te vinden op de releasespage.
voor alternatieve uitkeringen, zie hieronder onder derde partij.
Containerafbeeldingen
er zijn containerversies van de proxy beschikbaar in de volgende Google 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
elke afbeelding is gelabeld met de bijbehorende proxy-versie. De volgende tags arecurrently ondersteund:
-
$VERSION
– standaard afbeelding (aanbevolen) -
$VERSION-alpine
– toepassingenalpine:3
als een base-beeld (alleen ondersteund van v1.17-up) -
$VERSION-buster
– toepassingendebian:buster
als een base-beeld (alleen ondersteund van v1.17-up)
We raden u aan de nieuwste versie van de proxy en het bijwerken van de versionregularly. Echter, we raden ook pinning aan een specifieke tag en vermijd de nieuwste tag. Opmerking: de gelabelde versie is alleen die van de proxy. Wijzigingen in basisafbeeldingen kunnen specifieke opstellingen breken, zelfs bij niet-belangrijke versiestappen. Als zodanig,het is een beste praktijk om veranderingen te testen voor de implementatie, en het gebruik van automatedrollbacks om potentiële storingen terug te keren.
vanaf bron installeren
om vanaf bron te installeren, moet u de nieuwste versie van Goinstalled hebben.
vervolgens gewoon uitvoeren:
go get github.com/GoogleCloudPlatform/cloudsql-proxy/cmd/cloud_sql_proxy
de cloud_sql_proxy
wordt in $GOPATH/bin
geplaatst nadat go get
is voltooid.
gebruik
alle volgende aanroepingen gaan ervan uit dat er geldige referenties in de omgeving aanwezig zijn. De volgende voorbeelden verwijzen allemaal naar an INSTANCE_CONNECTION_NAME
, die de vorm heeft: myproject:myregion:myinstance
. OmINSTANCE_CONNECTION_NAME
te vinden, voer je gcloud sql instances describe <INSTANCE_NAME>
uit, waarbij INSTANCE_NAME
de naam is van de database-instantie.
TCP-socket voorbeeld
# 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
Unix socket voorbeeld
# 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>
privé IP voorbeeld
cloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:5432 -ip_address_types=PRIVATE
om verbinding te maken met privé IP, moet u toegang hebben via de VPC van uw project. Zie Private IP-vereisten voor meer informatie.
referenties
de Cloud SQL-proxy gebruikt een Cloud IAM-account om verbindingen te autoriseren tegen acloud SQL-instantie. De proxy betrekt de referenties voor deze accounts in de volgende volgorde:
- de
-credential_file
vlag - de
-token
vlag - de service-accountsleutel op het pad opgeslagen in de
GOOGLE_APPLICATION_CREDENTIALS
omgevingsvariabele. - de gcloud-gebruikersreferenties (ingesteld van
gcloud auth login
) - de standaard referenties
opmerking: elk account dat verbinding maakt met een Cloud SQL-database heeft een van de volgende iam-functies nodig:
- Cloud SQL Client (voorkeur)
- Cloud SQL Editor
- Cloud SQL Admin
of men kan handmatig de volgende iam-rechten toewijzen:
cloudsql.instances.connect
cloudsql.instances.get
zie rollen en machtigingen in Cloud SQL voor meer informatie.
wanneer de proxy authenticeert Onder het standaard serviceaccount van de VM van de rekenmachine, moet de VM ten minste de API-scope sqlservice.admin
hebben (d.w.z.”https://www.googleapis.com/auth/sqlservice.admin”) en moet de bijbehorende project de SQL Admin API hebben ingeschakeld. Het standaard serviceaccount moet ook de minste writer-of editorrechten hebben voor alle projecten van target SQL-instanties.
CLI Flags
de Cloud SQL Auth-proxy heeft een paar argumenten nodig om te configureren welke instanties verbinding maken met en verbindingsgedrag. Gebruik cloud_sql_proxy -help
voor een volledige lijst van vlaggen die door de proxy worden ondersteund.
Authenticatievlaggen
-credential_file
Hiermee geeft u het pad op naar een JSON-serviceaccountsleutel die door de proxy ‘ s wordt gebruikt om verbindingen te autoriseren of te verifiëren.
-token
wanneer ingesteld, gebruikt de proxy dit token aan toonder voor autorisatie.
-enable_iam_login
Hiermee kan de proxy gebruikmaken van Cloud SQL iam-databaseverificatie. Dit zorgt ervoor dat de proxy iam-accountreferenties gebruikt voor verificatie van de database-gebruiker. Zie overzicht van Cloudsql IAM-databaseverificatie
Verbindingsvlaggen
-instances="project1:region:instance1,project3:region:instance1"
een door komma ‘ s gescheiden lijst van instanties die binnen -dir
moeten worden geopend. Ondersteunt ook het exposeren van een TCP poort en het hernoemen van de standaard Unix domein Sockets; zie voorbeelden hieronder. Dezelfde lijst kan worden verstrekt via INSTANCES omgevingsvariabele, in casewanneer beide worden verstrekt-proxy zal de opdrachtregelvlag gebruiken.
voorbeeld
TCP-sockets gebruiken:
./cloud_sql_proxy -instances=my-project:us-central1:sql-inst=tcp:3306 &mysql -u root -h 127.0.0.1
Unix-sockets gebruiken:
./cloud_sql_proxy -dir=/cloudsql -instances=my-project:us-central1:sql-inst &mysql -u root -S /cloudsql/my-project:us-central1:sql-inst
een aangepaste UNIX-socket-naam opgeven:
./cloud_sql_proxy -dir=/cloudsql \ -instances=my-project:us-central1:sql-inst=unix:custom_socket_name &mysql -u root -S /cloudsql/custom_socket_name
een aangepaste locatie opgeven voor een Unix-socket (overschrijft -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
vereist toegang tot /dev/fuse
en het fusermount
binaire bestand. Een optionele -fuse_tmp
– vlag kan aangeven waar tijdelijke bestanden moeten worden geplaatst. De directory aangegeven met -dir
is gemount.
voorbeeld
met -fuse
hoeft u niet van tevoren instantienamen op te geven:
./cloud_sql_proxy -dir=/cloudsql -fuse &mysql -u root -S /cloudsql/my-project:us-central1:sql-inst
-instances_metadata=metadata_key
alleen bruikbaar op GCE. De metadatasleutel van given GCE zal worden verzameld voor een lijst van instanties die in -dir
moeten worden geopend. De metagegevenssleutel is relatiefvan computeMetadata/v1/
. Het formaat voor de waarde is hetzelfde als de vlag’ stoffen’. Een hanging-poll strategie wordt gebruikt, wat betekent dat veranderingen in de metadata waarde zullen worden weerspiegeld in de -dir
zelfs terwijl de proxy draait.Als een instantie uit de lijst wordt verwijderd zal de bijbehorende socket ook worden verwijderd van -dir
(tenzij het ook is opgegeven in -instances
), maar alle bestaande verbindingen met deze instantie zullen niet worden beëindigd.
voorbeeld
./cloud_sql_proxy -dir=/cloudsql \ -instances_metadata instance/attributes/<custom-metadata-key> &mysql -u root -S /cloudsql/my-project:us-central1:sql-inst
opmerking: -instances
en -instances_metadata
kunnen tegelijkertijd worden gebruikt, maar zijn niet compatibel met de -fuse
vlag.
-max_connections
indien aanwezig, het maximum aantal verbindingen tot stand te brengen alvorens nieuwe verbindingen te weigeren. Standaard 0 (geen limiet).
extra vlaggen
-ip_address_types=PUBLIC,PRIVATE
een door komma ‘ s gescheiden lijst van voorkeurs IP-types voor het verbinden met een instantie. Bijvoorbeeld, het instellen van dit op privé zal de proxy dwingen om verbinding te maken met instancesusing een instantie ‘ s geassocieerde private IP. Standaardwaarden:PUBLIC,PRIVATE
-term_timeout=30s
hoe lang moet worden gewacht voordat verbindingen worden gesloten voordat de proxy wordt afgesloten.Standaard 0.
-skip_failed_instance_config
het instellen van deze vlag zal voorkomen dat de proxy wordt beëindigd als er fouten optreden tijdens de instance configuratie. Houd er rekening mee dat dit betekent dat sommige gevallen niet correct kunnen worden ingesteld, terwijl andere kunnen werken als de proxy opnieuw wordt opgestart.
-log_debug_stdout=true
Dit is om non-error uitvoer te loggen naar standard out in plaats van standaard fout. Bijvoorbeeld, als je niet wilt dat verbinding gerelateerde berichten te loggen als fouten, zet deze vlag op true. Standaard false.
-structured_logs
schrijft alle logging uitvoer als JSON met de volgende toetsen: level, ts,caller, msg. Bijvoorbeeld, het opstartbericht ziet eruit als:
{"level":"info","ts":1616014011.8132386,"caller":"cloud_sql_proxy/cloud_sql_proxy.go:510","msg":"Usinggcloud's active project: "}
draaien als een Kubernetes-zijspan
zie het voorbeeld hier en verbinden met GoogleKubernetes-Engine.
referentiedocumentatie
- Cloud SQL
- Cloud SQL Auth-proxy documentatie
- Cloud SQL Auth-proxy Quickstarts
- Cloud SQL-codevoorbeelden
- Cloud SQL Auth – Proxy-Pakketdocumentatie
bijdragen
bijdragen zijn welkom. Zie het bijdragende document voor details.
houd er rekening mee dat dit project is vrijgegeven met een Contributor Code van Conduct.By door deel te nemen aan dit project gaat u ermee akkoord de voorwaarden ervan na te leven. Zie de gedragscode van de deelnemer voor meer informatie.
derde partij
waarschuwing: deze distributies worden niet officieel ondersteund door Google.
Homebrew
hier is Homebrew-formule voor Cloud SQL-Auth-proxy.
Kubernetes Cluster Service met behulp van Helm
volg deze instructies.
deze grafiek maakt een implementatie en een Service aan, maar we raden aan theproxy als een zijspancontainer in uw pods te implementeren.
. net Proxy Wrapper (NuGet Package)
installeer via Nuget, volg deze instructies.