Googlecloud Platform/cloudsql-proxy

 CI  Référence Go

Le proxy d’authentification SQL Cloud est un binaire qui fournit une autorisation et un cryptage basés sur IAM lors de la connexion à une instance SQL Cloud.

Reportez-vous à la page Présentation de la connexion pour plus d’informations sur la connexion à une instance Cloud SQL, ou À la page À propos du proxy pour plus de détails sur le fonctionnement du proxy Cloud SQL.

Remarque: Le Proxy ne peut pas fournir de chemin réseau vers une instance Cloud SQL si elle n’est pas déjà présente (par exemple, le proxy ne peut pas accéder à un VPC s’il n’y a pas déjà accès).

Installation

Pour Linux 64 bits, exécutez:

wget https://storage.googleapis.com/cloudsql-proxy/v1.19.2/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxychmod +x cloud_sql_proxy

Versions pour des systèmes d’exploitation et des architectures supplémentaires et se trouvent sur la page releasespage.

Pour d’autres distributions, voir ci-dessous sous tiers.

Images de conteneurs

Il existe des versions conteneurisées du proxy disponibles dans les référentiels de registre de conteneurs Cloud Google suivants:

  • 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

Chaque image est étiquetée avec la version de proxy associée. Les balises suivantes sont actuellement prises en charge:

  • $VERSION – image par défaut (recommandée)
  • $VERSION-alpine – utilise alpine:3 comme image de base (uniquement prise en charge à partir de la version 1.17)
  • $VERSION-buster – utilise debian:buster comme image de base (uniquement prise en charge à partir de la version 1.17)

Nous vous recommandons d’utiliser la dernière version du proxy et de mettre à jour la versionrégulièrement. Cependant, nous recommandons également d’épingler une balise spécifique et d’éviter la dernière balise. Remarque : la version balisée est uniquement celle du proxy. Les modifications des images de base peuvent interrompre des configurations spécifiques, même sur des incréments de version non majeurs. En tant que tel, il est recommandé de tester les modifications avant le déploiement et d’utiliser automatedrollbacks pour annuler les échecs potentiels.

Installer à partir de la source

Pour installer à partir de la source, assurez-vous d’avoir la dernière version de Goinstalled.

Ensuite, exécutez simplement:

go get github.com/GoogleCloudPlatform/cloudsql-proxy/cmd/cloud_sql_proxy

Le cloud_sql_proxy sera placé dans $GOPATH/bin une fois le go get terminé.

Utilisation

Toutes les invocations suivantes supposent que des informations d’identification valides sont présentes dans l’environnement. Les exemples suivants font tous référence à un INSTANCE_CONNECTION_NAME, qui prend la forme : myproject:myregion:myinstance. Pour trouver le INSTANCE_CONNECTION_NAME, exécutez gcloud sql instances describe <INSTANCE_NAME>INSTANCE_NAME est le nom de l’instance de base de données.

Exemple de socket 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

Exemple de 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>

Exemple d’IP privée

cloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:5432 -ip_address_types=PRIVATE

Pour vous connecter à l’aide d’une IP privée, vous devez avoir accès via le VPC de votre projet. Pour plus de détails, consultez Exigences en matière d’IP privée.

Informations d’identification

Le proxy Cloud SQL utilise un compte Cloud IAM pour autoriser les connexions avec une instance SQL aCloud. Le proxy fournit les informations d’identification de ces comptes dans l’ordre suivant:

  1. L’indicateur -credential_file
  2. L’indicateur -token
  3. La clé de compte de service sur le chemin stocké dans la variable d’environnement GOOGLE_APPLICATION_CREDENTIALS.
  4. Les informations d’identification de l’utilisateur gcloud (définies à partir de gcloud auth login)
  5. Les informations d’identification par défaut de l’application

Remarque : Tout compte se connectant à une base de données SQL Cloud aura besoin de l’un des rôles IAM suivants:

  • Client SQL Cloud (préféré)
  • Éditeur SQL Cloud
  • Administrateur SQL Cloud

Ou on peut attribuer manuellement les autorisations IAM suivantes:

  • cloudsql.instances.connect
  • cloudsql.instances.get

Voir Rôles et autorisations dans Cloud SQL pour plus de détails.

Lorsque le proxy s’authentifie sous serviceaccount par défaut de la machine virtuelle du moteur de calcul, la machine virtuelle doit avoir au moins la portée de l’API sqlservice.admin (c’est-à-dire ” https://www.googleapis.com/auth/sqlservice.admin “) et le projet associé doit avoir l’API SQL Admin activée. Le compte de service par défaut doit égalementau moins des privilèges d’auteur ou d’éditeur pour tous les projets d’instances SQL cibles.

Drapeaux CLI

Le proxy d’authentification SQL Cloud prend quelques arguments pour configurer les instances à connecter et le comportement de connexion. Pour une liste complète des indicateurs pris en charge par le proxy, utilisez cloud_sql_proxy -help.

Drapeaux d’authentification

-credential_file

Spécifie le chemin d’accès à un compte de service JSON key les mandataires pour autoriser ou authentifier les connexions.

-token

Lorsqu’il est défini, le proxy utilise ce jeton porteur pour l’autorisation.

-enable_iam_login

Permet au proxy d’utiliser l’authentification de base de données Cloud SQL IAM. Cela obligera le proxy à utiliser les informations d’identification du compte IAM pour l’authentification de l’utilisateur de la base de données. Pour les détails, voir Aperçu de l’authentification de base de données Cloud SQL IAM

Indicateurs de connexion

-instances="project1:region:instance1,project3:region:instance1"

Une liste d’instances séparées par des virgules à ouvrir dans -dir. Prend également en charge l’exposition d’un port TCP et le renommage des sockets de domaine Unix par défaut ; voir exemples ci-dessous. La même liste peut être fournie via la variable d’environnement DES INSTANCES, au cas où les deux sont fournis – le proxy utilisera l’indicateur de ligne de commande.

Exemple

Utilisation de sockets TCP:

./cloud_sql_proxy -instances=my-project:us-central1:sql-inst=tcp:3306 &mysql -u root -h 127.0.0.1

Utilisation de sockets Unix:

./cloud_sql_proxy -dir=/cloudsql -instances=my-project:us-central1:sql-inst &mysql -u root -S /cloudsql/my-project:us-central1:sql-inst

Pour spécifier un nom de socket Unix personnalisé:

./cloud_sql_proxy -dir=/cloudsql \ -instances=my-project:us-central1:sql-inst=unix:custom_socket_name &mysql -u root -S /cloudsql/custom_socket_name

Pour spécifier un emplacement personnalisé pour un socket Unix (remplace -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

Nécessite l’accès à /dev/fuse ainsi qu’au binaire fusermount. Un indicateur -fuse_tmp facultatif peut spécifier où placer les fichiers temporaires. Le directoryindiqué par -dir est monté.

Exemple

En utilisant -fuse, vous n’avez pas besoin de spécifier les noms d’instance à l’avance:

./cloud_sql_proxy -dir=/cloudsql -fuse &mysql -u root -S /cloudsql/my-project:us-central1:sql-inst

-instances_metadata=metadata_key

Utilisable uniquement sur GCE. La clé de métadonnées GCE donnée sera appelée pour une liste d’instances à ouvrir en -dir. La clé de métadonnées est relativede computeMetadata/v1/. Le format de la valeur est le même que celui de l’indicateur desinstances. Une stratégie de sondage suspendu est utilisée, ce qui signifie que les modifications apportées à la valeur themetadata seront reflétées dans le -dir même pendant l’exécution du proxy.Lorsqu’une instance est supprimée de la liste, la socket correspondante sera également supprimée de -dir (sauf si elle a également été spécifiée dans -instances), mais toutes les connexions existantes à cette instance ne seront PAS terminées.

Exemple

./cloud_sql_proxy -dir=/cloudsql \ -instances_metadata instance/attributes/<custom-metadata-key> &mysql -u root -S /cloudsql/my-project:us-central1:sql-inst

Remarque: -instances et -instances_metadata peuvent être utilisés en même temps mais ne sont pas compatibles avec l’indicateur -fuse.

-max_connections

S’il est fourni, le nombre maximum de connexions à établir avant de refuser de nouvelles connexions. La valeur par défaut est 0 (pas de limite).

Drapeaux supplémentaires

-ip_address_types=PUBLIC,PRIVATE

Une liste délimitée par des virgules des types d’IP préférés pour la connexion à une instance. Par exemple, la définition de PRIVATE forcera le proxy à se connecter à instancesutilisant l’adresse IP privée associée à une instance. Par défaut à PUBLIC,PRIVATE

-term_timeout=30s

Combien de temps attendre la fermeture des connexions avant d’arrêter le proxy.La valeur par défaut est 0.

-skip_failed_instance_config

La définition de cet indicateur empêchera le proxy de se terminer en cas d’erreur lors de la configuration de l’instance. Veuillez noter que cela signifie que certaines instances peuvent échouer à être configurées correctement tandis que d’autres peuvent fonctionner si le proxy redémarre.

-log_debug_stdout=true

Il s’agit de consigner la sortie sans erreur sur sortie standard au lieu de l’erreur standard. Par exemple, si vous ne souhaitez pas que les messages liés à la connexion se connectent en tant qu’erreurs, définissez cet indicateur sur true. La valeur par défaut est false.

-structured_logs

Écrit toutes les sorties de journalisation au format JSON avec les clés suivantes : level, ts, caller, msg. Par exemple, le message de démarrage ressemble à:

{"level":"info","ts":1616014011.8132386,"caller":"cloud_sql_proxy/cloud_sql_proxy.go:510","msg":"Usinggcloud's active project: "}

Fonctionnant en tant que Side-car Kubernetes

Voir l’exemple ici ainsi que la connexion à partir du moteur GoogleKubernetes.

Documentation de référence

  • Cloud SQL
  • Documentation du proxy d’authentification SQL Cloud
  • Démarrage rapide du proxy d’authentification SQL Cloud
  • Exemples de code SQL Cloud
  • Documentation du package Proxy d’authentification SQL Cloud

Contribution

Les contributions sont les bienvenues. Veuillez consulter le document de CONTRIBUTION pour plus de détails.

Veuillez noter que ce projet est publié avec un Code contributeur de Conduct.By en participant à ce projet, vous acceptez de respecter ses conditions. Consultez le Code de conduite des contributeurs pour plus d’informations.

Tierce partie

AVERTISSEMENT: Ces distributions ne sont pas officiellement prises en charge par Google.

Homebrew

Il existe une formule Homebrew pour le proxy d’authentification Cloud SQL ici.

Service de cluster Kubernetes utilisant Helm

Suivez ces instructions.

Ce graphique crée un déploiement et un Service, mais nous vous recommandons de déployer theproxy en tant que conteneur sidecar dans vos pods.

Wrapper de proxy .Net (paquet Nuget)

Installez via Nuget, suivez ces instructions.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.