Configurer l'appairage VPC

Vous pouvez utiliser l'appairage de réseaux VPC pour permettre à Datastream de communiquer de manière privée avec les ressources de votre réseau cloud privé virtuel (VPC). La connexion d'appairage de réseaux VPC entre votre réseau VPC et le réseau VPC Datastream permet à Datastream de se connecter aux éléments suivants:

La connexion d'appairage de réseaux VPC entre votre réseau VPC et le réseau VPC Datastream ne permet pas à Datastream de se connecter aux éléments suivants:

Pour établir une connectivité entre Datastream et une ressource accessible uniquement à partir de votre réseau VPC, vous pouvez utiliser une VM NAT (Network Address Translation) dans votre réseau VPC. Un cas d'utilisation courant d'une VM NAT est lorsque Datastream doit se connecter à une instance Cloud SQL.

Cette page décrit un exemple de configuration de VM NAT qui permet à Datastream de se connecter de manière privée à une instance Cloud SQL.

Schéma de parcours utilisateur de Datastream

Conditions préalables à l'appairage de VPC

Avant de créer une configuration de connectivité privée, vous devez suivre les étapes suivantes pour que Datastream puisse créer la connexion d'appairage VPC vers votre projet:

  • Vous disposez d'un réseau VPC pouvant être appairé au réseau privé de Datastream et qui répond aux exigences décrites sur la page Appairage de réseaux VPC. Pour en savoir plus sur la création de ce réseau, consultez la section Utiliser l'appairage de réseaux VPC.
  • Identifiez une plage d'adresses IP disponible (avec un bloc CIDR de /29) sur le réseau VPC. Il ne peut pas s'agir d'une plage d'adresses IP qui existe déjà en tant que sous-réseau, d'une plage d'adresses IP préallouée pour l'accès aux services privés ni de toute route (autre que la route par défaut 0.0.0.0) qui inclut la plage d'adresses IP. Datastream utilise cette plage d'adresses IP pour créer un sous-réseau afin de pouvoir communiquer avec la base de données source. Le tableau suivant décrit les plages d'adresses IP valides.
Plage Description
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
Adresses IP privées RFC 1918
100.64.0.0/10 Espace d'adressage partagé RFC 6598
192.0.0.0/24 Attributions de protocole IETF RFC 6890
192.0.2.0/24 (TEST-NET-1)
198.51.100.0/24 (TEST-NET-2)
203.0.113.0/24 (TEST-NET-3)
Documentation RFC 5737
192.88.99.0/24 Relais IPv6 vers IPv4 (obsolète) RFC 7526
198.18.0.0/15 Série de tests comparatifs RFC 2544
  • Vérifiez que Google Cloud et le pare-feu sur site autorisent le trafic provenant de la plage d'adresses IP sélectionnée. Si ce n'est pas le cas, créez une règle de pare-feu d'entrée qui autorise le trafic sur le port de la base de données source, et assurez-vous que la plage d'adresses IPv4 de la règle de pare-feu est identique à la plage d'adresses IP allouée lors de la création de la ressource de connectivité privée:

    gcloud compute firewall-rules create FIREWALL-RULE-NAME \
      --direction=INGRESS \
      --priority=PRIORITY \
      --network=PRIVATE_CONNECTIVITY_VPC \
      --project=VPC_PROJECT \
      --action=ALLOW \
      --rules=FIREWALL_RULES \
      --source-ranges=IP-RANGE
      

    Remplacez les éléments suivants :

    • FIREWALL-RULE-NAME: nom de la règle de pare-feu à créer.
    • PRIORITY: priorité de la règle, exprimée sous la forme d'un entier compris entre 0 et 65 535 inclus. La valeur doit être inférieure à celle définie pour la règle de blocage du trafic, le cas échéant. Les valeurs de priorité inférieures impliquent une priorité plus élevée.
    • PRIVATE_CONNECTIVITY_VPC: réseau VPC pouvant être associé au réseau privé Datastream et répondant aux exigences décrites sur la page Appairage de réseaux VPC. Il s'agit du VPC que vous spécifiez lorsque vous créez votre configuration de connectivité privée.
    • VPC_PROJECT: projet du réseau VPC.
    • FIREWALL_RULES: liste des protocoles et des ports auxquels la règle de pare-feu s'applique, par exemple tcp:80. La règle doit autoriser le trafic TCP vers l'adresse IP et le port de la base de données source ou du proxy. Étant donné que la connectivité privée peut prendre en charge plusieurs bases de données, la règle doit tenir compte de l'utilisation réelle de votre configuration.
    • IP-RANGE: plage d'adresses IP utilisée par Datastream pour communiquer avec la base de données source. Il s'agit de la même plage que celle que vous indiquez dans le champ Allouer une plage d'adresses IP lorsque vous créez votre configuration de connectivité privée.

      Vous devrez peut-être également créer une règle de pare-feu de sortie identique pour autoriser le trafic vers Datastream.

  • Vous disposez d'un rôle contenant l'autorisation compute.networks.list. Vous disposez ainsi des autorisations IAM requises pour répertorier les réseaux VPC de votre projet. Pour connaître les rôles qui contiennent cette autorisation, consultez la documentation de référence sur les autorisations IAM.

Conditions préalables pour les VPC partagés

Si vous utilisez un VPC partagé, vous devez effectuer les actions suivantes en plus de celles décrites dans la section Conditions préalables pour le VPC:

  1. Dans le projet de service :

    1. Activez l'API Datastream.
    2. Obtenez l'adresse e-mail utilisée pour le compte de service Datastream. Les comptes de service Datastream sont créés lorsque vous effectuez l'une des opérations suivantes:

      • Vous créez une ressource Datastream, comme un profil de connexion ou un flux.
      • Vous créez une configuration de connectivité privée, sélectionnez votre VPC partagé, puis cliquez sur Créer un compte de service Datastream. Le compte de service est créé dans le projet hôte.

      Pour obtenir l'adresse e-mail utilisée pour le compte de service Datastream, recherchez le numéro du projet sur la page d'accueil de la Google Cloud console. L'adresse e-mail du compte de service est service-[project_number]@gcp-sa-datastream.iam.gserviceaccount.com.

  2. Sur le projet hôte :

    1. Accordez le rôle IAM (Identity and Access Management) compute.networkAdmin au compte de service Datastream. Ce rôle n'est requis que lorsque vous créez l'appairage de VPC. Une fois l'appairage établi, vous n'avez plus besoin de ce rôle.

      Si votre organisation ne permet pas d'accorder l'autorisation, créez un rôle personnalisé doté des autorisations minimales suivantes pour créer et supprimer des ressources de connexion privées:

    Pour en savoir plus sur les rôles personnalisés, consultez Créer et gérer des rôles personnalisés.

Configurer une VM NAT

  1. Identifiez l'adresse IP de l'instance Cloud SQL à laquelle Datastream doit se connecter.

  2. Identifiez votre réseau VPC. Il s'agit du réseau VPC connecté au réseau VPC Datastream à l'aide de l'appairage de réseaux VPC.

  3. Si vous ne l'avez pas déjà fait, créez une configuration de connectivité privée dans Datastream. Cela crée la connexion d'appairage de réseaux VPC qui connecte votre réseau VPC et le réseau VPC Datastream. Notez la plage d'adresses IP utilisée par la configuration de la connectivité privée Datastream.

  4. Choisissez un type de machine à utiliser pour la VM NAT que vous créerez à l'étape suivante.Google Cloud applique une limite de bande passante sortante maximale par instance pour les paquets acheminés par les sauts suivants dans un réseau VPC, en fonction du type de machine de l'instance de VM. Pour en savoir plus, consultez Sortie vers des destinations routables dans un réseau VPC et Bande passante de sortie maximale par instance.

  5. Créez la VM NAT dans votre réseau VPC. Si votre réseau VPC est un réseau VPC partagé, vous pouvez créer la VM NAT dans le projet hôte ou dans un projet de service, à condition que l'interface réseau de la VM NAT se trouve dans le réseau VPC partagé.

    • Pour réduire le temps aller-retour réseau, créez la VM NAT dans la même région que Datastream.
    • Cet exemple suppose que la VM NAT ne possède qu'une seule interface réseau.
    • Exécutez le script dans une distribution Linux, par exemple Debian 12.
    • Utilisez le script de démarrage suivant. Le script de démarrage est exécuté par root à chaque démarrage de la VM. Ce script inclut des commentaires expliquant ce que fait chaque ligne du script. Dans le script, remplacez CLOUD_SQL_INSTANCE_IP par l'adresse IP de l'instance Cloud SQL et DATABASE_PORT par le port de destination utilisé par le logiciel de base de données.
    #! /bin/bash
    
    export DB_ADDR=CLOUD_SQL_INSTANCE_IP
    export DB_PORT=DATABASE_PORT
    
    # Enable the VM to receive packets whose destinations do
    # not match any running process local to the VM
    echo 1 > /proc/sys/net/ipv4/ip_forward
    
    # Ask the Metadata server for the IP address of the VM nic0
    # network interface:
    md_url_prefix="http://169.254.169.254/computeMetadata/v1/instance"
    vm_nic_ip="$(curl -H "Metadata-Flavor: Google" ${md_url_prefix}/network-interfaces/0/ip)"
    
    # Clear any existing iptables NAT table entries (all chains):
    iptables -t nat -F
    
    # Create a NAT table entry in the prerouting chain, matching
    # any packets with destination database port, changing the destination
    # IP address of the packet to the SQL instance IP address:
    iptables -t nat -A PREROUTING \
         -p tcp --dport $DB_PORT \
         -j DNAT \
         --to-destination $DB_ADDR
    
    # Create a NAT table entry in the postrouting chain, matching
    # any packets with destination database port, changing the source IP
    # address of the packet to the NAT VM's primary internal IPv4 address:
    iptables -t nat -A POSTROUTING \
         -p tcp --dport $DB_PORT \
         -j SNAT \
         --to-source $vm_nic_ip
    
    # Save iptables configuration:
    iptables-save
  6. Créez une règle de pare-feu d'autorisation d'entrée (ou une règle dans une stratégie de pare-feu réseau globale, une stratégie de pare-feu réseau régionale ou une stratégie de pare-feu hiérarchique) avec les caractéristiques suivantes:

    • Direction: entrée
    • Action: autoriser
    • Paramètre cible: au moins la VM NAT
    • Paramètre source: plage d'adresses IP utilisée par la configuration de connectivité privée Datastream
    • Protocol (Protocole) : TCP
    • Port: doit inclure au moins DATABASE_PORT
  7. La règle implicite d'autorisation pour le trafic sortant permet à la VM NAT d'envoyer des paquets vers n'importe quelle destination. Si votre réseau VPC utilise des règles de pare-feu de refus du trafic sortant, vous devrez peut-être créer une règle de pare-feu autorisant le trafic sortant pour permettre à la VM NAT d'envoyer des paquets à l'instance Cloud SQL. Si une règle d'autorisation de sortie est nécessaire, utilisez les paramètres suivants:

    • Direction: sortie
    • Action: autoriser
    • Paramètre cible: au moins la VM NAT
    • Paramètre de destination: adresse IP de l'instance Cloud SQL
    • Protocol (Protocole) : TCP
    • Port: doit inclure au moins DATABASE_PORT
  8. Assurez-vous d'avoir configuré votre instance Cloud SQL pour qu'elle accepte les connexions à partir de l'adresse IPv4 interne principale utilisée par l'interface réseau de votre VM NAT. Pour obtenir des instructions, consultez la section Autoriser avec des réseaux autorisés dans la documentation Cloud SQL.

  9. Créez un profil de connexion dans Datastream. Dans les informations de connexion du profil, spécifiez l'adresse IPv4 interne principale de la VM NAT que vous avez créée. Saisissez le port de la base de données source dans le champ de port du profil de connexion.

Configurer une paire de VM NAT et un équilibreur de charge réseau passthrough interne

Pour améliorer la fiabilité d'une solution de VM NAT, envisagez l'architecture suivante, qui utilise une paire de VM NAT et un équilibreur de charge réseau passthrough interne:

  1. Créez deux VM NAT dans différentes zones de la même région. Suivez les instructions de la section Configurer une VM NAT pour créer chaque VM et placez-la dans son propre groupe d'instances non géré zonal.

    Vous pouvez également créer un groupe d'instances géré régional. Dans le modèle de groupe d'instances géré, incluez un script de démarrage comme l'exemple de script de démarrage dans les instructions Configurer une VM NAT.

  2. Créez un équilibreur de charge réseau passthrough interne dont le service de backend utilise le ou les groupes d'instances de l'étape précédente comme backends. Pour obtenir un exemple d'équilibreur de charge réseau passthrough interne, consultez la page Configurer un équilibreur de charge réseau passthrough interne avec backends de groupe d'instances de VM.

    Lorsque vous configurez la vérification de l'état de l'équilibreur de charge, vous pouvez utiliser une vérification de l'état TCP qui utilise un port TCP de destination correspondant à DATABASE_PORT. Les paquets de vérification de l'état sont acheminés vers le CLOUD_SQL_INSTANCE_IP conformément à la configuration de la VM NAT. Vous pouvez également exécuter un processus local sur la VM NAT qui répond à une vérification d'état TCP ou HTTP sur un port personnalisé.

  3. Créez des règles de pare-feu et configurez les réseaux autorisés Cloud SQL comme décrit dans les instructions de la section Configurer une VM NAT. Assurez-vous que les réseaux autorisés Cloud SQL incluent l'adresse IPv4 interne principale des deux VM NAT.

  4. Lorsque vous créez un profil de connexion Datastream, spécifiez l'adresse IP de la règle de transfert de l'équilibreur de charge réseau passthrough interne dans les informations de connexion du profil.

Étape suivante