Se connecter depuis Compute Engine à Cloud SQL

Cette page explique comment se connecter à Cloud SQL avec le client sqlcmd, installé sur une instance Compute Engine.

Vous pouvez utiliser une adresse IP privée, une adresse IP publique, le proxy d'authentification Cloud SQL ou l'image Docker du proxy d'authentification Cloud SQL.

Avant de commencer

Cette tâche n'inclut pas d'instructions pour la configuration de l'instance Compute Engine. Si vous avez besoin d'aide pour créer et configurer une instance Compute Engine, consultez la documentation de Compute Engine.

Adresse IP privée

Pour pouvoir vous connecter à Cloud SQL depuis une instance Compute Engine à l'aide d'une adresse IP privée, l'accès aux services privés doit être configuré pour votre environnement, et votre instance Cloud SQL doit être configurée pour utiliser une adresse IP privée. L'instance Compute Engine doit se trouver dans la même région que votre instance Cloud SQL et sur le réseau configuré pour une connexion privée. En savoir plus

1. Configurer votre instance pour qu'elle utilise une adresse IP privée

Suivez les instructions de la section Configurer la connectivité IP privée.

2. Ouvrez une connexion de terminal à l'instance Compute Engine.

Suivez les instructions correspondantes, en fonction du système d'exploitation de l'instance :

Si l'instance Compute Engine exécute une image publique RHEL ou CentOS, SELinux risque de bloquer la connexion proxy. Le cas échéant, vous devez configurer la fonctionnalité SELinux pour autoriser la connexion.

Pour en savoir plus sur SELinux pour RHEL, consultez la documentation RHEL. Pour plus d'informations sur SELinux for CentOS, consultez la documentation CentOS.

3. Si ce n'est pas déjà fait, installez le client sqlcmd sur l'instance Compute Engine.

Debian/Ubuntu

Pour Debian/Ubuntu, installez les outils de ligne de commande SQL Server applicables en suivant ces instructions.

CentOS/RHEL

Pour CentOS/RHEL, installez les outils de ligne de commande SQL Server applicables en suivant ces instructions.

openSUSE

Pour openSUSE, installez les outils de ligne de commande SQL Server applicables en suivant ces instructions.

Autres plates-formes

Consultez la page de destination concernant l'installation de SQL Server, ainsi que la page de téléchargements SQL Server.

4. Connectez-vous au client sqlcmd.

sqlcmd -S CLOUD_SQL_PRIVATE_IP_ADDRESS -U USERNAME

Vous pouvez trouver cette adresse IP privée sur la page Instances Cloud SQL ou en exécutant la commande gcloud suivante :

gcloud sql instances list

Adresse IP publique

Pour vous connecter à l'aide d'une adresse IP publique, procédez comme suit :

1. Ajoutez une adresse IP statique IPv4 à l'instance Compute Engine, si elle n'en a pas déjà une.

Vous ne pouvez pas vous connecter à Compute Engine avec le protocole IPv6. Pour en savoir plus sur l'ajout d'adresse IP statique, consultez la section Réserver une nouvelle adresse IP externe statique dans la documentation de Compute Engine.

2. Autorisez l'adresse IP statique de l'instance Compute Engine en tant que réseau pouvant se connecter à l'instance Cloud SQL.

Pour en savoir plus, consultez la page Configurer l'accès pour les connexions IP publiques.

3. Ouvrez une connexion de terminal à l'instance Compute Engine.

Suivez les instructions correspondantes, en fonction du système d'exploitation de l'instance :

Si l'instance Compute Engine exécute une image publique RHEL ou CentOS, SELinux risque de bloquer la connexion proxy. Le cas échéant, vous devez configurer la fonctionnalité SELinux pour autoriser la connexion.

Pour en savoir plus sur SELinux pour RHEL, consultez la documentation RHEL. Pour plus d'informations sur SELinux for CentOS, consultez la documentation CentOS.

4. Si ce n'est pas déjà fait, installez le client sqlcmd sur l'instance Compute Engine.

Debian/Ubuntu

Pour Debian/Ubuntu, installez les outils de ligne de commande SQL Server applicables en suivant ces instructions.

CentOS/RHEL

Pour CentOS/RHEL, installez les outils de ligne de commande SQL Server applicables en suivant ces instructions.

openSUSE

Pour openSUSE, installez les outils de ligne de commande SQL Server applicables en suivant ces instructions.

Autres plates-formes

Consultez la page de destination concernant l'installation de SQL Server, ainsi que la page de téléchargements SQL Server.

5. Connectez-vous au client sqlcmd.

sqlcmd -S CLOUD_SQL_PUBLIC_IP_ADDR -U USERNAME

Vous pouvez trouver l'adresse IP publique sur la page des instances Cloud SQL ou en exécutant la commande gcloud suivante :

gcloud sql instances list

Pour obtenir un exemple de connexion à l'aide de SSL, consultez la section Se connecter à l'aide de SSL.

6. L'invite sqlcmd s'affiche.

Proxy d'authentification Cloud SQL

Pour vous connecter à l'aide du proxy d'authentification Cloud SQL à partir de Compute Engine :

1. Activez l'API Cloud SQL Admin.

Activer l'API

2. Créer un compte de service

  1. Accédez à la page Comptes de service de Google Cloud Console.

    Accéder à la page Comptes de service

  2. Sélectionnez le projet contenant l'instance Cloud SQL.
  3. Cliquez sur Créer un compte de service.
  4. Dans la boîte de dialogue Créer un compte de service, saisissez un nom descriptif pour le compte de service.
  5. Remplacez l'ID du compte de service par une valeur unique et facilement reconnaissable, puis cliquez sur Créer.
  6. Pour Rôle, sélectionnez l'un des rôles suivants, cliquez sur Continuer, puis sur Terminé :
    • Cloud SQL > Client Cloud SQL
    • Cloud SQL > Éditeur Cloud SQL
    • Cloud SQL > Administrateur Cloud SQL
  7. Cliquez sur le menu Action de votre nouveau compte de service, puis sélectionnez Gérer les clés.
  8. Cliquez sur le menu déroulant Ajouter une clé, puis sur Créer une clé.
  9. Vérifiez que le type de clé est bien JSON et cliquez sur Créer.

    Le fichier de clé privée est téléchargé sur votre machine. Vous pouvez le changer d'emplacement. Conservez le fichier de clé dans un endroit sécurisé.

Si l'instance Compute Engine se trouve dans un projet différent de celui de l'instance Cloud SQL, assurez-vous que le compte de service dispose des autorisations appropriées dans le projet qui contient l'instance Cloud SQL :

  1. Accédez à la liste des instances Compute Engine dans Google Cloud Console.

    Accéder à la liste des instances Compute Engine

  2. Si nécessaire, sélectionnez le projet associé à l'instance Compute Engine.
  3. Sélectionnez l'instance Compute Engine pour afficher ses propriétés.
  4. Dans les propriétés de l'instance Compute Engine, copiez le nom du compte de service.
  5. Accédez à la section des projets de la page IAM et administration dans Google Cloud Console.

    Accéder à la section des projets de la page "IAM et administration"

  6. Sélectionnez le projet contenant l'instance Cloud SQL.
  7. Recherchez le nom du compte de service.
  8. Si le compte de service est déjà présent et qu'il dispose d'un rôle comprenant l'autorisation cloudsql.instances.connect, vous pouvez passer à l'étape 4.

    Les rôles Cloud SQL Client, Cloud SQL Editor et Cloud SQL Admin accordent tous les autorisations nécessaires, de même que les anciens rôles de projet Editor et Owner.

  9. Sinon, ajoutez le compte de service en cliquant sur Ajouter.
  10. Dans la boîte de dialogue Ajouter des comptes principaux, indiquez le nom du compte de service et sélectionnez un rôle qui inclut l'autorisation cloudsql.instances.connect (n'importe quel rôle Cloud SQL prédéfini peut être utilisé, à l'exception du rôle "Lecteur").

    Vous pouvez également utiliser le rôle de base d'éditeur en sélectionnant Projet > Éditeur. Sachez toutefois que celui-ci dispose d'autorisations sur l'ensemble de Google Cloud.

    Si vous ne voyez pas ces rôles, votre utilisateur Google Cloud peut ne pas disposer de l'autorisation resourcemanager.projects.setIamPolicy. Pour vérifier vos autorisations, accédez à la page IAM de Google Cloud Console et recherchez votre ID utilisateur.

  11. Cliquez sur Ajouter.

    Le compte de service répertorié s'affiche maintenant avec le rôle spécifié.

3. Ouvrez une connexion de terminal à l'instance Compute Engine.

Suivez les instructions correspondantes, en fonction du système d'exploitation de l'instance :

Si l'instance Compute Engine exécute une image publique RHEL ou CentOS, SELinux risque de bloquer la connexion proxy. Le cas échéant, vous devez configurer la fonctionnalité SELinux pour autoriser la connexion.

Pour en savoir plus sur SELinux pour RHEL, consultez la documentation RHEL. Pour plus d'informations sur SELinux for CentOS, consultez la documentation CentOS.

4. Si ce n'est pas déjà fait, installez le client sqlcmd sur l'instance Compute Engine.

Debian/Ubuntu

Pour Debian/Ubuntu, installez les outils de ligne de commande SQL Server applicables en suivant ces instructions.

CentOS/RHEL

Pour CentOS/RHEL, installez les outils de ligne de commande SQL Server applicables en suivant ces instructions.

openSUSE

Pour openSUSE, installez les outils de ligne de commande SQL Server applicables en suivant ces instructions.

Autres plates-formes

Consultez la page de destination concernant l'installation de SQL Server, ainsi que la page de téléchargements SQL Server.

5. Installez le proxy d'authentification Cloud SQL sur l'instance Compute Engine.

Linux 64 bits

  1. Téléchargez le proxy d'authentification Cloud SQL :
    wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
    
  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 :
    wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.386 -O cloud_sql_proxy
    
  2. Si la commande wget est introuvable, exécutez sudo apt-get install wget 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
    

Windows 64 bits

Pour télécharger le proxy d'authentification Cloud SQL, effectuez un clic droit sur le lien https://dl.google.com/cloudsql/cloud_sql_proxy_x64.exe, puis sélectionnez Enregistrer le lien sous. Renommez le fichier en cloud_sql_proxy.exe.

Windows 32 bits

Pour télécharger le proxy d'authentification Cloud SQL, effectuez un clic droit sur le lien https://dl.google.com/cloudsql/cloud_sql_proxy_x86.exe, puis sélectionnez Enregistrer le lien sous. Renommez le fichier en cloud_sql_proxy.exe.

Image Docker du proxy d'authentification Cloud SQL

Pour plus de commodité, plusieurs images de conteneur contenant le proxy d'authentification Cloud SQL sont disponibles sur GitHub dans le dépôt 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/cloudsql-docker/gce-proxy:1.19.1

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.

6. Démarrez le proxy d'authentification Cloud SQL.

Vous pouvez démarrer le proxy d'authentification Cloud SQL à l'aide de sockets TCP ou de l'image Docker du proxy d'authentification Cloud SQL. Le binaire du proxy d'authentification Cloud SQL se connecte aux instances Cloud SQL spécifiées sur la ligne de commande et ouvre une connexion locale en tant que socket TCP. D'autres applications et services, tels que le code de votre application ou vos outils clients de gestion de bases de données, peuvent se connecter à des instances Cloud SQL via cette connexion de socket TCP.

Sockets TCP

Pour les connexions TCP, le proxy d'authentification Cloud SQL écoute localhost(127.0.0.1) par défaut. Ainsi, lorsque vous spécifiez tcp:PORT_NUMBER pour une instance, la connexion locale est à 127.0.0.1:PORT_NUMBER.

Vous pouvez également spécifier une autre adresse pour la connexion locale. Par exemple, voici comment faire en sorte que le proxy d'authentification Cloud SQL écoute 0.0.0.0:1234 pour la connexion locale :

  ./cloud_sql_proxy -instances=INSTANCE_CONNECTION_NAME=tcp:0.0.0.0:1234
  1. Copiez le nom de connexion de votre instance (INSTANCE_CONNECTION_NAME). Vous le trouverez sur la page Présentation de votre instance dans Google Cloud Console ou en exécutant la commande suivante :

    gcloud sql instances describe INSTANCE_NAME
    .

    Exemple : myproject:myregion:myinstance.

  2. Si des adresses IP publiques et privées sont configurées pour l'instance, et que vous souhaitez que le proxy d'authentification Cloud SQL utilise l'adresse IP privée, vous devez indiquer l'option suivante au démarrage du proxy d'authentification Cloud SQL :
    -ip_address_types=PRIVATE
  3. Si vous utilisez un compte de service pour authentifier le proxy d'authentification Cloud SQL, notez l'emplacement sur votre machine cliente du fichier de clé privée généré au moment de la création du compte de service.
  4. Démarrez le proxy d'authentification Cloud SQL.

    Voici des exemples de chaînes d'appel du proxy d'authentification Cloud SQL :

    • Avec l'authentification via le SDK Cloud :
      ./cloud_sql_proxy -instances=INSTANCE_CONNECTION_NAME=tcp:1433
      
      Le port spécifié ne doit pas déjà être utilisé, par exemple par un serveur de base de données local.
    • Utilisez un compte de service et incluez explicitement le nom de la connexion à l'instance (recommandé pour les environnements de production) :
      ./cloud_sql_proxy -instances=INSTANCE_CONNECTION_NAM=tcp:1433 \
                        -credential_file=PATH_TO_KEY_FILE &
      

    Pour en savoir plus sur les options du proxy d'authentification Cloud SQL, consultez les sections Options du proxy d'authentification Cloud SQL et Options de spécification d'instances.

Docker

Pour exécuter le proxy d'authentification Cloud SQL dans un conteneur Docker, utilisez l'image Docker du proxy d'authentification Cloud SQL disponible dans Google Container Registry.

Vous pouvez démarrer le proxy d'authentification Cloud SQL à l'aide de sockets TCP ou Unix, au moyen des commandes indiquées ci-dessous. Les options utilisent une chaîne de connexion INSTANCE_CONNECTION_NAME pour identifier une instance Cloud SQL. Pour trouver la chaîne de connexion INSTANCE_CONNECTION_NAME, accédez à la page Présentation de votre instance dans Google Cloud Console ou exécutez la commande suivante :

gcloud sql instances describe INSTANCE_NAME
.

Exemple : myproject:myregion:myinstance.

Selon le langage et l'environnement que vous employez, vous pouvez démarrer le proxy d'authentification Cloud SQL à l'aide de sockets TCP ou Unix. Les sockets Unix ne sont pas compatibles avec les applications écrites en langage de programmation Java ou avec un environnement Windows.

Utiliser des sockets TCP

docker run -d \\
  -v PATH_TO_KEY_FILE:/config \\
  -p 127.0.0.1:1433:1433 \\
  gcr.io/cloudsql-docker/gce-proxy:1.19.1 /cloud_sql_proxy \\
  -instances=INSTANCE_CONNECTION_NAME=tcp:0.0.0.0:1433 -credential_file=/config

Si vous utilisez les identifiants fournis par votre instance Compute Engine, n'incluez pas le paramètre credential_file ni la ligne -v PATH_TO_KEY_FILE:/config.

Spécifiez toujours le préfixe 127.0.0.1 dans -p afin de ne pas exposer le proxy d'authentification Cloud SQL en dehors de l'hôte local. La valeur "0.0.0.0" dans les paramètres de l'instance est requise pour rendre le port accessible de l'extérieur du conteneur Docker.

Utiliser des sockets Unix

docker run -d -v /cloudsql:/cloudsql \\
  -v PATH_TO_KEY_FILE:/config \\
  gcr.io/cloudsql-docker/gce-proxy:1.19.1 /cloud_sql_proxy -dir=/cloudsql \\
  -instances=INSTANCE_CONNECTION_NAME -credential_file=/config

Si vous utilisez les identifiants fournis par votre instance Compute Engine, n'incluez pas le paramètre credential_file ni la ligne -v PATH_TO_KEY_FILE:/config.

Si vous utilisez une image de conteneur optimisée, utilisez un répertoire avec accès en écriture à la place de /cloudsql, par exemple :

-v /mnt/stateful_partition/cloudsql:/cloudsql

Vous pouvez spécifier plusieurs instances en les séparant par des virgules. Il est également possible d'utiliser les métadonnées Compute Engine afin de déterminer de manière dynamique les instances auxquelles vous connecter. Apprenez-en plus sur les paramètres du proxy d'authentification Cloud SQL.

7. Démarrez la session sqlcmd.

La chaîne de connexion que vous utilisez varie selon que vous avez démarré le proxy d'authentification Cloud SQL à l'aide d'un socket TCP ou de Docker.

Sockets TCP

  1. Lancez le client sqlcmd :
    sqlcmd -S tcp:127.0.0.1,1433 -U USERNAME -P PASSWORD
    

    Lorsque vous vous connectez à l'aide de sockets TCP, l'accès au proxy d'authentification Cloud SQL s'effectue via 127.0.0.1.

  2. Si vous y êtes invité, saisissez le mot de passe.
  3. L'invite sqlcmd s'affiche.

Besoin d'aide ? Pour obtenir de l'aide sur le dépannage du proxy, consultez la section Dépannage des connexions via le proxy d'authentification Cloud SQL ou la page Assistance Cloud SQL.

Étape suivante