Accéder aux ressources externes d'un réseau privé à l'aide d'une adresse IP externe statique

Cette page explique comment configurer vos pools privés pour accéder à des ressources externes via une adresse IP externe statique.


Pour obtenir des instructions détaillées sur cette tâche directement dans la console Google Cloud, cliquez sur Visite guidée :

Visite guidée


Avant de commencer

  • Enable the Cloud Build, Compute Engine, and Service Networking APIs.

    Enable the APIs

  • Pour obtenir les autorisations nécessaires pour configurer une connexion privée, demandez à votre administrateur de vous accorder le rôle IAM Administrateur de réseau Compute Engine (roles/compute.networkAdmin) sur le projet Cloud dans lequel réside le réseau VPC. Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

  • Pour utiliser les commandes gcloud sur cette page, installez Google Cloud CLI.

Créer un réseau VPC

Console

Pour créer un réseau VPC à l'aide de la console Google Cloud, procédez comme suit:

  1. Ouvrez la page Réseaux VPC dans la console Google Cloud.

    Accéder aux réseaux VPC

  2. Cliquez sur Créer un réseau VPC pour créer un réseau.

    La page Créer un réseau VPC s'affiche.

  3. Attribuez un nom à votre réseau.

  4. Dans Mode de création du sous-réseau, sélectionnez Automatique.

  5. Si vous souhaitez personnaliser davantage d'autres champs, consultez Créer et gérer des réseaux VPC. Sinon, laissez tous les champs tels quels.

  6. Cliquez sur Créer pour créer votre réseau VPC.

    Après avoir cliqué sur Créer, votre nouveau réseau VPC s'affiche sur la page Réseaux VPC.

gcloud

Pour créer un réseau VPC à l'aide de l'outil de ligne de commande gcloud, saisissez la commande suivante dans votre terminal, où NETWORK_NAME correspond au nom de votre réseau VPC:

gcloud compute networks create NETWORK_NAME \
  --subnet-mode=auto

Après avoir cliqué sur Créer, votre nouveau réseau VPC s'affiche sur la page Réseaux VPC.

Pour en savoir plus sur la création et la gestion de réseaux VPC, consultez la page Créer et gérer des réseaux VPC.

Créer une connexion privée

Console

Pour créer une connexion privée entre votre réseau VPC et le réseau du producteur de services, procédez comme suit:

  1. Ouvrez la page Réseaux VPC dans la console Google Cloud.

    Accéder aux réseaux VPC

  2. Cliquez sur le nom de votre réseau.

    La page Détails du réseau VPC s'affiche.

  3. Cliquez sur l'onglet Connexion de service privée.

    1. Sélectionnez l'onglet Plages d'adresses IP allouées pour les services.

    2. Cliquez sur Allouer une plage d'adresses IP.

      La fenêtre pop-up Allouer une plage d'adresses IP internes s'affiche.

      1. Saisissez un nom pour votre plage d'adresses IP.

      2. Sous Plage d'adresses IP, sélectionnez Automatique.

      3. Dans le champ Longueur du préfixe, saisissez une longueur de préfixe pour votre réseau.

      4. Cliquez sur Allouer pour allouer votre plage d'adresses IP.

    3. Sélectionnez l'onglet Connexions privées aux services.

    4. Cliquez sur Créer une connexion.

      La fenêtre pop-up Créer une connexion privée s'affiche.

      1. Sous Allocation attribuée, sélectionnez votre plage d'adresses IP.

      2. Cliquez sur Se connecter.

      Votre connexion s'affiche désormais dans le tableau sous l'onglet Connexions privées aux services.

      Cliquez sur Activer (Exporter la route personnalisée) pour vous assurer que les routes du VPC sont appliquées au réseau sur lequel s'exécutent les instances de votre pool privé.

Vous avez maintenant configuré votre réseau.

gcloud

Pour créer une connexion privée entre votre réseau VPC et le réseau du producteur de services, procédez comme suit:

  1. Saisissez la commande suivante dans votre terminal pour allouer une plage d'adresses IP à votre service:

        gcloud compute addresses create RESERVED_RANGE_NAME \
          --global \
          --prefix-length=PREFIX_LENGTH \
          --network=VPC_NETWORK \
          --project=PROJECT_ID
    

    Où :

    • RESERVED_RANGE_NAME est le nom de la plage allouée. Exemple :my-allocated-range
    • PREFIX_LENGTH correspond à la longueur du préfixe de votre réseau. La longueur de votre préfixe doit être inférieure ou égale à /24, par exemple /22, /21, etc.
    • VPC_NETWORK est le nom de votre réseau VPC, par exemple my-vpc-network.
    • PROJECT_ID correspond à l'ID de votre projet qui contient votre réseau VPC.
  2. Saisissez la commande suivante dans votre terminal pour créer une connexion privée:

        gcloud services vpc-peerings connect \
          --service=servicenetworking.googleapis.com \
          --ranges=RESERVED_RANGE_NAME \
          --network=VPC_NETWORK \
          --project=PROJECT_ID
    

    Où :

    • RESERVED_RANGE_NAME est le nom de la plage allouée que vous avez créée à l'étape précédente.
    • VPC_NETWORK est le nom de votre réseau VPC, par exemple my-vpc-network.
    • PROJECT_ID correspond à l'ID de votre projet qui contient votre réseau VPC.
  3. Saisissez la commande suivante dans votre terminal pour vous assurer que les routes du VPC sont appliquées au réseau sur lequel s'exécutent vos instances de pool privé:

        gcloud compute networks peerings update servicenetworking-googleapis-com \
          --export-custom-routes \
          --network=VPC_NETWORK \
          --project=PROJECT_ID
    

    Où :

    • VPC_NETWORK est le nom de votre réseau VPC, par exemple my-vpc-network.
    • PROJECT_ID correspond à l'ID de votre projet qui contient votre réseau VPC.

Vous avez maintenant configuré votre réseau.

Pour en savoir plus sur la configuration d'un réseau, consultez Configurer une connexion privée entre votre réseau VPC et le réseau du producteur de services.

Créer un pool privé

Console

Pour créer un pool privé à l'aide de la console Google Cloud, procédez comme suit:

  1. Ouvrez la page Pool de nœuds de calcul dans la console Google Cloud:

    Ouvrir la page "Pool de nœuds de calcul Cloud Build"

  2. Sélectionnez le projet dans lequel vous souhaitez créer le pool privé.

  3. Sur la page Pool de nœuds de calcul, cliquez sur Créer.

    Le panneau Créer un pool privé s'affiche.

  4. Dans le panneau latéral Créer un pool privé, saisissez les informations suivantes:

    1. Saisissez un nom pour votre pool privé.

    2. Sélectionnez une région dans le menu déroulant.

    3. Sous Network (Réseau), saisissez les informations suivantes:

    • Projet: saisissez l'ID ou le numéro de votre projet.
    • Réseau: saisissez le nom de votre réseau VPC.
    1. (Facultatif) Décochez la case Attribuer des adresses IP externes pour obtenir la configuration réseau la plus restreinte.

Vous avez maintenant créé un pool privé.

gcloud

Pour créer un pool privé à l'aide de l'outil de ligne de commande gcloud, saisissez la commande suivante dans votre terminal:

      gcloud builds worker-pools create PRIVATEPOOL_ID \
        --project=PRIVATEPOOL_PROJECT_ID \
        --region=REGION \
        --peered-network=PEERED_NETWORK \
        --no-public-egress

Où :

  • PRIVATEPOOL_ID est l'identifiant unique de votre pool privé.
  • PRIVATEPOOL_PROJECT_ID est l'ID du projet Google Cloud dans lequel vous souhaitez créer votre pool privé.
  • REGION est l'une des régions disponibles.
  • PEERED_NETWORK est l'URL de la ressource réseau.
  • --no-public-egress: si cette option est définie, le pool privé est créé sans adresse IP externe.

Vous avez maintenant créé un pool privé.

Pour en savoir plus sur la création et la gestion de pools privés, consultez Créer et gérer des pools privés.

Accéder aux ressources externes d'un réseau privé

Par défaut, les adresses IP externes associées aux pools privés Cloud Build ne sont pas statiques ni configurables. Elles sont attribuées parGoogle Cloud. Si vous souhaitez configurer vos pools privés pour qu'ils accèdent aux ressources externes à partir de votre réseau privé avec une adresse IP externe statique, vous devez configurer une machine virtuelle (VM) dans votre projet pour qu'elle joue le rôle de passerelle NAT autogérée pour les requêtes de proxy sur Internet public. Ensuite, vous devez configurer des routes personnalisées pour transférer ces requêtes vers votre VM afin de vous assurer que les routes sont échangées avec le projet de mise en réseau de services.

Cette section explique comment configurer vos pools privés pour qu'ils accèdent aux ressources externes via une adresse IP externe statique en procédant comme suit:

  1. Créez un script de démarrage pour configurer la VM afin qu'elle proxy tout trafic acheminé vers la VM et qu'elle masque ce trafic comme provenant de son adresse IP:

    #! /bin/bash
    set -e
    
    sysctl -w net.ipv4.ip_forward=1
    IFACE=$(ip -brief link | tail -1 | awk  {'print $1'})
    iptables -t nat -A POSTROUTING -o "$IFACE" -j MASQUERADE
    
  2. Configurez une VM dans le même VPC que votre pool privé avec une règle permettant de proxyer les requêtes via le VPC:

    gcloud compute instances create VM_NAME \
      --image-project=ubuntu-os-cloud --image-family=ubuntu-2204-lts \
      --network=NETWORK_NAME \
      --private-network-ip=INTERNAL_IP --can-ip-forward \
      --zone=ZONE \
      --subnet=SUBNETWORK \
      --tags=NAT_TAG  \
      --metadata-from-file=startup-script=STARTUP_SCRIPT
    

    Où :

    • VM_NAME est le nom que vous souhaitez attribuer à votre VM.
    • NETWORK_NAME est le nom du réseau que vous avez créé dans la section précédente.
    • INTERNAL_IP correspond à n'importe quelle adresse IP interne valide comprise dans la plage du sous-réseau de la région de votre VM. Exemple :10.128.0.2
    • ZONE est la zone associée à votre réseau, par exemple us-central1-a.
    • (Facultatif) SUBNETWORK est le nom de votre sous-réseau. Le nom de votre sous-réseau se trouve dans l'équivalent REST de votre sous-réseau au format suivant: projects/project-id/regions/region/subnetworks/subnetwork-name. Si vous avez sélectionné Automatique sous Mode de connexion du sous-réseau lorsque vous créez un réseau VPC, vous n'avez pas besoin de spécifier ce champ.
    • NAT_TAG est le nom de la balise de la passerelle NAT qui vous permet d'acheminer les requêtes de manière conditionnelle, selon qu'elles disposent ou non d'une balise de cette VM. Vous pouvez spécifier n'importe quel nom pour la balise.
    • STARTUP_SCRIPT correspond au nom du script de démarrage que vous avez créé à l'étape précédente. Exemple :startup-script-example.sh Dans cet exemple, l'indicateur --metadata-from-file permet de transmettre le contenu du script de démarrage que vous avez spécifié à une clé appelée startup-script.

    Une fois cette commande exécutée, un résultat contenant la valeur de l'adresse IP externe s'affiche. Notez la valeur de l'adresse IP externe. Tout le trafic de votre pool privé vers votre ressource externe passe par cette adresse. Vous pouvez choisir d'utiliser cette adresse pour une configuration ultérieure, par exemple pour configurer des règles de pare-feu dans votre réseau externe.

  3. Configurez une route pour rediriger toutes les requêtes vers la ressource externe vers l'instance créée à l'étape précédente, ce qui permet de transférer vos requêtes vers vos instances de pool privé:

    gcloud compute routes create PRIVATE_POOL_ROUTE_NAME \  
      --destination-range=DESTINATION_RANGE \
      --next-hop-address=INTERNAL_IP \
      --network=NETWORK_NAME \
      --priority=POOL_ROUTE_PRIORITY
    

    Où :

    • PRIVATE_POOL_ROUTE_NAME est le nom que vous souhaitez donner à votre itinéraire.
    • DESTINATION_RANGE est une plage d'adresses CIDR valide contenant la destination vers laquelle vous souhaitez acheminer le trafic. Par exemple, une instance GitHub Enterprise Edition. Exemple :8.8.8.0/24
    • INTERNAL_IP correspond à la valeur d'adresse IP interne obtenue à l'étape précédente. Exemple :10.128.0.2
    • NETWORK_NAME est le nom du réseau que vous avez créé dans la section précédente.
    • POOL_ROUTE_PRIORITY correspond au numéro de priorité que vous souhaitez spécifier pour votre itinéraire.

    Cette commande garantit que tout trafic provenant d'un build dans une instance de pool privé est acheminé vers la VM de proxy que vous avez créée, et non directement vers l'Internet public.

  4. Configurez un routage pour transférer les requêtes de votre proxy depuis vos instances taguées vers la plage d'adresses IP de destination externe. La commande suivante crée un routage pour transférer les requêtes vers l'Internet public associé à vos instances de pool privé.

    gcloud compute routes create NAT_EGRESS_ROUTE_NAME \ 
      --destination-range=DESTINATION_RANGE \    
      --next-hop-gateway=default-internet-gateway \
      --network=NETWORK_NAME \
      --priority=NAT_ROUTE_PRIORITY \
      --tags=NAT_TAG
    

    Où :

    • NAT_EGRESS_ROUTE_NAME est le nom que vous souhaitez attribuer à votre route de passerelle NAT.
    • DESTINATION_RANGE est l'adresse de la destination vers laquelle vous souhaitez calculer un itinéraire. Par exemple, une instance GitHub Enterprise Edition. Exemple :8.8.8.0/24
    • NETWORK_NAME est le nom du réseau que vous avez créé dans la section précédente.
    • NAT_TAG est le nom de la balise de la passerelle NAT qui vous permet d'acheminer les requêtes de manière conditionnelle, selon qu'elles disposent ou non d'une balise de cette VM. Vous pouvez spécifier n'importe quel nom pour la balise.
    • NAT_ROUTE_PRIORITY correspond au numéro de priorité que vous souhaitez spécifier pour votre itinéraire.

    Cette commande garantit que tout trafic provenant de la VM de proxy peut être dirigé vers l'Internet public.

  5. Ajoutez une règle de pare-feu pour autoriser le trafic de votre pool privé dans votre VM de passerelle NAT:

    gcloud compute firewall-rules create RULE_NAME \
      --direction=INGRESS --priority=FIREWALL_PRIORITY --action=ALLOW --rules=all \
      --network=NETWORK_NAME \
      --source-ranges=RESERVED_RANGE \
      --target-tags=NAT_TAG
    

    Où :

    • RULE_NAME est le nom que vous souhaitez donner à votre règle de pare-feu.
    • FIREWALL_PRIORITY correspond au numéro de priorité que vous souhaitez spécifier pour votre règle de pare-feu.
    • NETWORK_NAME est le nom du réseau que vous avez créé dans la section précédente.
    • RESERVED_RANGE est la plage CIDR que vous avez allouée lors de la configuration de votre réseau VPC.
    • NAT_TAG est le nom de la balise de la passerelle NAT qui vous permet d'acheminer les requêtes de manière conditionnelle, selon qu'elles disposent ou non d'une balise de cette VM. Vous pouvez spécifier n'importe quel nom pour la balise.

Vous pouvez désormais accéder aux ressources externes à partir de l'adresse IP statique de la passerelle NAT autogérée de votre VPC.

Étape suivante