GoogleCloudPlatform / cloudsql-proxy

CI Go-Referenz

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

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 – verwendet alpine:3 als Basisimage (nur ab v1.17 unterstützt)
  • $VERSION-buster – verwendet debian: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:

  1. Das -credential_file -Flag
  2. Das -token -Flag
  3. Der Dienstkontoschlüssel auf dem Pfad, der in der UmgebungsvariablenGOOGLE_APPLICATION_CREDENTIALS gespeichert ist.
  4. Die gcloud-Benutzeranmeldeinformationen gcloud auth login)
  5. 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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.