Se connecter à Cloud SQL: adresse IP publique et réseaux autorisés

1. Introduction

Dernière mise à jour : 04/05/2020

Réfléchir à la connexion

Il existe de nombreux types d'applications et de frameworks. Dans cet atelier de programmation, nous allons voir comment se connecter à Cloud SQL depuis n'importe où. Pour pouvoir se connecter, vous devez autoriser explicitement les adresses IP autorisées à se connecter. Il s'agit sans doute de l'option la moins sécurisée pour se connecter à une base de données Cloud SQL, mais c'est aussi la plus facile à configurer et à utiliser.

Il est parfois nécessaire de le faire en production, mais si vous pouvez l'éviter, optez pour une alternative plus sécurisée (par exemple, en utilisant le proxy Cloud SQL). Cette configuration est idéale pour le développement et les tests.

Objectifs de l'atelier

Cet atelier de programmation est très minimaliste. L'idée est de vous présenter les bases de la partie connexion, sans trop réfléchir à l'application elle-même. Dans un monde idéal, la connexion à Cloud SQL est identique à celle de toute autre instance de base de données SQL. Vous devriez donc pouvoir appliquer ce que vous créez dans cet atelier de programmation à n'importe quelle application de production.

Les instructions incluront une procédure pas à pas pour effectuer des opérations dans la console GCP, ainsi que les commandes gcloud équivalentes à utiliser dans la CLI ou pour l'automatisation.

Voici les étapes à suivre :

  • Créez une instance Cloud SQL (ce tutoriel utilise Postgres, mais la procédure est similaire pour MySQL ou SQL Server) et autorisez des adresses IP spécifiques à s'y connecter.

Prérequis

  • Un compte GCP sur lequel vous êtes autorisé à activer des API et à créer des services
  • Client Postgres installé pour vérifier la connectivité (ou client MySQL si vous souhaitez utiliser MySQL au lieu de Postgres)

2. Créer l'instance Cloud SQL

Cloud SQL est notre offre de bases de données relationnelles gérées. Il prend en charge MySQL, PostgreSQL et SQL Server. Pour cet atelier de programmation, nous allons créer une base de données Postgres, mais les instructions sont similaires pour les trois.

Dans la console

Accédez à la page Cloud SQL, puis cliquez sur le bouton 241836b315e11bf5.png.

Comme je l'ai mentionné, la plupart de cet atelier de programmation est générique à n'importe quelle variante SQL, mais pour cet atelier de programmation, choisissez PostgreSQL.

  1. Attribuez un ID à votre instance.
  2. Choisissez une région proche de votre emplacement.
  3. Saisissez un mot de passe pour l'utilisateur par défaut (le nom d'utilisateur sera celui par défaut pour la base de données sélectionnée, par exemple root pour MySQL ou postgres pour PostgreSQL).
  4. Faites défiler la page vers le bas, puis cliquez sur show configuration options.
  5. Développer la section Connectivity
  6. Vérifiez que Public IP est coché et que Private IP est décoché.
  7. Cliquez sur le bouton 883b32ec2734de01.png.
  8. Obtenez l'adresse IP à partir de laquelle vous vous connectez. Le plus simple est de rechercher "Quelle est mon adresse IP" sur Google. L'adresse IP publique s'affichera dans les résultats de recherche.
  1. Saisissez la spécification d'adresse IP dans le champ du réseau, donnez-lui un nom si vous le souhaitez, puis cliquez sur "OK" dans la zone New Network.
  2. Faites défiler la page vers le bas, puis cliquez sur "Créer".

Le démarrage de l'instance prend généralement quelques minutes.

Une fois l'instance créée, cliquez dessus dans la liste. Sur la page "Aperçu", sous l'en-tête Connect to this instance, copiez le public IP address qui y figure. Elle n'apparaîtra qu'une fois l'instance entièrement créée, même si vous pouvez cliquer sur les détails avant qu'elle ne soit entièrement instanciée.

Utiliser gcloud

Vous devez d'abord récupérer l'adresse IP que vous souhaitez autoriser à se connecter à l'instance Cloud SQL. Le moyen le plus simple de le faire est d'ouvrir un navigateur et de rechercher "Quelle est mon adresse IP ?". Les résultats de recherche affichent votre adresse IP publique. Si vous ne pouvez pas ouvrir de navigateur à partir de l'endroit où vous effectuez cette opération, vous pouvez utiliser un utilitaire tel que dig.

dig @resolver1.opendns.com ANY myip.opendns.com +short -4

Vous devrez spécifier la région de votre instance Cloud SQL la plus proche de votre emplacement. Vous pouvez afficher la liste des régions en exécutant la commande suivante :

gcloud sql tiers list

Chaque niveau n'est disponible que dans certaines régions. Pour la partie gcloud du tutoriel, nous ne créons qu'une micro-instance. Vous pouvez donc trouver les régions disponibles pour ce niveau en exécutant spécifiquement (à condition que grep soit installé) :

gcloud sql tiers list | grep db-f1-micro

La commande permettant de créer l'instance elle-même ressemble à ceci (n'oubliez pas de remplacer <AUTHORIZED_IP> par l'adresse IP que vous avez obtenue à partir du navigateur ou de dig, <REGION> par une région proche de vous et de définir un mot de passe pour l'utilisateur racine "postgres") :

gcloud sql instances create sql-codelab-00 --database-version=POSTGRES_11 --tier=db-f1-micro --region=<REGION> --authorized-networks=<AUTHORIZED_IP> --root-password=<PASSWORD>

Cette opération prend quelques minutes.

Une fois l'opération terminée, la sortie de la CLI affiche le PRIMARY_ADDRESS de l'instance. Copiez-le pour l'étape suivante.

3. Tester la connexion et conclure

Pour vérifier que l'instance a été correctement configurée, exécutez la commande suivante sur la machine dont vous avez saisi l'adresse IP :

psql "host=<IP copied from previous step> port=5432 sslmode=disable user=postgres"

Spécifiez ensuite le mot de passe de l'utilisateur par défaut que vous avez configuré lors de la création de l'instance Cloud SQL.

Félicitations ! Si tout s'est déroulé comme prévu, vous devriez avoir l'invite Postgres et pouvoir exécuter des commandes sur votre base de données.

Et ensuite ?

Découvrez quelques-uns des ateliers de programmation...

Documents de référence