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

  • Activer les API Cloud Build, Compute Engine, and Service Networking.

    Activer les API

  • Pour obtenir les autorisations nécessaires pour configurer une connexion privée, demandez à votre administrateur de vous attribuer le rôle IAM Administrateur 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 la 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. Sous Mode de création du sous-réseau, sélectionnez Automatique.

  5. Si vous souhaitez personnaliser davantage d'autres champs, consultez l'article 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.

    Une fois que vous avez 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 est le nom de votre réseau VPC:

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

Une fois que vous avez 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 au service privé.

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

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

      La boîte de dialogue Attribuer une plage d'adresses IP internes s'affiche.

      1. Attribuez un nom à la plage d'adresses IP.

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

      3. Dans le champ Longueur du préfixe, saisissez la longueur du 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.

      Le 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 Connect (Se connecter).

      Votre connexion s'affiche maintenant 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 pour le VPC sont appliquées au réseau sur lequel vos instances de pool privé sont exécutées.

Votre réseau est maintenant configuré.

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. Par exemple, my-allocated-range.
    • PREFIX_LENGTH est 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, tel que my-vpc-network.
    • PROJECT_ID est l'ID du 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, tel que my-vpc-network.
    • PROJECT_ID est l'ID du projet qui contient votre réseau VPC.
  3. Saisissez la commande suivante dans votre terminal pour vous assurer que les routes pour le VPC sont appliquées au réseau sur lequel vos instances de pool privé sont en cours d'exécution:

        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, tel que my-vpc-network.
    • PROJECT_ID est l'ID du projet qui contient votre réseau VPC.

Votre réseau est maintenant configuré.

Pour en savoir plus sur la configuration d'un réseau, consultez la page 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 du 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 Réseau, saisissez les informations suivantes:

    • Project: 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 Assign external IPs (Attribuer des adresses IP externes) pour la configuration réseau la plus limitée.

Vous venez de créer 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 venez de créer un pool privé.

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

Accéder aux ressources externes dans un réseau privé

Par défaut, les adresses IP externes associées aux pools privés Cloud Build ne sont ni statiques, ni configurables. Ils sont attribués par Google Cloud. Si vous souhaitez configurer vos pools privés pour qu'ils accèdent à des ressources externes depuis votre réseau privé avec une adresse IP externe statique, vous devez configurer une machine virtuelle (VM) dans votre projet pour qu'elle agisse en tant que passerelle NAT autogérée pour rediriger les requêtes vers l'Internet public. Vous devez ensuite configurer des routes personnalisées pour transférer ces requêtes à 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 à des 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 de sorte qu'elle fasse office de proxy pour tout trafic acheminé vers la VM, et faites-lui passer 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 autorisant le proxy des 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 à toute adresse IP interne valide dans la plage du sous-réseau de la région de votre VM. Par exemple, 10.128.0.2.
    • ZONE est la zone associée à votre réseau (us-central1-a, par exemple).
    • (Facultatif) SUBNETWORK est le nom de votre sous-réseau. Le nom de votre sous-réseau est disponible dans le fichier REST équivalent pour 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 lors de la création d'un réseau VPC, vous n'avez pas besoin de spécifier ce champ.
    • NAT_TAG est le nom du tag de la passerelle NAT qui vous permet d'acheminer les requêtes de manière conditionnelle, selon qu'elles possèdent ou non un tag provenant de cette VM. Vous pouvez attribuer n'importe quel nom à la balise.
    • STARTUP_SCRIPT est le nom du script de démarrage que vous avez créé à l'étape précédente. Par exemple, startup-script-example.sh. Dans cet exemple, l'option --metadata-from-file permet de transmettre le contenu du script de démarrage que vous avez spécifié à une clé appelée startup-script.

    Après avoir exécuté cette commande, une sortie 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 supplémentaire, telle que la configuration de règles de pare-feu sur votre réseau externe.

  3. Configurez une route pour diriger toutes les requêtes vers la ressource externe afin qu'elles soient dirigées vers l'instance créée à l'étape précédente. Ainsi, vos requêtes peuvent être transférées vers les instances de votre 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 à l'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). Par exemple, 8.8.8.0/24.
    • INTERNAL_IP est la valeur de l'adresse IP interne obtenue à l'étape précédente. Par 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 est le numéro de priorité que vous souhaitez spécifier pour votre route.

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

  4. Définissez une route pour transférer les requêtes de votre proxy depuis vos instances dotées d'un tag vers la plage d'adresses IP de destination externe. La commande suivante crée une route 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 donner à la route de votre passerelle NAT.
    • DESTINATION_RANGE est l'adresse de la destination vers laquelle vous souhaitez effectuer le routage. (par exemple, une instance GitHub Enterprise Edition). Par 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 du tag de la passerelle NAT qui vous permet d'acheminer les requêtes de manière conditionnelle, selon qu'elles possèdent ou non un tag provenant de cette VM. Vous pouvez attribuer n'importe quel nom à la balise.
    • NAT_ROUTE_PRIORITY est le numéro de priorité que vous souhaitez spécifier pour votre route.

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

  5. Ajoutez une règle de pare-feu pour autoriser le trafic provenant de votre pool privé vers la VM de votre 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 attribuer à votre règle de pare-feu.
    • FIREWALL_PRIORITY est le 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 du tag de la passerelle NAT qui vous permet d'acheminer les requêtes de manière conditionnelle, selon qu'elles possèdent ou non un tag provenant de cette VM. Vous pouvez attribuer n'importe quel nom à la balise.

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

Étapes suivantes