Googlecloud Platform/cloudsql-proxy
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
- Images de conteneurs
- Installer à partir de la source
- Utilisation
- Exemple de socket TCP
- Exemple de socket Unix
- Exemple d’IP privée
- Informations d’identification
- Drapeaux CLI
- Drapeaux d’authentification
- -credential_file
- -token
- -enable_iam_login
- Indicateurs de connexion
- -instances="project1:region:instance1,project3:region:instance1"
- -fuse
- -instances_metadata=metadata_key
- -max_connections
- Drapeaux supplémentaires
- -ip_address_types=PUBLIC,PRIVATE
- -term_timeout=30s
- -skip_failed_instance_config
- -log_debug_stdout=true
- -structured_logs
- Fonctionnant en tant que Side-car Kubernetes
- Documentation de référence
- Contribution
- Tierce partie
- Homebrew
- Service de cluster Kubernetes utilisant Helm
- Wrapper de proxy .Net (paquet Nuget)
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
– utilisealpine:3
comme image de base (uniquement prise en charge à partir de la version 1.17) -
$VERSION-buster
– utilisedebian: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>
où 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:
- L’indicateur
-credential_file
- L’indicateur
-token
- La clé de compte de service sur le chemin stocké dans la variable d’environnement
GOOGLE_APPLICATION_CREDENTIALS
. - Les informations d’identification de l’utilisateur gcloud (définies à partir de
gcloud auth login
) - 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.