À propos du proxy d'authentification Cloud SQL

Cette page présente un récapitulatif du proxy d'authentification Cloud SQL et explique comment l'utiliser pour établir des connexions autorisées, chiffrées et sécurisées à vos instances.

Pour obtenir des instructions détaillées concernant l'utilisation du proxy d'authentification Cloud SQL, suivez le lien correspondant à votre environnement :

Vous n'avez pas besoin d'utiliser le proxy d'authentification Cloud SQL ni de configurer SSL pour vous connecter à Cloud SQL depuis l'environnement standard App Engine ou l'environnement flexible App Engine.

Faites l'essai

Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de Cloud SQL en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.

Profiter d'un essai gratuit de Cloud SQL

Avantages du proxy d'authentification Cloud SQL

Le proxy d'authentification Cloud SQL est un connecteur Cloud SQL qui fournit un accès sécurisé à votre instance Cloud SQL, sans nécessiter de réseaux autorisés ni de configuration SSL.

Le proxy d'authentification Cloud SQL et les autres connecteurs Cloud SQL présentent les avantages suivants :

  • Connexions sécurisées : le proxy d'authentification Cloud SQL chiffre automatiquement le trafic vers et depuis la base de données à l'aide de TLS 1.3 avec un algorithme AES 256 bits. Les certificats SSL permettent de valider les identités du client et du serveur. Ils sont indépendants des protocoles de base de données (vous n'avez pas besoin de gérer les certificats SSL).
  • Autorisation de connexion simplifiée : le proxy d'authentification Cloud SQL utilise les autorisations IAM pour contrôler qui peut se connecter à vos instances Cloud SQL. Ainsi, le proxy d'authentification Cloud SQL gère l'authentification auprès de Cloud SQL, ce qui évite d'avoir à fournir des adresses IP statiques.
  • Authentification IAM à la base de données. Le proxy d'authentification Cloud SQL accepte éventuellement une actualisation automatique des jetons d'accès OAuth 2.0. Pour en savoir plus sur cette fonctionnalité, consultez la page Authentification IAM pour les bases de données Cloud SQL.

Le proxy d'authentification Cloud SQL ne procure pas de nouveau chemin de connectivité. Il repose sur la connectivité IP existante. Pour permettre la connexion à une instance Cloud SQL à l'aide d'une adresse IP privée, le proxy d'authentification Cloud SQL doit se trouver sur une ressource ayant accès au même réseau VPC que l'instance.

Fonctionnement du proxy d'authentification Cloud SQL

Le proxy d'authentification Cloud SQL fonctionne avec un client local qui s'exécute dans l'environnement local. Pour communiquer avec le proxy d'authentification Cloud SQL, votre application utilise le protocole de base de données standard de votre base de données.

Le proxy d'authentification Cloud SQL se sert d'un tunnel sécurisé pour communiquer avec son processus associé qui est exécuté sur le serveur. Chaque connexion établie via le proxy d'authentification Cloud SQL crée une connexion à l'instance Cloud SQL.

Lorsqu'une application se connecte au proxy d'authentification Cloud SQL, elle vérifie si une connexion existante entre elle et l'instance Cloud SQL cible est disponible. Si la connexion n'existe pas, elle appelle les API Cloud SQL Admin pour obtenir un certificat SSL éphémère et l'utilise pour se connecter à Cloud SQL. Les certificats SSL éphémères expirent au bout d'environ une heure. Le proxy d'authentification Cloud SQL actualise ces certificats avant leur expiration.

Bien que le proxy d'authentification Cloud SQL puisse écouter sur n'importe quel port, il crée uniquement des connexions sortantes vers l'instance Cloud SQL sur le port 3307. Étant donné que le proxy d'authentification Cloud SQL appelle les API via le nom de domaine sqladmin.googleapis.com qui ne possède pas d'adresse IP fixe, toutes les connexions TCP sortantes sur le port 443 doivent être autorisées. Si votre machine cliente dispose d'une règle de pare-feu sortante, assurez-vous qu'elle autorise les connexions sortantes sur le port 3307 sur l'adresse IP de votre instance Cloud SQL.

Le proxy d'authentification Cloud SQL ne fournit pas de regroupement de connexions, mais il peut être associé à un autre regroupement de connexions pour plus d'efficacité.

Le schéma suivant montre comment le proxy d'authentification Cloud SQL se connecte à Cloud SQL :

Diagramme du proxy d'authentification Cloud SQL connectant un logiciel client à une instance SQL

Conditions requises pour utiliser le proxy d'authentification Cloud SQL

Pour utiliser le proxy d'authentification Cloud SQL, vous devez répondre aux exigences suivantes :

  • L'API Cloud SQL Admin doit être activée.
  • Vous devez fournir au proxy d'authentification Cloud SQL des identifiants d'authentification Google Cloud.
  • Vous devez indiquer au proxy d'authentification Cloud SQL un compte utilisateur et un mot de passe valides pour la base de données.
  • L'instance doit avoir une adresse IPv4 publique ou doit être configurée pour utiliser une adresse IP privée.

    L'adresse IP publique n'a pas besoin d'être accessible à une adresse externe (elle n'a pas besoin d'être ajoutée en tant qu'adresse réseau autorisée).

Télécharger et installer le proxy d'authentification Cloud SQL

Linux 64 bits

  1. Téléchargez le proxy d'authentification Cloud SQL :
    curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.11.0/cloud-sql-proxy.linux.amd64
    
  2. Rendez le proxy d'authentification Cloud SQL exécutable :
    chmod +x cloud-sql-proxy
    

Linux 32 bits

  1. Téléchargez le proxy d'authentification Cloud SQL :
    curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.11.0/cloud-sql-proxy.linux.386
    
  2. Si la commande curl est introuvable, exécutez sudo apt install curl puis répétez la commande de téléchargement.
  3. Rendez le proxy d'authentification Cloud SQL exécutable :
    chmod +x cloud-sql-proxy
    

macOS 64 bits

  1. Téléchargez le proxy d'authentification Cloud SQL :
    curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.11.0/cloud-sql-proxy.darwin.amd64
    
  2. Rendez le proxy d'authentification Cloud SQL exécutable :
    chmod +x cloud-sql-proxy
    

Mac M1

  1. Téléchargez le proxy d'authentification Cloud SQL :
      curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.11.0/cloud-sql-proxy.darwin.arm64
      
  2. Rendez le proxy d'authentification Cloud SQL exécutable :
      chmod +x cloud-sql-proxy
      

Windows 64 bits

Effectuez un clic droit sur https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.11.0/cloud-sql-proxy.x64.exe et sélectionnez Enregistrer le lien sous pour télécharger le proxy d'authentification Cloud SQL. Renommez le fichier en cloud-sql-proxy.exe.

Windows 32 bits

Effectuez un clic droit sur https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.11.0/cloud-sql-proxy.x86.exe et sélectionnez Enregistrer le lien sous pour télécharger le proxy d'authentification Cloud SQL. Renommez le fichier en cloud-sql-proxy.exe.

Image Docker du proxy d'authentification Cloud SQL

Le proxy d'authentification Cloud SQL possède différentes images de conteneur, telles que distroless, alpine et buster. L'image de conteneur du proxy d'authentification Cloud SQL par défaut utilise distroless, qui ne contient aucune interface système. Si vous avez besoin d'une interface système ou d'outils associés, téléchargez une image basée sur alpine ou buster. Pour plus d'informations, consultez la page Images de conteneurs du proxy d'authentification Cloud SQL.

Vous pouvez extraire la dernière image sur votre ordinateur local en utilisant Docker avec la commande suivante :

docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.11.0

Autres systèmes d'exploitation

Pour les autres systèmes d'exploitation non inclus ici, vous pouvez compiler le proxy d'authentification Cloud SQL à partir de la source.

Options de démarrage du proxy d'authentification Cloud SQL

Lorsque vous démarrez le proxy d'authentification Cloud SQL, vous devez lui fournir les informations suivantes :

  • Instances Cloud SQL avec lesquelles établir des connexions
  • Où écouter les données provenant de l'application à envoyer à Cloud SQL
  • Où trouver les identifiants pour authentifier l'application auprès de Cloud SQL
  • Quel type d'adresse IP utiliser, le cas échéant

Les options de démarrage que vous spécifiez pour le proxy d'authentification Cloud SQL déterminent si le proxy écoute un port TCP ou un socket Unix. Dans le cas d'un socket Unix, celui-ci est créé à l'emplacement de votre choix, généralement dans le répertoire /cloudsql/. Pour les connexions TCP, le proxy d'authentification Cloud SQL écoute localhost par défaut.

Exécutez l'exécutable cloud-sql-proxy avec l'argument --help pour afficher la liste complète des options de démarrage.

Vous pouvez installer le proxy d'authentification Cloud SQL n'importe où dans votre environnement local. L'emplacement des fichiers binaires du proxy d'authentification Cloud SQL n'a pas d'incidence sur l'endroit d'où il écoute les données de votre application.

Pour en savoir plus sur le démarrage du proxy d'authentification Cloud SQL, consultez la section Démarrer le proxy d'authentification Cloud SQL.

Utiliser un compte de service pour l'authentification

Le proxy d'authentification Cloud SQL nécessite une authentification IAM en tant qu'identité Cloud SQL pour autoriser les connexions à une instance Cloud SQL.

Le fait d'utiliser un compte de service à cette fin présente l'avantage de vous permettre de créer un fichier d'identifiants spécifiquement pour le proxy authentification Cloud SQL. Il sera associé de manière explicite et permanente au proxy d'authentification Cloud SQL tant qu'il est en cours d'exécution. Pour cette raison, l'utilisation d'un compte de service est la méthode recommandée pour les instances de production qui ne s'exécutent pas sur une instance Compute Engine.

Si vous devez appeler le proxy d'authentification Cloud SQL à partir de plusieurs machines, le fichier d'identifiants peut être dupliqué dans une image système.

Pour utiliser cette méthode, vous devez créer et gérer le fichier d'identifiants. Seuls les utilisateurs disposant de l'autorisation resourcemanager.projects.setIamPolicy (par exemple, les propriétaires de projet) peuvent créer le compte de service. Si votre utilisateur Google Cloud ne dispose pas de cette autorisation, vous devez demander à une autre personne de créer le compte de service ou authentifier le proxy d'authentification Cloud SQL via une autre méthode.

Découvrez comment créer un compte de service

Autorisations requises pour les comptes de service

Lorsque vous utilisez un compte de service pour fournir les identifiants du proxy d'authentification Cloud SQL, vous devez le créer avec des autorisations suffisantes. Si vous gérez vos autorisations Cloud SQL à l'aide des rôles IAM (Identity and Access Management), qui sont plus précis, vous devez attribuer au compte de service un rôle qui inclut l'autorisation cloudsql.instances.connect. Voici les rôles Cloud SQL prédéfinis qui incluent cette autorisation :

  • Client Cloud SQL
  • Éditeur Cloud SQL
  • Administrateur Cloud SQL

Si vous utilisez les anciens rôles de projet (Lecteur, Éditeur, Propriétaire), le compte de service doit disposer au minimum du rôle Éditeur.

Options de spécification d'instances Cloud SQL

Il existe plusieurs façons d'indiquer au proxy d'authentification Cloud SQL les instances auxquelles vous souhaitez vous connecter. Certaines sont explicites, d'autres sont implicites. Dans certaines configurations, vous n'avez pas besoin d'indiquer à l'avance au proxy d'authentification Cloud SQL les instances auxquelles vous souhaitez vous connecter, car il se connecte en fonction des demandes de connexion.

Les options de spécification d'instances varient selon le système d'exploitation et l'environnement :

Option Avantages Mises en garde et conditions requises Linux/macOS
(sockets Unix)
Java Windows Remarques
FUSE
(Filesystem in User Space)
Création dynamique de sockets basée sur les demandes de connexion ; aucun redémarrage de proxy nécessaire lorsque les instances changent. FUSE doit être installé. Compatible Non Non Utilisez l'option --fuse.
Détection automatique d'instances Pas besoin de spécifier d'instances. Des sockets sont créés pour toutes les instances dans le projet par défaut. L'utilisation de l'API du proxy d'authentification Cloud SQL augmente. gcloud CLI doit être installé, un utilisateur doit s'être authentifié par son biais, et un projet par défaut doit être défini. Le proxy d'authentification Cloud SQL doit être redémarré pour ajouter une nouvelle instance. Compatible Non Non Option déconseillée pour les instances de production.
Instances spécifiées dans l'appel du proxy d'authentification Cloud SQL La liste des instances est connue et statique. Le proxy d'authentification Cloud SQL doit être redémarré pour ajouter une nouvelle instance. Compatible Compatible avec les sockets TCP Compatible avec les sockets TCP En cas d'instances multiples, séparez-les par une virgule, sans inclure d'espaces. En savoir plus
Voir des exemples d'appels et de chaînes de connexion

Maintenir le proxy d'authentification Cloud SQL à jour

Google publie occasionnellement de nouvelles versions du proxy d'authentification Cloud SQL. Pour savoir quelle est la version actuelle, consultez la page GitHub relative aux versions du proxy d'authentification Cloud SQL. Les futures versions du proxy seront également indiquées sur le forum des annonces concernant Cloud SQL sur Google Groupes.

Utilisation de l'API

Le proxy d'authentification Cloud SQL envoie des requêtes à l'API Cloud SQL Admin, lesquelles sont comptabilisées dans le quota d'API du projet.

L'utilisation de l'API atteint son niveau le plus élevé lorsque vous démarrez le proxy d'authentification Cloud SQL. Lorsque le proxy d'authentification Cloud SQL est en cours d'exécution, il émet deux appels d'API par heure et par instance connectée.

À propos de la création d'un compte utilisateur spécial pour le proxy d'authentification Cloud SQL

Lorsque vous vous connectez à votre instance à l'aide du proxy d'authentification Cloud SQL, vous devez fournir un compte utilisateur pour vous connecter à l'instance. À cette fin, vous pouvez utiliser n'importe quel compte utilisateur de base de données. Toutefois, comme le proxy d'authentification Cloud SQL se connecte toujours à partir d'un nom d'hôte auquel seul le proxy a accès, il est recommandé de créer un compte utilisateur spécifique au proxy Cloud SQL. L'avantage de cette méthode est que vous pouvez spécifier ce compte sans mot de passe, et ce sans compromettre la sécurité de votre instance ou de vos données.

Pour créer un compte utilisateur pour les connexions du proxy d'authentification Cloud SQL, spécifiez le nom d'hôte 'cloudsqlproxy~[IP_ADDRESS]'. Vous pouvez également utiliser le caractère générique d'adresse IP, ce qui donne : 'cloudsqlproxy~%'. Le nom de compte utilisateur complet serait donc :

'[USER_NAME]'@'cloudsqlproxy~%'

ou

'[USER_NAME]'@'cloudsqlproxy~[IP_ADDRESS]'

Pour obtenir de l'aide sur la création d'un utilisateur, consultez la section Créer et gérer des utilisateurs. Pour plus d'informations sur le fonctionnement de Cloud SQL avec les comptes utilisateur, consultez la page Utilisateurs. Enfin, pour en savoir plus sur les comptes utilisateur MySQL, consultez la page Securing the Initial MySQL Accounts (Sécuriser les comptes MySQL initiaux) dans la documentation MySQL.

Paramètres et options du proxy d'authentification Cloud SQL

Le proxy d'authentification Cloud SQL accepte plusieurs options et paramètres lors de son démarrage. Ces options déterminent où et comment le proxy d'authentification Cloud SQL crée les sockets qu'il utilise pour communiquer avec Cloud SQL, et comment il s'authentifie.

Pour obtenir de l'aide concernant les options du proxy d'authentification Cloud SQL, consultez les sources d'information suivantes :

Utiliser FUSE avec le proxy d'authentification Cloud SQL

FUSE est l'acronyme de "Filesystem in User Space" (système de fichiers en espace utilisateur). Selon la manière dont le proxy d'authentification Cloud SQL est appelé, il peut éventuellement utiliser FUSE pour créer les sockets utilisés pour se connecter à Cloud SQL.

Lors de la connexion à partir d'environnements de développement Compute Engine ou locaux, le proxy d'authentification Cloud SQL utilise FUSE de la manière suivante pour accéder aux instances Cloud SQL :

  • Le répertoire "/cloudsql" est monté en tant que système de fichiers dans Userspace ou FUSE par le proxy d'authentification Cloud SQL.

  • Un processus (mysql, par exemple) tente de rechercher un fichier nommé $INSTANCE.

  • Le proxy d'authentification Cloud SQL intercepte la requête et indique que "/cloudsql/$INSTANCE" est un lien symbolique pointant vers un socket Unix situé ailleurs sur le système de fichiers.

  • Le processus (mysql, par exemple) suit le lien et ouvre le socket Unix auquel il aboutit et se connecte.

Installer FUSE

Pour Linux :

FUSE nécessite le programme fusermount et un module de noyau pour fonctionner. Pour savoir si ce programme est installé, recherchez le fichier /dev/fuse/. Si fusermount ne se trouve pas sur votre système, vous pouvez l'installer à l'aide de votre gestionnaire de packages ou en le compilant à partir de la source.

Pour macOS :

Installez FUSE pour macOS.

Utiliser le proxy d'authentification Cloud SQL dans un environnement de production

Lorsque vous utilisez le proxy d'authentification Cloud SQL dans un environnement de production, vous devez appliquer certaines étapes afin de vous assurer qu'il offre la disponibilité requise pour l'application.

Vérifier que le proxy d'authentification Cloud SQL est exécuté en tant que service persistant

Si le processus du proxy d'authentification Cloud SQL est arrêté, toutes les connexions associées sont interrompues et l'application ne peut plus créer de connexions avec l'instance Cloud SQL via le proxy d'authentification Cloud SQL. Pour éviter ce cas de figure, veillez à exécuter le proxy d'authentification Cloud SQL en tant que service persistant. Ainsi, s'il s'arrête pour une raison quelconque, il redémarre automatiquement. Pour ce faire, vous pouvez utiliser un service tel que systemd, upstart ou supervisor. Pour le système d'exploitation Windows, exécutez le proxy d'authentification Cloud SQL en tant que service Windows. En général, assurez-vous que le proxy d'authentification Cloud SQL présente les mêmes exigences de disponibilité que votre processus d'application.

De combien de copies du proxy d'authentification Cloud SQL l'application a-t-elle besoin ?

Il n'est pas nécessaire de créer un processus de proxy d'authentification Cloud SQL pour chaque processus d'application. En effet, plusieurs processus d'application peuvent partager un même processus de proxy. Exécutez un processus client proxy d'authentification Cloud SQL par station de travail ou machine virtuelle.

Si vous utilisez l'autoscaling pour les machines virtuelles, assurez-vous que le proxy d'authentification Cloud SQL est inclus dans la configuration de vos machines virtuelles. De cette manière, chaque fois qu'une nouvelle machine virtuelle est démarrée, elle dispose de son propre processus de proxy d'authentification Cloud SQL.

Il vous appartient de gérer le nombre de connexions requises par l'application, que ce soit en limitant ou en regroupant les connexions. Le proxy d'authentification Cloud SQL n'impose aucune limite concernant le taux de nouvelles connexions ou le nombre de connexions persistantes.

Réduire la sortie du proxy d'authentification Cloud SQL

Si vous devez réduire la taille du journal du proxy d'authentification Cloud SQL, vous pouvez le faire en définissant --quiet lorsque vous démarrez le proxy d'authentification Cloud SQL. Cependant, n'oubliez pas que cela réduit l'efficacité de la sortie du proxy d'authentification Cloud SQL pour le diagnostic de problèmes de connexion.

Proxy d'authentification Cloud SQL et processus de basculement

Si vous exécutez le proxy d'authentification Cloud SQL sur une instance configurée pour la haute disponibilité et qu'un basculement a lieu, les connexions établies via le proxy sont affectées de la même manière que les connexions sur IP : toutes les connexions existantes sont perdues et l'application doit en établir de nouvelles. Cependant, aucune intervention manuelle n'est requise, l'application peut continuer à utiliser les mêmes chaînes de connexion qu'auparavant.

Maintenir à jour l'image Docker du proxy d'authentification Cloud SQL

L'image Docker du proxy d'authentification Cloud SQL est basée sur une version spécifique du proxy d'authentification Cloud SQL. Lorsqu'une nouvelle version du proxy d'authentification Cloud SQL est disponible, vous devez extraire la nouvelle version de l'image Docker du proxy afin de maintenir votre environnement à jour. Pour savoir quelle est la version actuelle du proxy d'authentification Cloud SQL, consultez la page GitHub relative aux versions du proxy d'authentification Cloud SQL.

Imposer l'utilisation du proxy d'authentification Cloud SQL

Vous pouvez imposer l'utilisation du proxy d'authentification Cloud SQL dans les connexions d'instances Cloud SQL en spécifiant ConnectorEnforcement. Avec cette option d'imposition de connecteurs, les connexions directes à la base de données sont rejetées.

Pour appliquer l'imposition des connecteurs, vous devez utiliser le champ ConnectorEnforcement dans l'API instances.

Pour en savoir plus, consultez la page Modifier les instances.

À propos de l'opérateur proxy Cloud SQL

L'opérateur de proxy Cloud SQL est un opérateur Kubernetes Open Source qui automatise la connexion des charges de travail d'un cluster GKE sur des bases de données Cloud SQL. L'opérateur du proxy d'authentification Cloud SQL utilise une ressource personnalisée AuthProxyWorkload qui spécifie la configuration du proxy d'authentification Cloud SQL pour une charge de travail spécifique. L'opérateur du proxy d'authentification Cloud SQL lit cette ressource et ajoute un conteneur de proxy d'authentification Cloud SQL avec la configuration requise aux charges de travail appropriées.

Lorsque vous installez l'opérateur dans votre cluster GKE et que vous configurez vos charges de travail et vos instances Cloud SQL, l'opérateur du proxy d'authentification Cloud SQL configure automatiquement le proxy d'authentification Cloud SQL et connecte les charges de travail GKE à vos instances Cloud SQL.

L'opérateur du proxy d'authentification Cloud SQL vérifie également l'état du proxy d'authentification Cloud SQL. Si le proxy d'authentification Cloud SQL ne parvient pas à se connecter, l'opérateur du proxy d'authentification Cloud SQL génère des informations de débogage et vous fournit des conseils pour diagnostiquer et résoudre les problèmes courants de configuration.

Pour en savoir plus, consultez la section Connexion à l'aide de l'opérateur proxy Cloud SQL.

Étapes suivantes