Se connecter à un cluster depuis l'extérieur de son VPC

Cette page examine différentes façons de se connecter à un cluster AlloyDB pour PostgreSQL depuis l'extérieur de son cloud privé virtuel (VPC) configuré. Nous partons ici du principe que vous avez déjà créé un cluster AlloyDB.

À propos des connexions externes

Votre cluster AlloyDB comprend un certain nombre de nœuds au sein d'un VPCGoogle Cloud . Lorsque vous créez un cluster, vous configurez l'accès aux services privés entre l'un de vos VPC et le VPC géré par Google contenant votre nouveau cluster. Cette connexion d'appairage vous permet d'utiliser des adresses IP privées pour accéder aux ressources du VPC du cluster comme si elles faisaient partie de votre propre VPC.

Il existe des situations où votre application doit se connecter à votre cluster depuis l'extérieur de ce VPC connecté:

  • Votre application s'exécute ailleurs dans l'écosystème Google Cloud , en dehors du VPC que vous avez connecté à votre cluster via l'accès aux services privés.

  • Votre application s'exécute sur un VPC existant en dehors du réseau de Google.

  • Votre application s'exécute sur site, sur une machine située ailleurs sur le réseau Internet public.

Dans tous ces cas, vous devez configurer un service supplémentaire pour permettre ce type de connexion externe à votre cluster AlloyDB.

Résumé des solutions de connexion externe

Nous vous recommandons deux solutions générales pour établir des connexions externes, en fonction de vos besoins:

  • Pour le développement de projets ou le prototypage, ou pour un environnement de production relativement peu coûteux, configurez une machine virtuelle (VM) intermédiaire, également connue sous le nom de bastion, au sein de votre VPC. Il existe différentes méthodes pour utiliser cette VM intermédiaire comme connexion sécurisée entre un environnement d'application externe et votre cluster AlloyDB.

  • Pour les environnements de production nécessitant une haute disponibilité, envisagez d'établir une connexion permanente entre le VPC et votre application via Cloud VPN ou Cloud Interconnect.

Les sections suivantes décrivent ces solutions de connexion externe en détail.

Se connecter via une VM intermédiaire

Pour établir une connexion à un cluster AlloyDB depuis l'extérieur de son VPC à l'aide d'outils Open Source et un minimum de ressources supplémentaires, exécutez un service proxy sur une VM intermédiaire configurée dans ce VPC. Vous pouvez configurer une nouvelle VM à cette fin ou utiliser une VM déjà en cours d'exécution dans le VPC de votre cluster AlloyDB.

En tant que solution autogérée, l'utilisation d'une VM intermédiaire coûte généralement moins cher et offre un temps de configuration plus rapide que l'utilisation d'un produit de connectivité réseau. Elle présente également des inconvénients : la disponibilité, la sécurité et le débit de la connexion dépendent tous de la VM intermédiaire, que vous devez gérer en tant que partie intégrante de votre projet.

Se connecter via IAP

À l'aide d'Identity-Aware Proxy (IAP), vous pouvez vous connecter de façon sécurisée à votre cluster sans avoir à exposer l'adresse IP publique de la VM intermédiaire. Vous pouvez utiliser une combinaison de règles de pare-feu et Identity and Access Management (IAM) pour limiter l'accès via cette route. IAP est donc une bonne solution pour les utilisations hors production telles que le développement et le prototypage.

Pour configurer l'accès IAP à votre cluster, procédez comme suit:

  1. Installez Google Cloud CLI sur votre client externe.

  2. Préparez votre projet pour le transfert TCP d'IAP.

    Lors de la définition de la nouvelle règle de pare-feu, autorisez le trafic TCP entrant sur le port 22 (SSH). Si vous utilisez le réseau par défaut de votre projet avec sa règle default-allow-ssh pré-remplie activée, vous n'avez pas besoin de définir une règle supplémentaire.

  3. Configurez le transfert de port entre votre client externe et la VM intermédiaire à l'aide de SSH via IAP:

    gcloud compute ssh my-vm \
           --tunnel-through-iap \
           --zone=ZONE_ID \
           --ssh-flag="-L PORT_NUMBER:ALLOYDB_IP_ADDRESS:5432"

    Remplacez les éléments suivants :

    • ZONE_ID: ID de la zone où se trouve le cluster (par exemple, us-central1-a).
    • ALLOYDB_IP_ADDRESS: adresse IP de l'instance AlloyDB à laquelle vous souhaitez vous connecter.
    • PORT_NUMBER: numéro de port de votre VM.
  4. Testez votre connexion à l'aide de psql sur votre client externe, en le connectant au port local que vous avez spécifié à l'étape précédente. Par exemple, pour vous connecter en tant que rôle utilisateur postgres au port 5432:

    psql -h localhost -p 5432 -U USERNAME

    Remplacez les éléments suivants :

    • USERNAME: utilisateur PostgreSQL que vous souhaitez connecter à l'instance (par exemple, l'utilisateur par défaut postgres).

Se connecter via un proxy SOCKS

L'exécution d'un service SOCKS sur la VM intermédiaire offre une connexion flexible et évolutive à votre cluster AlloyDB, avec un chiffrement de bout en bout fourni par le proxy d'authentification AlloyDB. Avec une configuration appropriée, vous pouvez l'adapter aux charges de travail de production.

Cette solution comprend les étapes suivantes:

  1. Installez, configurez et exécutez un serveur SOCKS sur la VM intermédiaire. Dante est un exemple de solution Open Source très répandue.

    Configurez le serveur pour qu'il soit lié à l'interface réseau ens4 de la VM à la fois pour les connexions externes et internes. Spécifiez le port de votre choix pour les connexions internes.

  2. Configurez le pare-feu de votre VPC pour autoriser le trafic TCP provenant de l'adresse IP ou de la plage appropriée vers le port configuré du serveur SOCKS.

  3. Installez le proxy d'authentification AlloyDB sur le client externe.

  4. Exécutez le proxy d'authentification AlloyDB sur votre client externe, en définissant la variable d'environnement ALL_PROXY sur l'adresse IP de la VM intermédiaire et en spécifiant le port utilisé par le serveur SOCKS.

    Cet exemple configure le proxy d'authentification AlloyDB pour se connecter à la base de données sur my-main-instance, via un serveur SOCKS exécuté sur 198.51.100.1 sur le port 1080:

    ALL_PROXY=socks5://198.51.100.1:1080 ./alloydb-auth-proxy \
    /projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID

    Si vous vous connectez à partir d'un VPC appairé, vous pouvez utiliser l'adresse IP interne de la VM intermédiaire. Sinon, utilisez son adresse IP externe.

  5. Testez votre connexion à l'aide de psql sur votre client externe, en le connectant au port sur lequel le proxy d'authentification AlloyDB écoute. Par exemple, pour vous connecter en tant que rôle utilisateur postgres au port 5432:

    psql -h IP_ADDRESS -p PORT_NUMBER -U USERNAME

Se connecter via un pooleur PostgreSQL

Si vous devez installer et exécuter le proxy d'authentification AlloyDB sur la VM intermédiaire plutôt que sur un client externe, vous pouvez activer des connexions sécurisées en l'associant à un proxy compatible avec le protocole, également appelé regroupement de connexions. Pgpool-II et PgBouncer sont des fonctionnalités de regroupement de connexions Open Source couramment utilisées pour PostgreSQL.

Dans cette solution, vous exécutez à la fois le proxy d'authentification AlloyDB et le regroupement de connexions sur la VM intermédiaire. Votre client ou votre application peut ensuite se connecter directement au pool de façon sécurisée via SSL, sans avoir à exécuter de services supplémentaires. Le regroupement de connexions se charge de transmettre les requêtes PostgreSQL à votre cluster AlloyDB via le proxy d'authentification.

Comme chaque instance d'un cluster AlloyDB possède une adresse IP interne distincte, chaque service proxy ne peut communiquer qu'avec une instance spécifique: l'instance principale, l'instance de secours ou un pool de lecture. Par conséquent, vous devez exécuter un service de regroupement de connexions distinct, avec un certificat SSL correctement configuré, pour chaque instance du cluster.

Se connecter via Cloud VPN ou Cloud Interconnect

Pour les tâches de production nécessitant une haute disponibilité, nous recommandons l'utilisation d'un Google Cloud produit de connectivité réseau: Cloud VPN ou Cloud Interconnect, en fonction des besoins de votre service externe et de la topologie de votre réseau. Vous devrez ensuite configurer Cloud Router pour annoncer les routes appropriées.

Bien que l'utilisation d'un produit de connectivité réseau soit un processus plus complexe que la configuration d'une VM intermédiaire, cette approche transfère la charge de la disponibilité et du temps de disponibilité de Google vers Google. En particulier, le VPN haute disponibilité offre un SLA de 99,99 %, ce qui le rend adapté aux environnements de production.

Les solutions de connectivité réseau vous évitent également d'avoir à gérer une VM sécurisée distincte dans le cadre de votre application, ce qui évite les risques de point de défaillance unique inhérents à cette approche.

Pour en savoir plus sur ces solutions, consultez Choisir un produit de connectivité réseau.

Étape suivante