Configurer l'accès aux services privés

L'accès aux services privés est une connexion privée entre votre réseau VPC et un réseau appartenant à Google ou à un tiers. Google ou le tiers sont des entités proposant des services. Ils sont également appelés producteurs de services. La connexion privée permet aux instances de VM de votre réseau VPC de communiquer avec les services auxquels vous accédez exclusivement à l'aide d'adresses IP internes. Les instances de VM n'ont pas besoin d'accès Internet ni d'adresses IP externes pour accéder aux services disponibles via l'accès aux services privés.

Pour en savoir plus sur l'accès aux services privés et sur les autres options d'accès privé, consultez la page Options d'accès privé pour les services.

En règle générale, pour accéder aux services privés, vous devez allouer une plage d'adresses IP (bloc CIDR) à votre réseau VPC, puis créer une connexion privée à un producteur de services.

Avant de commencer

Pour établir une connexion privée, suivez les étapes requises comme suit :

  • Vérifiez que le service que vous utilisez accepte l'accès aux services privés.
  • Vous devez disposer d'un réseau VPC que vous utiliserez pour vous connecter au réseau du producteur de services. Les instances de VM doivent utiliser ce réseau VPC pour se connecter aux services via une connexion privée.
  • Activez l'API Service Networking dans le projet. L'API est requise pour créer une connexion privée.
  • Créez un projet Cloud ou choisissez un projet existant. Pour savoir comment créer un projet Cloud, consultez la page Créer et gérer des projets.
  • Installez le SDK Cloud si vous souhaitez exécuter les exemples de ligne de commande gcloud de ce guide.

Autorisations

Les propriétaires de projet et les membres IAM dotés du rôle Administrateur réseau peuvent créer des plages d'adresses IP allouées et gérer les connexions privées.

Pour plus d'informations sur les rôles, consultez la documentation sur les rôles VPC IAM.

Scénario avec VPC partagé

Si vous utilisez un VPC partagé, créez la plage d'adresses IP allouée et la connexion privée dans le projet hôte. En règle générale, un administrateur réseau du projet hôte doit effectuer ces tâches. Une fois le projet hôte configuré, les instances de machine virtuelle dans les projets de service peuvent utiliser la connexion privée.

Quotas et limites

Étant donné qu'une connexion privée est mise en œuvre en tant que connexion d'appairage de VPC, les quotas et limites appliqués à l'appairage de réseaux VPC s'appliquent également à l'accès aux services privés.

Créer des plages d'adresses IP allouées

Avant de créer une connexion privée, vous devez allouer une plage d'adresses IP qui sera utilisée par le réseau VPC du producteur de services. Cela garantit qu'il n'y a pas de conflit d'adresses IP entre votre réseau VPC et le réseau du producteur de services. Créez une plage allouée pour chaque producteur de services.

Lorsque vous allouez une plage dans votre réseau VPC, elle est inéligible pour les sous-réseaux (plages primaire et secondaire) et les destinations des routes statiques personnalisées.

Taille de la plage d'adresses IP

Plages d'accès aux services privés (cliquez pour agrandir)

Lorsqu'un producteur de services crée un sous-réseau de son côté de la connexion, une plage ouverte d'adresses allouées est sélectionnée pour la plage d'adresses IP du sous-réseau.

Chaque producteur de services requiert une taille minimale de plage d'adresses IP. Pour Google, la taille minimale est un bloc unique /24 (256 adresses), mais la taille recommandée est un bloc /16 (65 536 adresses). La taille que vous choisissez dépend de facteurs tels que le nombre de services et les régions utilisés. Vous pouvez utiliser un seul service dans plusieurs régions dans les scénarios de redondance ou pour réduire la latence.

Par exemple, si vous utilisez deux services dans trois régions différentes, le producteur de services doit créer six sous-réseaux, chacun avec un bloc /24. Si vous envisagez d'utiliser des services ou des régions supplémentaires, vous risquez de rapidement épuiser une allocation à base de bloc /20. Si vous n'avez pas de bloc /16 contigu, vous pouvez commencer par une allocation plus petite, puis en ajouter d'autres si vous avez besoin de plusieurs adresses IP ultérieurement.

À propos du sous-réseau du producteur de services

Lorsque vous établissez une connexion privée et créez une ressource avec une adresse IP privée, le service crée un sous-réseau dans lequel provisionner la ressource. Le service sélectionne une plage d'adresses IP disponibles dans la plage allouée. Vous ne pouvez ni sélectionner, ni modifier la plage d'adresses IP du sous-réseau du producteur de services. Même si vous supprimez la connexion privée ou la plage d'adresses IP allouée, le sous-réseau persiste jusqu'à ce que vous supprimiez toutes les ressources qu'il contient.

Lorsque vous attribuez des ressources supplémentaires, le service les provisionne dans les sous-réseaux régionaux existants précédemment créés. Si un sous-réseau est saturé, le service en crée un autre dans cette région.

Remarques

Avant d'allouer une plage d'adresses IP, prenez en compte les contraintes suivantes :

  • Sélectionnez une plage qui ne chevauche pas les plages allouées, les sous-réseaux ou les routes statiques personnalisées. Deux plages ne peuvent pas se chevaucher.
  • Si vous utilisez un réseau VPC en mode automatique, vous ne pouvez pas créer de plage allouée correspondant à la plage 10.128.0.0/9, ou la chevauchant. Celle-ci est réservée aux sous-réseaux créés automatiquement.
  • Sélectionnez un bloc CIDR suffisamment grand pour répondre à vos besoins actuels et futurs. Si, par la suite, vous constatez que la taille de la plage est insuffisante, élargissez-la si possible. Bien que vous puissiez affecter plusieurs allocations à un seul producteur de services, Google applique un quota sur le nombre de plages d'adresses IP que vous pouvez allouer, mais ne limite pas la taille (masque de réseau) de chaque plage.
  • Ne réutilisez pas la même plage allouée pour plusieurs producteurs de services. Cela est possible, mais peut entraîner un chevauchement des adresses IP. Chaque producteur de services n'a de visibilité que sur son réseau et ne peut pas savoir quelles adresses IP les autres producteurs de services utilisent.
  • Vous ne pouvez affecter qu'un seul bloc CIDR à une plage allouée lorsque vous créez l'allocation. Si vous avez besoin d'étendre la plage d'adresses IP, vous ne pouvez pas ajouter plus de blocs à une allocation. En revanche, vous pouvez créer une autre allocation ou recréer l'allocation existante en utilisant un bloc plus grand qui englobe les nouvelles plages ainsi que les plages existantes.
  • Si vous créez vous-même l'allocation au lieu de laisser Google le faire (par exemple via Cloud SQL), vous pouvez utiliser la même convention de dénomination pour signaler à d'autres utilisateurs ou services Google qu'une allocation existe déjà pour Google. Si un service Google attribue une plage en votre nom, il utilise le format suivant pour nommer l'allocation : google-managed-services-[your network name]. Si cette allocation existe déjà, les services Google n'en créeront pas d'autre.

Procédure

La procédure suivante permet de créer une plage d'adresses IP allouée.

Console

  1. Accédez à la page Réseaux VPC dans Google Cloud Console.
    Accéder à la page Réseaux VPC
  2. Sélectionnez le réseau VPC qui se connectera à un producteur de services.
  3. Sélectionnez l'onglet Connexion de service privée.
  4. Dans l'onglet Connexion de service privée, sélectionnez l'onglet Plages d'adresses IP allouées pour les services.
  5. Cliquez sur Plage d'adresses IP allouées.
  6. Saisissez un nom et une description pour la plage allouée.
  7. Spécifiez une plage d'adresses IP pour l'allocation :

    • Pour spécifier une plage d'adresses IP, sélectionnez Personnalisée, puis saisissez un bloc CIDR, tel que 192.168.0.0/16.
    • Pour spécifier une longueur de préfixe et laisser Google sélectionner une plage disponible, sélectionnez Automatique, puis saisissez une longueur de préfixe, telle que 16.
  8. Cliquez sur Allouer pour créer la plage allouée.

gcloud

Créez une plage allouée dans votre réseau VPC.

  • Pour spécifier une plage d'adresses et une longueur de préfixe (masque de sous-réseau), utilisez les options addresses et prefix-length. Par exemple, pour allouer le bloc CIDR 192.168.0.0/16, spécifiez 192.168.0.0 pour l'adresse et 16 pour la longueur du préfixe.

    gcloud compute addresses create [RESERVED_RANGE_NAME] \
        --global \
        --purpose=VPC_PEERING \
        --addresses=192.168.0.0 \
        --prefix-length=16 \
        --description=[DESCRIPTION] \
        --network=[VPC_NETWORK]
    
  • Pour spécifier seulement une longueur de préfixe (masque de sous-réseau), utilisez simplement l'option prefix-length. Si vous ne spécifiez pas de plage d'adresses, Google Cloud sélectionne automatiquement une plage d'adresses non utilisée sur votre réseau VPC. L'exemple suivant choisit une plage d'adresses IP non utilisée avec une longueur de préfixe de 16 bits.

    gcloud compute addresses create [RESERVED_RANGE_NAME] \
        --global \
        --purpose=VPC_PEERING \
        --prefix-length=16 \
        --description=[DESCRIPTION] \
        --network=[VPC_NETWORK]
    

Remplacez les espaces réservés suivants par les valeurs appropriées :

  • [RESERVED_RANGE_NAME] est le nom de la plage allouée, telle que my-allocated-range.
  • [DESCRIPTION] est la description de la plage, telle que allocated for my-service.
  • [VPC_NETWORK] est le nom de votre réseau VPC, tel que my-vpc-network.

L'exemple suivant crée une connexion privée à Google afin que les instances de VM du réseau VPC my-network puissent accéder aux services Google compatibles avec l'accès aux services privés.

gcloud compute addresses create google-managed-services-my-network \
    --global \
    --purpose=VPC_PEERING \
    --prefix-length=16 \
    --description="peering range for Google" \
    --network=my-network \
    --project=my-project

Répertorier des plages d'adresses IP allouées

Vous pouvez répertorier les plages à l'aide de l'option --filter pour afficher celles qui vous permettent d'accéder aux services privés. Filtrez les plages ayant pour objet VPC_PEERING, comme indiqué dans l'exemple suivant :

gcloud compute addresses list --global --filter="purpose=VPC_PEERING"

Créer une connexion privée

Une fois que vous avez créé une plage allouée, vous pouvez créer une connexion privée à un producteur de services. La connexion privée établit une connexion d'Appairage de réseaux VPC entre votre réseau VPC et le réseau du producteur de services.

Les connexions privées sont des relations un à un entre votre réseau VPC et un producteur de services. Si un seul producteur de services offre plusieurs services, vous n'avez besoin que d'une seule connexion privée pour tous les services du producteur.

Si vous vous connectez à plusieurs producteurs de services, utilisez une allocation unique pour chacun d'entre eux. Ceci facilite la gestion des paramètres réseau, tels que les routes et les règles de pare-feu, de chaque producteur de services.

Console

  1. Accédez à la page Réseaux VPC dans Google Cloud Console.
    Accéder à la page Réseaux VPC
  2. Sélectionnez le réseau VPC qui se connectera à un producteur de services.
  3. Sélectionnez l'onglet Connexion de service privée.
  4. Dans l'onglet Connexion au service privé, sélectionnez l'onglet Connexions privées aux services.
  5. Cliquez sur Créer une connexion pour créer une connexion privée entre votre réseau et un producteur de services.
  6. Pour l'allocation attribuée, sélectionnez une ou plusieurs plages attribuées existantes qui ne sont pas utilisées par d'autres producteurs de services.
  7. Cliquez sur Connecter pour créer la connexion.

gcloud

  1. Créez une connexion privée.

    gcloud services vpc-peerings connect \
        --service=servicenetworking.googleapis.com \
        --ranges=[RESERVED_RANGE_NAME] \
        --network=[VPC_NETWORK] \
        --project=[PROJECT_ID]
    
    • [RESERVED_RANGE_NAME] est le nom d'une ou plusieurs plages allouées.
    • [VPC_NETWORK] est le nom du réseau VPC.
    • [PROJECT_ID] est l'ID du projet qui contient votre réseau VPC.

    La commande lance une opération longue. Elle affiche un nom d'opération.

  2. Vérifiez si l'opération a réussi.

    gcloud services vpc-peerings operations describe \
        --name=[OPERATION_NAME]
    

    Remplacez [OPERATION_NAME] par le nom de l'opération renvoyé à l'étape précédente.

Vous pouvez spécifier plusieurs plages allouées lorsque vous créez une connexion privée. Par exemple, si une plage est épuisée, vous pouvez affecter d'autres plages allouées. Le service utilisera les adresses IP de toutes les plages mises à disposition, dans l'ordre que vous avez déterminé.

Lister les connexions privées

Après avoir créé une connexion privée, vous pouvez la répertorier pour vérifier qu'elle existe. La liste des plages allouées associées à chaque connexion est également affichée. Par exemple, si vous ne vous souvenez plus de la plage que vous avez attribuée à une connexion, consultez la liste pour la retrouver.

Console

  1. Accédez à la page Réseaux VPC dans Google Cloud Console.
    Accéder à la page Réseaux VPC
  2. Sélectionnez le réseau VPC qui contient les connexions.
  3. Sélectionnez l'onglet Connexion au service privé.
  4. Dans l'onglet Connexion au service privé, sélectionnez l'onglet Connexions privées aux services pour afficher toutes les connexions privées du réseau.

gcloud

Listez les connexions privées dans votre réseau VPC.

gcloud services vpc-peerings list \
    --network=[VPC_NETWORK] \
    --project=[PROJECT_ID]

Remplacez [VPC_NETWORK] et [PROJECT_ID] par le nom de votre réseau VPC et l'ID du projet.

Modifier une connexion privée

En ce qui concerne les connexions privées existantes, vous pouvez ajouter ou supprimer des plages d'adresses IP allouées sans interrompre le trafic. Par exemple, si vous êtes sur le point d'épuiser la plage existante, vous pouvez ajouter une plage allouée au fur et à mesure des ajustements que vous effectuez.

Vous ne pouvez pas utiliser Google Cloud Console pour supprimer des plages d'adresses IP allouées. Si vous souhaitez supprimer une plage allouée, modifiez la connexion en suivant les instructions gloud. Lorsque vous supprimez une plage d'une connexion privée, les critères suivants s'appliquent :

  • La plage allouée n'est plus associée à la connexion privée, mais elle n'est pas supprimée.

  • Les ressources existantes de producteurs de services peuvent continuer à utiliser la plage supprimée.

  • L'accès aux services privés n'utilise pas les plages supprimées pour allouer de nouveaux sous-réseaux.

Vous pouvez également suivre ces instructions gcloud pour recréer une connexion privée supprimée à l'aide de différentes plages d'adresses IP allouées. Pour en savoir plus, consultez la section Recréer une connexion privée supprimée.

Console

  1. Accédez à la page Réseaux VPC dans Google Cloud Console.
    Accéder à la page Réseaux VPC
  2. Sélectionnez le réseau VPC qui contient les connexions.
  3. Sélectionnez l'onglet Connexion au service privé.
  4. Dans l'onglet Connexion au service privé, sélectionnez l'onglet Connexions privées aux services pour afficher toutes les connexions privées du réseau.
  5. Cliquez sur un nom de connexion dans la liste.
  6. Dans le menu déroulant Allocation attribuée, sélectionnez les plages à allouer.
  7. Cliquez sur OK.

gcloud

Vous pouvez ajouter ou supprimer des plages d'adresses IP allouées, qui ont été attribuées sur une connexion privée existante.

gcloud services vpc-peerings update \
    --service=servicenetworking.googleapis.com \
    --ranges=[RESERVED_RANGE_NAME] \
    --network=[VPC_NETWORK] \
    --project=[PROJECT_ID] \
    [--force]

Remplacez les espaces réservés suivants par les valeurs appropriées :

  • [RESERVED_RANGE_NAME] est une liste d'un ou de plusieurs noms de plages allouées à attribuer à la connexion privée. [RESERVED_RANGE_NAME] remplace la liste précédente des plages allouées. Si vous omettez une plage précédemment associée à cette connexion privée, celle-ci est supprimée de la connexion. Vous devez utiliser l'option --force pour supprimer une plage.

  • [VPC_NETWORK] est le nom de votre réseau VPC.

  • [PROJECT_ID] est le nom de l'ID de projet de votre réseau.

Supprimer une connexion privée

Pour supprimer une connexion privée, vous devez supprimer la connexion d'appairage VPC correspondante. Votre réseau VPC est alors déconnecté du réseau VPC du producteur de services. Les ressources existantes des deux réseaux persistent, mais perdent l'accès aux services privés.

Console

  1. Accédez à la page Réseaux VPC dans Google Cloud Console.
    Accéder à la page Réseaux VPC
  2. Sélectionnez le réseau VPC contenant les connexions à supprimer.
  3. Sélectionnez l'onglet Connexion au service privé.
  4. Dans l'onglet Connexion au service privé, sélectionnez l'onglet Connexion privée aux services.
  5. Sélectionnez la connexion privée à supprimer.
  6. Cliquez sur Supprimer.
  7. Cliquez à nouveau sur Supprimer pour confirmer la suppression.

gcloud

Supprimez la connexion d'appairage de réseaux VPC de la connexion privée.

gcloud compute networks peerings delete [CONNECTION_NAME] \
    --network [VPC_NETWORK]

Remplacez [CONNECTION_NAME] et [VPC_NETWORK] par le nom de votre connexion privée et de votre réseau VPC.

Recréer une connexion privée supprimée

Vous pouvez recréer une connexion privée que vous avez supprimée.

Si vous souhaitez utiliser les mêmes plages d'adresses IP allouées que celles utilisées précédemment, vous pouvez recréer la connexion privée. Spécifiez les mêmes plages d'adresses IP allouées que celles utilisées pour la connexion privée avant de la supprimer. Si vous spécifiez différentes plages d'adresses IP allouées, Google Cloud renvoie une erreur Cannot modify allocated ranges.

Si vous souhaitez recréer la connexion à l'aide de différentes plages d'adresses IP allouées, vous devez utiliser la commande gcloud services vpc-peerings update pour modifier la connexion privée.

Par exemple, si vous avez déjà configuré une connexion privée à l'aide de range1, vous pouvez la recréer avec une autre configuration de plage d'adresses IP allouée, telle que range1 et range2.

gcloud services vpc-peerings update \
    --service=servicenetworking.googleapis.com \
    --ranges=range1,range2 \
    --network=vpc1 \
    --project=my-project-123

Vous pouvez également recréer la connexion à l'aide de range2. Comme cela exclut range1, qui faisait partie de la configuration de la connexion privée précédente, vous devez utiliser l'option --force.

gcloud services vpc-peerings update \
    --service=servicenetworking.googleapis.com \
    --ranges=range2 \
    --network=vpc1 \
    --project=my-project-123 \
    --force

Supprimer une allocation

Avant de supprimer une plage d'adresses IP allouée, vérifiez qu'aucune connexion privée ne l'utilise. Pour dissocier la plage allouée, vous pouvez supprimer ou modifier une connexion privée existante. Si vous ne le faites pas, les connexions existantes demeurent actives, mais rien n'empêche votre VPC d'utiliser des adresses IP qui chevauchent le réseau du producteur de services. Par ailleurs, le service ne peut pas créer d'autres sous-réseaux, car il n'y a pas de plage d'adresses IP allouée à sélectionner.

Console

  1. Accédez à la page Réseaux VPC dans Google Cloud Console.
    Accéder à la page Réseaux VPC
  2. Sélectionnez le réseau VPC contenant les attributions à supprimer.
  3. Sélectionnez l'onglet Connexion de service privée.
  4. Dans l'onglet Connexion de service privée, sélectionnez l'onglet Plages d'adresses IP allouées pour les services.
  5. Sélectionnez l'allocation à supprimer.
  6. Cliquez sur Libérer pour renvoyer la plage d'adresses IP allouées au pool d'adresses IP internes disponibles sur le réseau.

    Si la plage d'adresses IP est toujours allouée à une connexion existante, vous devez saisir une confirmation supplémentaire avant de pouvoir libérer l'allocation.

  7. Cliquez à nouveau sur Libérer pour confirmer la suppression.

gcloud

Supprimez l'allocation en spécifiant son nom.

gcloud compute addresses delete [NAME] \
    --global

Dépannage

Quelle part de mon allocation est utilisée ?

Lorsque vous créez une connexion privée avec un producteur de services, vous allouez à ce dernier une plage d'adresses IP. Si vous utilisez plusieurs services d'un producteur de services, chacun réservera une partie des adresses IP de cette plage allouée. Vous pouvez vérifier l'utilisation des adresses IP par les services, par exemple pour déterminer lesquels utilisent de grands blocs d'adresses IP et éviter ainsi l'épuisement des adresses IP.

Pour voir quel service utilise une plage d'adresses IP particulière, procédez comme suit :

  1. Listez vos connexions privées.
  2. Recherchez le nom de la connexion d'appairage qui vous connecte au producteur de services concerné.
  3. Listez les routes pour le réseau VPC.
  4. Recherchez les routes avec un saut suivant correspondant au nom de la connexion d'appairage. La plage de destination des routes indique les adresses IP utilisées par chaque service.

Épuisement de la plage d'adresses IP

Pour une connexion privée donnée, si votre espace d'adresses IP alloué arrive à épuisement, vous pouvez étendre l'allocation existante. L'allocation étendue doit être une plage d'adresses IP contiguë incluant la plage existante. L'extension d'une allocation est recommandée, car le nombre d'allocations que vous pouvez créer est limité mais pas la taille de l'allocation.

Pour étendre une allocation existante, procédez comme suit :

  1. Listez vos connexions privées et enregistrez le nom de la plage allouée à étendre.
  2. Supprimez la plage allouée existante.
  3. Créez une nouvelle plage allouée et donnez-lui le même nom que la plage supprimée. Spécifiez une plage d'adresses IP incluant la plage d'adresses IP précédemment supprimée. De cette manière, les ressources appairées existantes qui utilisent l'ancienne plage allouée peuvent continuer à utiliser les mêmes adresses IP sans entrer en conflit avec les ressources de votre réseau VPC. Par exemple, si la plage allouée précédente était 192.168.0.0/20, créez une plage 192.168.0.0/16.

Pour ajouter des plages allouées à une connexion privée existante, procédez comme suit :

  1. Créez une plage allouée. Celle-ci ne doit pas nécessairement être contiguë avec les plages allouées existantes.
  2. Ajoutez la plage allouée à la connexion privée existante.

Les hôtes sur site ne peuvent pas communiquer avec le réseau du producteur de services

Il est possible que le réseau du producteur de services ne dispose pas des routes appropriées pour diriger le trafic vers votre réseau sur site. Par défaut, le réseau du producteur de services ne mémorise que les routes de sous-réseau émanant de votre réseau VPC. Par conséquent, toute requête qui ne provient pas d'une plage d'adresses IP de sous-réseau est ignorée par le producteur de services.

Dans votre réseau VPC, mettez à jour la connexion d'appairage pour exporter les routes personnalisées vers le réseau du producteur de services. L'exportation des routes envoie toutes les routes statiques et dynamiques éligibles de votre réseau VPC, telles que les routes vers votre réseau sur site, au réseau du producteur de services. Le réseau du producteur de services les importe automatiquement, puis peut renvoyer le trafic vers votre réseau sur site via le réseau VPC.