Connectivité réseau dans les services gérés Google Cloud

Cette page explique comment configurer la connectivité privée depuis Integration Connectors vers votre service de backend, tel que Cloud SQL pour MySQL, Cloud SQL pour PostgreSQL et Cloud SQL pour SQL Server. Sur cette page, nous partons du principe que vous connaissez bien les éléments suivants :

Remarques

Lorsque vous créez un rattachement de service PSC, tenez compte des points clés suivants :

  • Le rattachement de service PSC et l'équilibreur de charge sont créés sur des sous-réseaux différents dans le même VPC. Plus précisément, le rattachement de service est toujours créé sur un sous-réseau NAT.
  • Les serveurs proxy SOCKS5 doivent être liés à l'adresse IP 0.0.0.0:<port>. Cette association est nécessaire pour le trafic entrant de l'équilibreur de charge et les tests de vérification de l'état. Pour en savoir plus, consultez Vérification d'état.
  • Le trafic provenant de l'équilibreur de charge et du test de vérification de l'état doit être envoyé vers le même port.
  • Configurez les règles de pare-feu pour faciliter le flux de trafic.

    Règles d'entrée

    • Le trafic provenant du sous-réseau du rattachement de service PSC doit atteindre votre service de backend.
    • Sur le sous-réseau de l'ILB, l'ILB doit pouvoir envoyer du trafic vers les serveurs proxy SOCKS5.
    • Le test de vérification de l'état doit pouvoir accéder aux serveurs proxy SOCKS5. Les tests de vérification de l'état Google Cloud ont une plage d'adresses IP fixe (35.191.0.0/16, 130.211.0.0/22). Ces adresses IP peuvent donc être autorisées à envoyer du trafic vers les serveurs proxy SOCKS.

    Règles de sortie

    Le trafic de sortie est activé par défaut dans un projet Google Cloud, sauf si des règles de refus spécifiques sont configurées.

  • Tous vos composants Google Cloud, tels que le rattachement de service PSC et l'équilibreur de charge, doivent se trouver dans la même région.
  • Assurez-vous que vos serveurs proxy SOCKS5 acceptent le trafic dans les scénarios suivants :
    • Équilibreurs de charge passthrough (ILB L4 TCP/UDP) : les requêtes provenant des adresses IP NAT du rattachement de service PSC doivent pouvoir atteindre vos serveurs proxy SOCKS5. Par conséquent, vous devez autoriser l'ensemble de la plage d'adresses IP du sous-réseau NAT pour le rattachement de service. Pour en savoir plus, consultez Sous-réseaux Private Service Connect.
    • Équilibreurs de charge basés sur un proxy/HTTP(S) (ILB proxy L4, ILB L7) : toutes les nouvelles requêtes proviennent de l'équilibreur de charge. Par conséquent, vos serveurs proxy SOCKS5 doivent accepter les requêtes issues du sous-réseau proxy de votre réseau VPC. Pour en savoir plus, consultez Sous-réseaux proxy réservés aux équilibreurs de charge basés sur Envoy.

Configurer la connectivité privée

Certains services Google Cloud gérés, tels que CloudSQL MySQL, exposent un rattachement de service PSC pour la connectivité privée. Dans ce cas, vous pouvez ignorer cette étape de création d'un rattachement de service PSC. Le rattachement de service PSC fourni par le service géré peut être utilisé pour créer le rattachement de point de terminaison Integration Connectors.

Vous devez créer un rattachement de service PSC dans les cas suivants :

  • Le service géré Google Cloud n'expose pas de rattachement de service, mais une adresse IP à l'aide de l'accès aux services privés.
  • Le service géré Google Cloud expose un rattachement de service, mais ne permet pas d'ajouter le projet Integration Connectors à la liste d'autorisation pour qu'il puisse utiliser le rattachement de service.

Les étapes permettant de créer le rattachement de service pour ces deux scénarios sont décrites en détail dans les sections suivantes. Après avoir créé le rattachement de service, vous devez créer un rattachement de point de terminaison et configurer une connexion pour l'utiliser.

Créer un rattachement de service pour un service géré qui limite l'accès

Il est possible que le service géré n'autorise pas le projet Integration Connectors à utiliser le rattachement de service qu'il expose. Dans ce cas, vous devez créer un équilibreur de charge qui se sert du rattachement de service et l'expose dans Integration Connectors en créant un autre rattachement de service dans votre projet.

L'image suivante illustre un service géré qui expose un rattachement de service :

Pour obtenir un exemple de service géré qui expose un rattachement de service, consultez Connectivité privée pour un cluster MongoDB Atlas.

Créer un équilibreur de charge avec un NEG PSC en tant que backend

  1. Créez un NEG pour établir la connexion à un service publié.
  2. Ajoutez un backend à un équilibreur de charge réseau proxy interne régional.

Pour en savoir plus, consultez Créer un NEG Private Service Connect.

Créer un rattachement de service

  1. Créez un sous-réseau pour le NAT PSC.
  2. Créez une règle de pare-feu pour autoriser les requêtes envoyées depuis le NAT PSC vers l'équilibreur de charge.
  3. Créez un rattachement de service.

Pour en savoir plus, consultez Créer un rattachement de service PSC.

Autoriser la connexion Private Service Connect à partir du projet Integration Connectors

Pour savoir comment ajouter la connexion Private Service Connect à la liste d'autorisation à partir du projet Integration Connectors, consultez Ajouter Integration Connectors à la liste d'autorisation.

Créer un rattachement de service pour un service géré qui expose une adresse IP

Si le service géré n'expose pas de rattachement de service, le trafic provenant d'Integration Connectors doit être acheminé par proxy par le biais de votre projet.

L'image suivante représente un service géré qui n'expose pas de rattachement de service :

Pour configurer la connectivité privée, procédez comme suit :

  1. Créez un rattachement de service PSC.
    1. Créez des instances de VM Compute Engine pour exécuter des serveurs proxy SOCKS5.
      1. Créez l'instance de proxy 1.
        gcloud compute instances create PROXY_INSTANCE_1 \
                    --project=PROJECT_ID \
                    --network-interface=network-tier=PREMIUM,subnet=SUBNET_NAME_2,no-address
                  

      Selon vos besoins, vous pouvez créer autant d'instances de VM que nécessaire.

    2. Créez une règle de pare-feu pour autoriser la connexion en SSH à vos instances de VM.
      gcloud compute firewall-rules create FIREWALL_RULE_NAME_SSH \
                  --direction=INGRESS --priority=1000 --network=VPC_NETWORK --allow=tcp:22
                  
    3. L'instance de VM sera utilisée pour acheminer par proxy le trafic d'Integration Connectors vers le service géré. Installez un proxy SOCKS5 dans l'instance de VM. Le proxy d'authentification Cloud SQL accepte le chaînage avec un proxy SOCKS5, ce qui vous permet de transférer le trafic chiffré du proxy d'authentification Cloud SQL vers l'instance Cloud SQL de destination. Vous avez donc besoin de serveurs proxy SOCKS5 pour vous connecter à une instance Cloud SQL privée.

      La procédure détaillée pour installer et configurer un serveur proxy SOCKS5 n'est pas abordée dans ce document. Vous pouvez installer le proxy SOCKS5 de votre choix. Les étapes suivantes montrent comment installer et configurer le serveur proxy SOCKS5 Dante.

      1. Connectez-vous en SSH à votre instance de VM.
        gcloud compute ssh \
                    --tunnel-through-iap \
                    PROXY_INSTANCE_1
                
      2. Installez le serveur proxy SOCKS5 Dante.
        sudo apt update
                sudo apt install dante-server
      3. Vérifiez l'interface du serveur.
        sudo ip a
      4. Créez une sauvegarde de la configuration Dante.
        sudo mv /etc/danted.conf /etc/danted.conf.bak
      5. Créez un fichier de configuration Dante.
        sudo nano /etc/danted.conf
      6. Copiez la configuration suivante dans le fichier de configuration :
        logoutput: /var/log/socks.log
                # Bind the server to the 0.0.0.0 IP address to allow traffic
                # traffic from the load balancer and the health check probes.
                internal: 0.0.0.0 port = 1080
                external: ens4
                clientmethod: none
                socksmethod: none
                user.privileged: root
                user.notprivileged: nobody
                client pass {
                        from: 0.0.0.0/0 to: 0.0.0.0/0
                        log: error connect disconnect
                }
                client block {
                        from: 0.0.0.0/0 to: 0.0.0.0/0
                        log: connect error
                }
                socks pass {
                        from: 0.0.0.0/0 to: 0.0.0.0/0
                        log: error connect disconnect
                }
                socks block {
                        from: 0.0.0.0/0 to: 0.0.0.0/0
                        log: connect error
                }
      7. Redémarrez le serveur Dante et vérifiez l'état.
        sudo systemctl restart danted
                sudo systemctl status danted
      8. Quittez l'instance de VM.
        exit
    4. Créez un équilibreur de charge avec l'instance de VM comme backend.
      1. Créez un groupe d'instances non géré.
        gcloud compute instance-groups unmanaged create INSTANCE_GROUP_NAME
      2. Ajoutez au groupe les instances de VM créées à l'étape 3.
        gcloud compute instance-groups unmanaged add-instances INSTANCE_GROUP_NAME \
                    --instances=PROXY_INSTANCE_1
      3. Créez un test de vérification de l'état, puis autorisez le trafic provenant du test.
        1. Créez le test de vérification de l'état.
          gcloud compute health-checks create tcp HEALTH_CHECK_NAME \
                      --port BACKEND_SERVER_PORT --region=REGION

          Dans cette commande, définissez BACKEND_SERVER_PORT sur "1080", qui est le port par défaut sur lequel les serveurs proxy SOCKS5 s'exécutent.

        2. Créez une règle de pare-feu pour autoriser le trafic provenant de la vérification.
          gcloud compute firewall-rules create FIREWALL_RULE_NAME_HEALTHCHECK \
                      --direction=INGRESS --priority=1000 --network=VPC_NETWORK --allow=tcp:BACKEND_SERVER_PORT \
                      --source-ranges=35.191.0.0/16,130.211.0.0/22
      4. Créez un équilibreur de charge interne L4 et autorisez le trafic provenant de l'équilibreur de charge.
        1. Créez un service de backend.
          gcloud compute backend-services create BACKEND_SERVICE \
                      --load-balancing-scheme=internal --protocol=tcp --health-checks=HEALTH_CHECK_NAME \
                      --health-checks-region=REGION 
        2. Ajoutez le groupe d'instances au service de backend.
          gcloud compute backend-services add-backend BACKEND_SERVICE \
                      --instance-group=INSTANCE_GROUP_NAME \
                      --instance-group-zone=ZONE
        3. Créez une règle de transfert.
          gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
                      --load-balancing-scheme=internal --network=VPC_NETWORK --subnet=SUBNET_NAME_2 \
                      --ip-protocol=TCP --ports=BACKEND_SERVER_PORT --backend-service=BACKEND_SERVICE \
                      --backend-service-region=REGION
        4. Créez une règle de pare-feu pour autoriser le trafic interne de l'équilibreur de charge vers le groupe d'instances.
          gcloud compute firewall-rules create FIREWALL_RULE_NAME_INTERNAL \
                      --direction=INGRESS --priority=1000 --network=VPC_NETWORK \
                      --action=ALLOW --rules=all --source-ranges=SUBNET_RANGE_2

      Créer un rattachement de point de terminaison

      Après avoir créé un rattachement de service pour un service géré, vous devez créer un rattachement de point de terminaison, puis l'utiliser dans votre connexion.

      Rattachement de point de terminaison en tant qu'adresse IP

      Pour savoir comment créer un rattachement de point de terminaison en tant qu'adresse IP, consultez Créer un rattachement de point de terminaison en tant qu'adresse IP.

      Rattachement de point de terminaison en tant que nom d'hôte

      Dans certains cas, comme pour les backends compatibles avec TLS, la destination nécessite que vous utilisiez des noms d'hôte au lieu d'adresses IP privées pour effectuer la validation TLS. Dans les cas où un DNS privé est utilisé à la place d'une adresse IP pour la destination de l'hôte, vous devez configurer des zones gérées en plus de créer un rattachement de point de terminaison en tant qu'adresse IP. Pour savoir comment créer un rattachement de point de terminaison en tant que nom d'hôte, consultez Créer un rattachement de point de terminaison en tant que nom d'hôte.

      Plus tard, lorsque vous configurerez votre connexion pour utiliser le rattachement de point de terminaison, vous pourrez le sélectionner.

      Configurer une connexion pour utiliser le rattachement de point de terminaison

      Maintenant que vous avez créé un rattachement de point de terminaison, utilisez-le dans votre connexion. Lorsque vous créez une connexion ou mettez à jour une connexion existante, dans la section "Destinations", sélectionnez Rattachement de point de terminaison comme Type de destination, puis sélectionnez le rattachement de point de terminaison que vous avez créé dans la liste Rattachement de point de terminaison.

      Si vous avez créé une zone gérée, sélectionnez Adresse de l'hôte comme Type de destination et utilisez l'enregistrement A que vous avez créé lors de la création de la zone gérée.

      Conseils de dépannage

      Si vous rencontrez des problèmes de connectivité privée, suivez les consignes de cette section pour éviter tout problème courant.

      • Veillez à ce que le projet locataire du connecteur soit ajouté à la liste d'autorisation dans le rattachement de service.
      • Assurez-vous que les règles de pare-feu sont configurées comme suit :
        • Le trafic provenant du sous-réseau du rattachement de service PSC doit pouvoir atteindre votre service de backend.
        • Le test de vérification de l'état doit pouvoir accéder à votre système backend. Les tests de vérification de l'état Google Cloud ont une plage d'adresses IP fixe (35.191.0.0/16, 130.211.0.0/22). Ces adresses IP doivent donc être autorisées à envoyer du trafic vers votre serveur backend.
      • Le test de connectivité Google Cloud permet d'identifier les lacunes de votre configuration réseau. Pour en savoir plus, consultez Créer et exécuter des tests de connectivité.