GoogleCloudPlatform / cloudsql-proxy
Der Cloud SQL Auth Proxy ist eine Binärdatei, die IAM-basierte Autorisierung und Verschlüsselung beim Herstellen einer Verbindung zu einer Cloud SQL-Instanz bereitstellt.
Weitere Informationen zur Verbindung mit einer Cloud SQL-Instanz finden Sie auf der Seite Verbindungsübersicht oder auf der Seite Über den Proxy.
Hinweis: Der Proxy kann keinen Netzwerkpfad zu einer Cloud SQL-Instanz bereitstellen, wenn dieser noch nicht vorhanden ist (z. B. kann der Proxy nicht auf eine VPC zugreifen, wenn er bereits Zugriff darauf hat).
- Installation
- Container-Images
- Von Quelle installieren
- Verwendung
- TCP-Socket-Beispiel
- Unix Socket Beispiel
- Beispiel für private IP
- Anmeldeinformationen
- CLI-Flags
- Authentifizierungsflags
- -credential_file
- -token
- -enable_iam_login
- Verbindungsflags
- -instances="project1:region:instance1,project3:region:instance1"
- -fuse
- -instances_metadata=metadata_key
- -max_connections
- Zusätzliche Flags
- -ip_address_types=PUBLIC,PRIVATE
- -term_timeout=30s
- -skip_failed_instance_config
- -log_debug_stdout=true
- -structured_logs
- Als Kubernetes-Sidecar ausgeführt
- Referenzdokumentation
- Dokumentation
- Dritter
- Homebrew
- Kubernetes Cluster Service mit Helm
- .Net Proxy Wrapper (Nuget-Paket)
Installation
Führen Sie für 64-Bit-Linux:
wget https://storage.googleapis.com/cloudsql-proxy/v1.19.2/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxychmod +x cloud_sql_proxy
Releases für weitere Betriebssysteme und Architekturen finden Sie auf der Releasespage.
Für alternative Distributionen siehe unten unter third party.
Container-Images
Es gibt containerisierte Versionen des Proxys, die in den folgenden Google Cloud Container Registry-Repositorys verfügbar sind:
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
Jedes Bild wird mit der zugehörigen Proxy-Version markiert. Die folgenden Tags werden derzeit unterstützt:
-
$VERSION
– standardbild (empfohlen) -
$VERSION-alpine
– verwendetalpine:3
als Basisimage (nur ab v1.17 unterstützt) -
$VERSION-buster
– verwendetdebian:buster
als Basisimage (nur ab v1.17 unterstützt)
Wir empfehlen, die neueste Version des Proxys zu verwenden und die Version regelmäßig zu aktualisieren. Wir empfehlen jedoch auch, an ein bestimmtes Tag zu heften und das neueste Tag zu vermeiden. Hinweis: Die getaggte Version ist nur die des Proxys. Änderungen in Baseimages können bestimmte Setups beschädigen, auch in Schritten von Nicht-Hauptversionen. Daher empfiehlt es sich, Änderungen vor der Bereitstellung zu testen und Automatedrollbacks zu verwenden, um potenzielle Fehler rückgängig zu machen.
Von Quelle installieren
Um von Quelle zu installieren, stellen Sie sicher, dass Sie die neueste Version von Goinstalliert haben.
Dann einfach ausführen:
go get github.com/GoogleCloudPlatform/cloudsql-proxy/cmd/cloud_sql_proxy
Das cloud_sql_proxy
wird in $GOPATH/bin
platziert, nachdem go get
abgeschlossen ist.
Verwendung
Bei allen folgenden Aufrufen wird davon ausgegangen, dass gültige Anmeldeinformationen in der Umgebung vorhanden sind. Die folgenden Beispiele verweisen alle auf ein INSTANCE_CONNECTION_NAME
, das die Form hat: myproject:myregion:myinstance
. UmINSTANCE_CONNECTION_NAME
zu finden, führen Sie gcloud sql instances describe <INSTANCE_NAME>
aus, wobei INSTANCE_NAME
der Name der Datenbankinstanz ist.
TCP-Socket-Beispiel
# 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 Beispiel
# 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>
Beispiel für private IP
cloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:5432 -ip_address_types=PRIVATE
Um eine Verbindung über private IP herzustellen, müssen Sie über die VPC Ihres Projekts Zugriff haben. Weitere Informationen finden Sie unter Private IP-Anforderungen.
Anmeldeinformationen
Der Cloud SQL-Proxy verwendet ein Cloud IAM-Konto, um Verbindungen mit einer Cloud SQL-Instanz zu autorisieren. Der Proxy bezieht die Anmeldeinformationen für diese Konten in der folgenden Reihenfolge:
- Das
-credential_file
-Flag - Das
-token
-Flag - Der Dienstkontoschlüssel auf dem Pfad, der in der Umgebungsvariablen
GOOGLE_APPLICATION_CREDENTIALS
gespeichert ist. - Die gcloud-Benutzeranmeldeinformationen
gcloud auth login
) - Die Standardanmeldeinformationen der Anwendung
Hinweis: Jedes Konto, das eine Verbindung zu einer Cloud SQL-Datenbank herstellt, benötigt eine der folgenden IAM-Rollen:
- Cloud SQL Client (bevorzugt)
- Cloud SQL Editor
- Cloud SQL Admin
Oder Sie können die folgenden IAM-Berechtigungen manuell zuweisen:
cloudsql.instances.connect
cloudsql.instances.get
Weitere Informationen finden Sie unter Rollen und Berechtigungen in Cloud SQL.
Wenn sich der Proxy unter dem Standarddienstkonto der Compute Engine-VM authentifiziert, muss die VM mindestens über den API-Bereich sqlservice.admin
(d. h. “https://www.googleapis.com/auth/sqlservice.admin”) verfügen, und für das zugehörige Projekt muss die SQL Admin-API aktiviert sein. Das Standarddienstkonto muss außerdem über mindestens Writer- oder Editor-Berechtigungen für alle Projekte von SQL-Zielinstanzen verfügen.
CLI-Flags
Der Cloud SQL Auth Proxy benötigt einige Argumente, um zu konfigurieren, mit welchen Instanzen eine Verbindung hergestellt werden soll, und um das Verbindungsverhalten zu konfigurieren. Eine vollständige Liste der vom Proxy unterstützten Flags finden Sie unter cloud_sql_proxy -help
.
Authentifizierungsflags
-credential_file
Gibt den Pfad zu einem JSON-Dienstkontoschlüssel an, den der Proxy zum Autorisieren oder Authentifizieren von Verbindungen verwendet.
-token
Wenn festgelegt, verwendet der Proxy dieses Bearer-Token für die Autorisierung.
-enable_iam_login
Ermöglicht dem Proxy die Verwendung der Cloud SQL IAM-Datenbankauthentifizierung. Dies führt dazu, dass der Proxy IAM-Kontoanmeldeinformationen für die Datenbankbenutzerauthentifizierung verwendet. Einzelheiten finden Sie unter Übersicht über die Cloud SQL IAM-Datenbankauthentifizierung
Verbindungsflags
-instances="project1:region:instance1,project3:region:instance1"
Eine kommagetrennte Liste von Instanzen, die innerhalb von -dir
geöffnet werden sollen. Auch supportsexposing einen TCP-Port und Umbenennen der Standard-Unix-Domain-Sockets; siehe examplesbelow. Dieselbe Liste kann über die Umgebungsvariable INSTANZEN bereitgestellt werden, falls beide bereitgestellt werden – Proxy verwendet das Befehlszeilenflag.
Beispiel
TCP-Sockets verwenden:
./cloud_sql_proxy -instances=my-project:us-central1:sql-inst=tcp:3306 &mysql -u root -h 127.0.0.1
Verwenden von Unix-Sockets:
./cloud_sql_proxy -dir=/cloudsql -instances=my-project:us-central1:sql-inst &mysql -u root -S /cloudsql/my-project:us-central1:sql-inst
So geben Sie einen benutzerdefinierten Unix-Socket-Namen an:
./cloud_sql_proxy -dir=/cloudsql \ -instances=my-project:us-central1:sql-inst=unix:custom_socket_name &mysql -u root -S /cloudsql/custom_socket_name
So geben Sie einen benutzerdefinierten Speicherort für einen Unix-Socket an (überschreibt -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
Erfordert Zugriff auf /dev/fuse
sowie die Binärdatei fusermount
. Ein optionales-fuse_tmp
-Flag kann angeben, wo temporäre Dateien abgelegt werden sollen. Das von -dir
angegebene Verzeichnis ist eingehängt.
Beispiel
Mit -fuse
müssen Sie Instanznamen nicht im Voraus angeben:
./cloud_sql_proxy -dir=/cloudsql -fuse &mysql -u root -S /cloudsql/my-project:us-central1:sql-inst
-instances_metadata=metadata_key
Nur auf GCE verwendbar. Der angegebene GCE-Metadatenschlüssel wird für eine Liste der in -dir
zu öffnenden Instanzen gepolt. Der Metadatenschlüssel ist relativefrom computeMetadata/v1/
. Das Format für den Wert entspricht dem Flag ‘instances’. Es wird eine Hanging-Poll-Strategie verwendet, was bedeutet, dass Änderungen am metadata-Wert auch während der Ausführung des Proxys in -dir
wiedergegeben werden.Wenn eine Instanz aus der Liste entfernt wird, wird der entsprechende Socket ebenfalls von -dir
entfernt (es sei denn, er wurde auch in -instances
angegeben), aber alle vorhandenen Verbindungen zu dieser Instanz werden NICHT beendet.
Beispiel
./cloud_sql_proxy -dir=/cloudsql \ -instances_metadata instance/attributes/<custom-metadata-key> &mysql -u root -S /cloudsql/my-project:us-central1:sql-inst
Hinweis: -instances
und -instances_metadata
können gleichzeitig verwendet werden, sind jedoch nicht mit dem Flag -fuse
kompatibel.
-max_connections
Falls angegeben, die maximale Anzahl der Verbindungen, die hergestellt werden sollen, bevor neue Verbindungen abgelehnt werden. Der Standardwert ist 0 (kein Limit).
Zusätzliche Flags
-ip_address_types=PUBLIC,PRIVATE
Eine durch Kommas getrennte Liste bevorzugter IP-Typen für die Verbindung zu einer Instanz. Wenn Sie dies beispielsweise auf PRIVAT setzen, wird der Proxy gezwungen, über die zugehörige private IP einer Instanz eine Verbindung zu Instanzen herzustellen. Standardmäßig auf PUBLIC,PRIVATE
-term_timeout=30s
Gibt an, wie lange auf das Schließen der Verbindungen gewartet werden soll, bevor der Proxy heruntergefahren wird.Der Standardwert ist 0.
-skip_failed_instance_config
Das Setzen dieses Flags verhindert, dass der Proxy beendet wird, wenn während der Instanzkonfiguration Fehler auftreten. Bitte beachten Sie, dass dies bedeutet, dass einige Instanzen möglicherweise nicht korrekt eingerichtet sind, während andere möglicherweise funktionieren, wenn der Proxy neu gestartet wird.
-log_debug_stdout=true
Dies dient zum Protokollieren der Ausgabe ohne Fehler in Standard out anstelle von standard error . Wenn Sie beispielsweise nicht möchten, dass verbindungsbezogene Nachrichten als Fehler protokolliert werden, setzen Sie dieses Flag auf true. Der Standardwert ist false.
-structured_logs
Schreibt alle Logging-Ausgaben als JSON mit den folgenden Schlüsseln: level, ts, caller,msg. Die Startnachricht sieht beispielsweise so aus:
{"level":"info","ts":1616014011.8132386,"caller":"cloud_sql_proxy/cloud_sql_proxy.go:510","msg":"Usinggcloud's active project: "}
Als Kubernetes-Sidecar ausgeführt
Siehe das Beispiel hier sowie die Verbindung von GoogleKubernetes Engine.
Referenzdokumentation
- Cloud SQL
- Cloud SQL Auth Proxy-Dokumentation
- Cloud SQL Auth Proxy-Schnellstarts
- Cloud SQL-Codebeispiele
- Cloud SQL Auth Proxy-Paketdokumentation
Dokumentation
Beiträge sind willkommen. Bitte beachten Sie das BEITRAGENDE Dokument für Details.
Bitte beachten Sie, dass dieses Projekt mit einem Beitragscode von Conduct.By wenn Sie an diesem Projekt teilnehmen, stimmen Sie den Bedingungen zu. Weitere Informationen finden Sie im Verhaltenskodex des Teilnehmers.
Dritter
WARNUNG: Diese Distributionen werden von Google nicht offiziell unterstützt.
Homebrew
Hier gibt es eine Homebrew-Formel für den Cloud SQL Auth Proxy .
Kubernetes Cluster Service mit Helm
Folgen Sie diesen Anweisungen.
Dieses Diagramm erstellt eine Bereitstellung und einen Dienst, wir empfehlen jedoch, theproxy als Sidecar-Container in Ihren Pods bereitzustellen.
.Net Proxy Wrapper (Nuget-Paket)
Installieren Sie über Nuget, folgen Sie diesen Anweisungen.