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

Cette page explique comment configurer une connectivité privée entre Integration Connectors et votre service de backend. comme CloudSQL pour MySQL, CloudSQL pour PostgreSQL et CloudSQL 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 dans différents sous-réseaux au sein d'un même VPC. Plus précisément, le rattachement de service est toujours créé dans un sous-réseau NAT.
  • Les serveurs proxy SOCKS5 doivent être associés à l'adresse IP 0.0.0.0:<port>, car cela est nécessaire pour le trafic entrant de l'équilibreur de charge et des sondes de vérification de l'état. Pour en savoir plus, consultez la section Vérification de l'état.
  • Le trafic de l'équilibreur de charge et de la vérification de l'état doit être envoyé sur 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.
    • Dans le sous-réseau de l'ILB, l'ILB doit pouvoir envoyer du trafic aux serveurs proxy SOCKS5.
    • La vérification de l'état doit pouvoir accéder aux serveurs proxy SOCKS5. La Les vérifications d'état de Google Cloud ont une plage d'adresses IP fixe (35.191.0.0/16, 130.211.0.0/22). Ces 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 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 cas suivants:
    • Équilibreurs de charge passthrough (ILB TCP/UDP L4) : requêtes provenant du service PSC les adresses IP NAT du rattachement doivent pouvoir atteindre vos serveurs proxy SOCKS5. Vous devez donc autoriser toute la plage d'adresses IP du sous-réseau NAT pour le rattachement de service. Pour en savoir plus, consultez la section 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 provenant du sous-réseau proxy de votre réseau VPC. Pour en savoir plus, consultez la section Sous-réseaux proxy réservés pour les équilibreurs de charge basés sur Envoy.

Configurer la connectivité privée

Parmi les services Google Cloud gérés, Cloud SQL pour MySQL exposer un rattachement de service PSC pour une connectivité privée. Dans ce cas, vous pouvez ignorer cette étape pour créer 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 des connecteurs d'intégration.

Vous devez créer un rattachement de service PSC dans les scénarios 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 consommer le rattachement de service.

Les étapes permettant de créer le rattachement de service dans ces deux scénarios est décrite 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

Le service géré peut ne pas autoriser le projet Integration Connectors à être ajouté à la liste d'autorisation pour utiliser le rattachement de service qu'il expose. Dans ce cas, vous devez créer un équilibreur de charge qui consomme le rattachement de service et l'expose aux connecteurs d'intégration en créant un autre rattachement de service dans votre projet.

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

Créer un équilibreur de charge avec un NEG PSC comme backend

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

Pour en savoir plus, consultez la page 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éer une règle de pare-feu pour autoriser la requête du NAT PSC à l'équilibreur de charge
  3. Créez un rattachement de service.

Pour en savoir plus, consultez la page 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 du projet Integration Connectors, consultez Ajouter les connecteurs 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 pièce jointe de service, le trafic des connecteurs d'intégration doit être mis en proxy via votre projet.

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

Pour configurer une 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 autorisant l'accès 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 le trafic des connecteurs d'intégration vers le service géré. Installez un proxy SOCKS5 dans l'instance de VM. Le proxy d'authentification Cloud SQL prend en charge via un proxy SOCKS5, ce qui vous permet 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.

      Les étapes détaillées d'installation et de configuration d'un serveur proxy SOCKS5 ne sont pas incluses dans ce document. Vous pouvez installer le proxy SOCKS5 de votre choix. Les étapes suivantes montrent comment installer et configurer le serveur proxy Dante SOCKS5.

      1. Connectez-vous en SSH à votre instance de VM.
        gcloud compute ssh \
                    --tunnel-through-iap \
                    PROXY_INSTANCE_1
                
      2. Installez le serveur proxy Dante SOCKS5.
        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 son é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 les instances de VM créées à l'étape 3 au groupe.
        gcloud compute instance-groups unmanaged add-instances INSTANCE_GROUP_NAME \
                    --instances=PROXY_INSTANCE_1
      3. Créez une vérification de l'état et autorisez le trafic qui en découle.
        1. Créez la 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 sonde.
          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 provenant 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 la section 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 (par exemple dans les backends TLS), la destination nécessite que vous utilisiez noms d'hôte au lieu d'adresses IP privées pour effectuer la validation TLS. Dans les cas où un réseau privé Le DNS est utilisé à la place d'une adresse IP pour la destination de l'hôte, en plus de créer un point de terminaison en tant qu'adresse IP, vous devez également configurer des zones gérées. Pour savoir comment créer un rattachement de point de terminaison en tant que nom d'hôte, consultez la section 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 du 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 les problèmes courants.

      • Assurez-vous que le projet locataire du connecteur figure sur la liste d'autorisation du rattachement de service.
      • Vérifiez la configuration suivante pour les règles de pare-feu:
        • Le trafic provenant du sous-réseau de l'attachement de service PSC doit être autorisé à atteindre votre service backend.
        • La vérification de l'état doit pouvoir accéder à votre système backend. Google Cloud les vérifications de l'état ont une plage d'adresses IP fixe (35.191.0.0/16, 130.211.0.0/22). Par conséquent, ces adresses IP doivent être autorisées à envoyer du trafic à votre serveur backend.
      • Le test de connectivité Google Cloud peut être utilisé pour identifier les lacunes de votre configuration réseau. Pour en savoir plus, consultez Créez et exécutez des tests de connectivité.