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, contactez votre administrateur. pour vous attribuer le rôle IAM Administrateur de réseaux 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. Saisissez un nom pour votre réseau.

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

  5. Si vous souhaitez personnaliser d'autres champs, consultez la section 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 apparaît 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 Créer et gérer des réseaux VPC

Créer une connexion privée

Console

Créer une connexion privée entre votre réseau VPC et le service du réseau de votre producteur, 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. Dans le champ Nom, saisissez le nom de 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 dans le tableau sous le menu 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

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

  1. Saisissez la commande suivante dans votre terminal pour allouer une plage d'adresses IP pour 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 créé à 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, tel que my-vpc-network.
    • PROJECT_ID est l'ID du projet contenant votre VPC. réseau.

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 Réseau, saisissez les informations suivantes:

    • Project (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 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 compatibles.
  • 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 savoir comment créer et gérer des pools privés, consultez 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 pas statiques ni configurables. Ils sont attribués par Google Cloud. Si vous souhaitez configurer vos pools privés pour un accès externe de votre réseau privé à l'aide d'une adresse IP externe statique, vous devez configurer virtuelle (VM) de votre projet pour qu'elle agisse comme une passerelle NAT autogérée vers des requêtes proxy vers l'Internet public. Ensuite, vous devez configurer des pour transmettre ces requêtes à votre VM afin de vous assurer que les routes sont échangées 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éer un script de démarrage pour configurer la VM afin qu'elle fasse office de proxy pour tout trafic acheminé vers la VM, et fait 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 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. La nom de votre sous-réseau 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 lors de la création d'un réseau VPC, vous il n'est pas nécessaire 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 indiquer 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.

    Après avoir exécuté cette commande, vous verrez un résultat contenant le la valeur de l'adresse IP externe. Notez la valeur de l'adresse IP externe. Tout le trafic de votre pool privé à votre ressource externe passe par cette adresse. Vous pouvez choisir d'utiliser cette adresse pour d'autres configurations, par exemple configurer des règles de pare-feu dans votre réseau externe.

  3. Configurer une route pour diriger toutes les requêtes vers la ressource externe afin qu'elles accèdent à l'instance créés à l'étape précédente, ce qui permet de transférer vos demandes 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 attribuer à 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. 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 est le numéro de priorité que vous souhaitez spécifier pour votre route.

    Cette commande garantit que tout trafic provenant d'un build dans une instance de pool privé est acheminé vers que vous avez créée, et qui n'est pas directement acheminée 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 une route à transférer 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 voulez donner à votre route de passerelle NAT.
    • DESTINATION_RANGE est l'adresse de la destination vers laquelle vous souhaitez vous rendre. 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 indiquer 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 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 attribuer à 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 indiquer 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