Réserver une adresse IP externe statique

Si une instance de machine virtuelle (VM) nécessite une adresse IP externe fixe qui ne change pas, vous pouvez l'obtenir de l'une des façons suivantes :

Si vous avez besoin d'une adresse IP statique sur votre réseau interne Compute Engine, consultez la page Réserver une adresse IP interne statique.

Dans Compute Engine, chaque instance de VM peut avoir plusieurs interfaces réseau. Chaque interface peut avoir des adresses IP internes et externes. Les règles de transfert peuvent disposer d'adresses IP externes pour l'équilibrage de charge externe ou d'adresses internes pour l'équilibrage de charge interne. Pour en savoir plus sur les adresses IP statiques, consultez la page Adresses IP externes.

Avant de commencer

Spécifications

  • Une adresse IP externe statique peut être utilisée par une seule ressource à la fois.

  • Il n'y a aucun moyen de vérifier si une adresse IP est statique ou éphémère après son attribution à une ressource. Vous pouvez comparer l'adresse IP à la liste des adresses IP externes statiques réservées pour ce projet. Exécutez la sous-commande compute addresses list pour afficher la liste des adresses IP externes statiques disponibles pour le projet.

  • Chaque instance de VM peut avoir plusieurs interfaces réseau, mais chaque interface ne peut posséder qu'une seule adresse IP externe, qu'elle soit éphémère ou statique.

  • Vous ne pouvez pas modifier le nom d'une adresse IP statique.

  • Les adresses IP externes attribuées existent sur le même hôte physique que l'instance de VM et existent dans la même région que la VM à toutes fins, y compris pour le routage, la latence et les tarifs. Cela est valable quelles que soient les informations de recherche de géolocalisation Internet.

Remarque : Les interfaces réseau peuvent recevoir du trafic provenant de plusieurs règles de transfert, qui peuvent diffuser d'autres adresses IP externes. N'importe quel nombre d'adresses IP externes peut faire référence à une interface réseau via ces règles de transfert, mais chaque interface réseau ne peut avoir qu'une seule adresse IP externe.

Pour en savoir plus sur l'équilibrage de charge et les règles de transfert, consultez la documentation sur l'équilibrage de charge.

Réserver une nouvelle adresse IP externe statique

Une adresse IP externe statique est une adresse IP réservée pour votre projet jusqu'à ce que vous décidiez de la libérer. Si vous disposez d'une adresse IP qui permet à vos clients ou utilisateurs d'accéder à votre service, vous pouvez réserver cette adresse IP pour qu'elle ne puisse être utilisée que par votre projet. Vous pouvez également convertir une adresse IP externe éphémère en adresse IP externe statique.

Vous pouvez réserver deux types d'adresses IP externes :

  • Une adresse IP régionale qui peut être utilisée par les instances de VM avec une ou plusieurs interfaces réseau ou par les équilibreurs de charge régionaux.
  • Une adresse IP globale qui peut servir pour les équilibreurs de charge globaux.

Pour consulter la liste des équilibreurs de charge régionaux et globaux, reportez-vous au Récapitulatif des équilibreurs de charge Google Cloud.

Réservez une adresse IP externe statique à l'aide de Google Cloud CLI ou via l'API. Une fois l'adresse réservée, attribuez-la à une nouvelle instance lors de sa création ou à une instance existante.

Console

  1. Accédez à la page Réserver une adresse statique.

    Accédez à la page "Réserver une adresse statique"

  2. Choisissez un nom pour la nouvelle adresse.

  3. Indiquez s'il s'agit d'une adresse IPv4 ou IPv6. Les adresses IPv6 ne peuvent être que globales et ne peuvent être utilisées qu'avec les équilibreurs de charge globaux.

  4. Choisissez si cette adresse IP est régionale ou globale. Si vous réservez une adresse IP statique pour une instance ou pour un équilibreur de charge régional, sélectionnez Régional. Si vous réservez une adresse IP statique pour un équilibreur de charge global, sélectionnez Global.

  5. S'il s'agit d'une adresse IP régionale, sélectionnez la région dans laquelle créer l'adresse.

  6. Facultatif : sélectionnez une ressource à laquelle associer l'adresse IP.

  7. Cliquez sur Réserver pour réserver l'adresse IP.

gcloud

Pour réserver une adresse IP externe statique à l'aide de gcloud compute, utilisez la commande compute addresses create.

Si vous souhaitez réserver une adresse IP globale, utilisez les champs --global et --ip-version. Pour le champ --ip-version, spécifiez IPV4 ou IPV6. Les adresses IPv6 ne peuvent être que globales et ne peuvent être utilisées qu'avec les équilibreurs de charge globaux.

Remplacez ADDRESS_NAME par le nom que vous souhaitez donner à cette adresse.

gcloud compute addresses create ADDRESS_NAME \
    --global \
    --ip-version [IPV4 | IPV6]

Si vous souhaitez réserver une adresse IP régionale, utilisez le champ --region :

gcloud compute addresses create ADDRESS_NAME  \
    --region=REGION

Remplacez les éléments suivants :

  • ADDRESS_NAME : nom que vous souhaitez donner à cette adresse.
  • REGION : région dans laquelle vous souhaitez réserver cette adresse. Il doit s'agir de la même région que la ressource à laquelle vous souhaitez associer l'adresse IP. Toutes les adresses IP régionales sont IPv4.

Utilisez la commande compute addresses describe pour afficher le résultat :

gcloud compute addresses describe ADDRESS_NAME

API

Pour créer une adresse IPv4 régionale, appelez la méthode addresses.insert régionale :

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses

Le corps de votre requête doit contenir les éléments suivants :

{
  "name": "ADDRESS_NAME"
}

Remplacez les éléments suivants :

  • ADDRESS_NAME : nom que vous souhaitez donner à l'adresse.
  • REGION : nom de la région pour cette requête.
  • PROJECT_ID : ID du projet pour cette requête

Pour les adresses IPv4 statiques globales, appelez la méthode globalAddresses.insert :

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses

Le corps de votre requête doit contenir les éléments suivants :

{
  "name": "ADDRESS_NAME"
}

Pour les adresses IPv6 statiques globales, appelez la méthode globalAddresses.insert :

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses

Le corps de votre requête doit contenir les éléments suivants :

{
  "name": "ADDRESS_NAME",
  "ipVersion": "IPV6"
}

Utilisez la méthode addresses.get pour afficher le résultat.

Terraform

Vous pouvez utiliser un module Terraform pour créer une adresse IP externe.

Dans l'exemple suivant, les arguments Terraform contiennent des exemples de valeurs que vous pouvez modifier. L'exemple crée trois adresses IPv4 externes régionales.

module "address" {
  source       = "terraform-google-modules/address/google"
  version      = "3.0.0"
  project_id   = var.project_id # Replace this with your service project ID in quotes
  region       = "europe-west1"
  address_type = "EXTERNAL"
  names = [
    "regional-external-ip-address-1",
    "regional-external-ip-address-2",
    "regional-external-ip-address-3"
  ]
}

L'exemple suivant crée une adresse IPv6 externe globale :

resource "google_compute_global_address" "default" {
  project      = var.project_id # Replace this with your service project ID in quotes
  name         = "ipv6-address"
  address_type = "EXTERNAL"
  ip_version   = "IPV6"
}

Attribuer une adresse IP externe statique à une nouvelle instance de VM

Lorsque vous créez une instance de VM, une adresse IP externe éphémère lui est automatiquement attribuée. Si vous ne voulez pas d'adresse IP externe éphémère, vous pouvez explicitement attribuer une adresse IP externe statique à l'instance.

Console

  1. Accéder à la page Créer une instance.

    Accéder à la page Créer une instance

  2. Spécifiez les détails de la VM.

  3. Développez la section Mise en réseau, disques, sécurité, gestion et location unique.

  4. Développez la section Mise en réseau et procédez comme suit :

    1. Dans la section Interfaces réseau, développez une interface réseau pour la modifier.
    2. Dans la liste Adresse IP externe, sélectionnez l'adresse IP externe statique que vous avez réservée.
    3. Pour terminer la modification de l'interface réseau par défaut, cliquez sur Terminé.
  5. Poursuivez le processus de création de la VM.

gcloud

Pour attribuer une adresse IP externe statique, utilisez l'option --address lors de la création de l'instance et indiquez l'adresse IP externe statique :

gcloud compute instances create VM_NAME --address=IP_ADDRESS

Remplacez les éléments suivants :

  • VM_NAME : nom de l'instance de VM
  • IP_ADDRESS : adresse IP à attribuer à l'instance. Utilisez l'adresse IP externe statique réservée plutôt que le nom d'adresse.

API

Dans votre requête de création d'instance, indiquez explicitement la propriété networkInterfaces[].accessConfigs[].natIP et l'adresse IP externe que vous souhaitez utiliser. Exemple :

{
  "name": "VM_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "networkInterfaces": [{
    "accessConfigs": [{
      "type": "ONE_TO_ONE_NAT",
      "name": "External NAT",
      "natIP": "IP_ADDRESS"
     }],
    "network": "global/networks/default"
  }],
  "disks": [{
     "autoDelete": "true",
     "boot": "true",
     "type": "PERSISTENT",
     "initializeParams": {
        "sourceImage": "projects/debian-cloud/global/images/v20150818"
     }
   }]
 }

Modifier ou attribuer une adresse IP externe à une instance existante

Vous pouvez modifier ou attribuer une adresse IP externe, éphémère ou statique, à une instance existante en modifiant la configuration d'accès de l'instance.

Une instance peut avoir plusieurs interfaces et chaque interface peut avoir une adresse IP externe. Si l'instance en possède déjà une, vous devez d'abord retirer l'adresse IP externe existante en supprimant l'ancienne configuration d'accès. Vous pouvez ensuite ajouter une configuration d'accès avec la nouvelle adresse IP externe.

Console

  1. Accédez à la page Instances de VM.

    Accéder à la page Instances de VM

  2. Cliquez sur le nom de l'instance à laquelle vous souhaitez attribuer une adresse IP externe. La page de détails de l'instance s'affiche.
  3. Sur la page des détails de l'instance, procédez comme suit :

    1. Cliquez sur Modifier.
    2. Sous Network interfaces (Interfaces réseau), cliquez sur le bouton Modifier.

      Section Interface réseau.

    3. Sous External IP (Adresse IP externe), sélectionnez une adresse IP externe éphémère ou statique à attribuer à l'instance.

      Options IP internes et externes.

    4. Cliquez sur OK.

  4. Cliquez sur Enregistrer.

gcloud

  1. [Facultatif] Réservez une adresse IP externe statique.

    Si vous souhaitez attribuer une adresse IP externe statique, vous devez réserver une adresse et vous assurer que celle-ci n'est pas utilisée par une autre ressource. Si nécessaire, suivez les instructions pour réserver une nouvelle adresse IP externe statique ou pour annuler l'attribution d'une adresse IP externe statique.

    Si vous souhaitez utiliser une adresse IP externe éphémère, vous pouvez ignorer cette étape. Compute Engine vous attribuera alors une adresse IP externe éphémère de manière aléatoire.

  2. Supprimez les configurations d'accès existantes.

    Vous pouvez définir une configuration d'accès par instance. Avant d'essayer d'attribuer une nouvelle configuration d'accès à une instance, vérifiez si votre instance dispose d'une configuration d'accès en effectuant une requête gcloud compute instances describe :

    gcloud compute instances describe VM_NAME

    S'il existe déjà une configuration d'accès, elle s'affiche au format suivant :

    networkInterfaces:
    - accessConfigs:
      - kind: compute#accessConfig
        name: external-nat
        natIP: 203.0.113.1
        type: ONE_TO_ONE_NAT
    

    Avant d'ajouter une configuration d'accès, vous devez supprimer la configuration existante à l'aide de la sous-commande instances delete-access-config :

    gcloud compute instances delete-access-config VM_NAME \
        --access-config-name="ACCESS_CONFIG_NAME"

    Remplacez les éléments suivants :

    • VM_NAME : nom de l'instance de VM
    • ACCESS_CONFIG_NAME : configuration d'accès à supprimer. Assurez-vous d'inclure le nom complet entre guillemets.
  3. Ajoutez la nouvelle adresse IP externe.

    Exécutez la sous-commande instances add-access-config pour ajouter une adresse IP externe :

    Remarque : Ne remplacez pas IP_ADDRESS par le nom de l'adresse IP statique. Vous devez utiliser l'adresse IP réelle.
    gcloud compute instances add-access-config VM_NAME \
       --access-config-name="ACCESS_CONFIG_NAME" --address=IP_ADDRESS

    Remplacez les éléments suivants :

    • VM_NAME : nom de l'instance de VM
    • ACCESS_CONFIG_NAME : nom destiné à cette configuration d'accès. Assurez-vous d'inclure le nom complet entre guillemets.
    • IP_ADDRESS : adresse IP à ajouter.

    Si vous souhaitez que Compute Engine attribue une adresse IP externe éphémère plutôt que d'utiliser une adresse IP externe statique, ne renseignez pas la propriété --address IP_ADDRESS :

    gcloud compute instances add-access-config VM_NAME \
        --access-config-name="ACCESS_CONFIG_NAME"

API

Vous pouvez modifier l'adresse IP externe d'une VM en ajoutant une nouvelle configuration d'accès pour cette VM.

  1. Vérifiez si votre VM dispose d'une configuration d'accès existante. Pour vérifier les détails de la VM, envoyez une requête GET à la méthode instances.get.

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME

    Remplacez les éléments suivants :

    • PROJECT_ID : ID du projet pour cette requête
    • ZONE : zone où se trouve la VM
    • VM_NAME : nom de la VM. S'il existe déjà une configuration d'accès, la réponse est semblable à ce qui suit :
    "networkInterfaces": [
      {
        "network":
        ...
        "networkIP": "192.0.2.1",
        "name": "nic0",
        "accessConfigs": [
          {
            "type": "ONE_TO_ONE_NAT",
            "name": "External NAT",
            "natIP": "203.0.113.1",
            "networkTier": "PREMIUM",
            "kind": "compute#accessConfig"
          }
        ],
        ...
      }
    ]

    Le champ networkInterfaces[].accessConfigs[].natIP renvoie l'adresse IP externe statique de l'instance de VM.

  2. Supprimez la configuration d'accès existante en envoyant une requête POST à la méthode instances.deleteAccessConfig.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/deleteAccessConfig
  3. Ajoutez une configuration d'accès à l'interface réseau de l'instance de VM en envoyant une requête POST à la méthode instances.addAccessConfig.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/addAccessConfig
    
    {
    "natIP": "IP_ADDRESS",
    "name": "ACCESS_CONFIG_NAME"
    }

    Remplacez les éléments suivants :

    • IP_ADDRESS : adresse IP externe à associer à l'instance. Spécifiez une adresse IP externe statique réservée et inutilisée disponible pour le projet.
    • ACCESS_CONFIG_NAME : nom de la configuration d'accès Le nom par défaut recommandé est "External NAT".

Convertissez une adresse IP externe éphémère.

Si votre instance possède une adresse IP externe éphémère et que vous souhaitez l'attribuer de manière permanente à votre projet, convertissez l'adresse IP externe éphémère en adresse IP externe statique. La conversion d'une adresse IP externe éphémère en adresse IP réservée n'entraîne pas la suppression des paquets envoyés à l'instance par Google Cloud. Cela inclut les paquets envoyés à l'instance directement ou au moyen d'un équilibreur de charge.

Console

  1. Accéder à la page Adresses IP externes.

    Accéder à la page "Adresses IP externes"

  2. Sur la ligne de l'adresse IP que vous souhaitez convertir en adresse statique, cliquez sur Réserver.
  3. Indiquez un nom pour la nouvelle adresse IP statique, puis cliquez sur Réserver.

gcloud

Pour convertir une adresse IP externe éphémère en adresse IP externe statique, indiquez l'adresse IP externe éphémère à l'aide de l'option --addresses avec la commande compute addresses create. Utilisez l'option region pour convertir une adresse IP régionale éphémère ou l'option global pour convertir une adresse IP globale éphémère.

gcloud compute addresses create ADDRESS_NAME --addresses=IP_ADDRESS \
  [--region=REGION | --global]

Remplacez les éléments suivants :

  • ADDRESS_NAME : nom que vous souhaitez donner à cette adresse.
  • IP_ADDRESS : adresse IP que vous souhaitez promouvoir.
  • REGION : région à laquelle appartient l'adresse IP régionale.

API

Pour promouvoir une adresse IP régionale éphémère, appelez la méthode addresses.insert :

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses

Pour convertir une adresse IP globale éphémère, envoyez une requête POST à l'URI suivant :

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses
Le corps de votre requête doit contenir les éléments suivants :
{
  "name": "ADDRESS_NAME",
  "address": "IP_ADDRESS"
}

Remplacez les éléments suivants :

  • ADDRESS_NAME : nom que vous souhaitez donner à cette adresse.
  • IP_ADDRESS : adresse IP que vous souhaitez promouvoir.
  • REGION : région à laquelle appartient l'adresse IP.
  • PROJECT_ID : ID du projet pour cette requête

L'adresse IP externe reste associée à l'instance même après sa conversion en adresse IP externe statique. Si vous devez attribuer l'adresse IP externe statique que vous venez de convertir à une autre ressource, annulez l'attribution de l'adresse IP externe statique à l'instance existante.

Répertorier des adresses IP externes statiques

Pour répertorier les adresses IP externes statiques que vous avez réservées pour votre projet, utilisez la console, exécutez compute addresses list ou envoyez une requête GET à l'API.

Console

Pour afficher la liste des adresses IP de votre projet, accédez à la page Adresses IP externes.

Accéder à la page "Adresses IP externes"

gcloud

Utiliser la commande compute addresses list

gcloud compute addresses list

API

Appelez la méthode addresses.list :

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses

Remplacez l'élément suivant :

  • REGION : nom de la région pour cette requête.
  • PROJECT_ID : ID du projet pour cette requête

Pour répertorier toutes les adresses dans toutes les régions, appelez la méthode aggregatedList.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/addresses

Décrire une adresse IP externe statique

Pour obtenir des informations sur une adresse IP externe statique, utilisez la console, gcloud CLI ou l'API.

Console

  1. Accéder à la page Adresses IP externes.

    Accéder à la page "Adresses IP externes"

  2. Cliquez sur l'adresse IP pour laquelle vous souhaitez obtenir plus d'informations.

gcloud

Utilisez la commande addresses describe et remplacez ADDRESS_NAME par le nom de l'adresse IP externe que vous souhaitez décrire.

gcloud compute addresses describe ADDRESS_NAME

API

Appelez la méthode addresses.get :

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME

Remplacez les éléments suivants :

  • ADDRESS_NAME : nom de l'adresse IP.
  • REGION : nom de la région pour la requête.
  • PROJECT_ID : ID du projet pour la requête.

Annuler l'attribution d'une adresse IP externe statique

Vous pouvez annuler l'attribution d'une adresse IP externe statique en modifiant l'attribution d'adresse IP à l'aide de Cloud Console ou en supprimant la configuration d'accès associée à la VM qui utilise l'adresse. Vous pouvez également annuler l'attribution de l'adresse IP en supprimant l'instance. Annuler l'attribution d'une adresse IP externe statique permet de la réattribuer à une autre ressource.

Cette annulation d'attribution supprime l'adresse IP de la ressource, mais elle reste réservée par le projet.

Console

  1. Accéder à la page Adresses IP externes.

    Accéder à la page "Adresses IP externes"

  2. Sélectionnez l'adresse IP statique dont vous souhaitez annuler l'attribution.
  3. Cliquez sur Modifier pour ouvrir la boîte de dialogue Associer une adresse IP.
  4. Dans la liste déroulante Associer à, sélectionnez Aucune.
  5. Cliquez sur OK.

gcloud

Vous pouvez vérifier si une adresse IP statique est utilisée en exécutant la commande gcloud compute addresses list :

gcloud compute addresses list

Le résultat ressemble à ce qui suit :

NAME                 REGION    ADDRESS            STATUS
example-address      REGION    198.51.100.1       RESERVED
example-address-new  REGION    203.0.113.1        IN_USE

Dans cet exemple, l'adresse example-address-new est actuellement utilisée.

Pour supprimer la configuration d'accès d'une instance et annuler l'attribution d'une adresse IP externe statique, procédez comme suit :

  1. Récupérez le nom de la configuration d'accès à supprimer. Pour cela, utilisez la commande gcloud compute instances describe. Remplacez VM_NAME par le nom de la VM.

    gcloud compute instances describe VM_NAME

    La configuration d'accès s'affiche au format suivant :

    networkInterfaces:
       - accessConfigs:
         - kind: compute#accessConfig
           name: external-nat
           natIP: 203.0.113.1
           type: ONE_TO_ONE_NAT
    
  2. Supprimez la configuration d'accès.

    Exécutez la commande gcloud compute instances delete-access-config :

    gcloud compute instances delete-access-config VM_NAME \
    --access-config-name="ACCESS_CONFIG_NAME"

    Remplacez les éléments suivants :

    • VM_NAME : nom de l'instance de machine virtuelle.
    • ACCESS_CONFIG_NAME : nom de la configuration d'accès à supprimer. Assurez-vous d'inclure le nom complet entre guillemets.
  3. Vérifiez que votre adresse IP externe statique est maintenant disponible et marquée comme RESERVED au lieu de IN_USE.

    gcloud compute addresses list

    Exemple :

    NAME                 REGION      ADDRESS           STATUS
    example-address      REGION      198.51.100.1      RESERVED
    example-address-new  REGION      203.0.113.1       RESERVED

Maintenant que votre adresse IP externe statique est disponible, vous pouvez choisir de l'attribuer à une autre instance.

API

Vous pouvez annuler l'attribution d'une adresse IP externe statique en supprimant la configuration d'accès associée à la VM qui l'utilise.

  1. Pour vérifier les détails de configuration d'accès d'une VM, envoyez une requête GET à la méthode instances.get.

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
  2. Supprimez la configuration d'accès existante en envoyant une requête POST à la méthode instances.deleteAccessConfig.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/deleteAccessConfig

    Remplacez les éléments suivants :

    • PROJECT_ID : ID du projet pour cette requête
    • ZONE : zone où se trouve la VM
    • VM_NAME : nom de la VM

Libérer une adresse IP externe statique

Si vous n'avez plus besoin d'une adresse IP externe statique, vous pouvez la libérer afin qu'elle soit renvoyée au pool d'adresses IP général pour les autres utilisateurs de Compute Engine.

Console

  1. Accéder à la page Adresses IP externes.

    Accéder à la page "Adresses IP externes"

  2. Cochez la case à côté de l'adresse IP à libérer.
  3. Cliquez sur Libérer l'adresse IP.

gcloud

Exécutez la commande compute addresses delete.

gcloud compute addresses delete ADDRESS_NAME

Remplacez ADDRESS_NAME par le nom de l'adresse IP à libérer.

API

Appelez la méthode addresses.delete :

DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME

Remplacez les éléments suivants :

  • ADDRESS_NAME : nom de l'adresse IP.
  • REGION : nom de la région pour cette requête.
  • PROJECT_ID : ID du projet pour cette requête

Restreindre les adresses IP externes à des instances de VM spécifiques

Pour certaines charges de travail, il est possible que vous deviez respecter des conditions requises essentielles, telles que des restrictions de sécurité et de réseau. Par exemple, vous pouvez restreindre l'adresse IP externe afin que seules des instances de VM spécifiques puissent les utiliser. Cette option permet d'éviter l'exfiltration de données ou de maintenir l'isolation du réseau. À l'aide d'une règle d'administration, vous pouvez limiter les adresses IP externes à des instances de VM spécifiques avec des contraintes pour contrôler l'utilisation des adresses IP externes pour vos instances de VM au sein d'une organisation ou d'un projet.

Voici la contrainte permettant de contrôler les adresses IP externes sur les VM :

constraints/compute.vmExternalIpAccess

Pour utiliser la contrainte, vous devez spécifier une règle avec la liste allowedList des VM autorisées à avoir des adresses IP externes. Si aucune règle n'est spécifiée, toutes les adresses IP externes sont autorisées pour toutes les VM. Lorsque la règle est en place, seules les VM répertoriées dans la liste allowedValues peuvent se voir attribuer une adresse IP externe, éphémère ou statique. En revanche, les autres VM Compute Engine dans l'organisation ou le projet et qui ne sont pas explicitement définies dans la règle ne sont pas autorisées à utiliser des adresses IP externes.

Les instances de VM sont identifiées dans les listes d'autorisation et de refus en utilisant l'URI de VM :

projects/PROJECT_ID/zones/ZONE/instances/VM_NAME

Spécifications

  • Vous ne pouvez appliquer cette contrainte de liste qu'aux instances de VM.
  • Vous ne pouvez pas appliquer la contrainte rétroactivement. Toutes les instances de VM qui ont des adresses IP externes avant que la règle ne soit activée conservent leur adresse IP externe.
  • Cette contrainte accepte soit une liste allowedList, soit une liste deniedList, mais pas les deux dans la même règle.
  • C'est à vous ou à un administrateur disposant des autorisations nécessaires de gérer et d'administrer le cycle de vie et l'intégrité de l'instance. La contrainte ne valide que l'URI de l'instance et n'empêche pas les VM autorisées d'être modifiées, supprimées ni recréées.

Autorisations

Pour définir une contrainte au niveau du projet ou de l'organisation, vous devez disposer du rôle orgpolicy.policyAdmin sur l'organisation.

Définir la contrainte de règle au niveau de l'organisation

Console

  1. Accédez à la page Règles d'administration.

    Accéder à la page "Règles d'administration"

  2. Si nécessaire, sélectionnez l'organisation requise dans le menu déroulant du projet.
  3. Cliquez sur Définir les adresses IP externes autorisées pour les instances de VM.
  4. Cliquez sur Modifier pour modifier la règle des adresses IP externes. Si vous ne pouvez pas accéder à l'outil Modifier, vous ne disposez pas des autorisations appropriées.
  5. Sélectionnez Personnaliser pour appliquer une règle d'administration à certaines instances de VM.

    Personnaliser la règle d'administration.

  6. Sélectionnez les valeurs appropriées dans Application des règles et Type de règle.

  7. Sous Valeurs de règles, sélectionnez Personnalisé.

  8. Saisissez un URI pour une instance de VM, puis appuyez sur Entrée. L'URI doit respecter le format suivant :

    projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
    
  9. Cliquez sur Nouvelle valeur de règle et saisissez les URI des instances de VM si nécessaire.

  10. Cliquez sur Enregistrer pour appliquer la contrainte.

gcloud

Pour définir une contrainte pour l'accès aux adresses IP externes, vous devez d'abord disposer de l'ID de votre organisation. Vous pouvez trouver l'ID de l'organisation en exécutant la commande organizations list et en recherchant l'ID numérique dans la réponse :

gcloud organizations list

gcloud CLI renvoie une liste d'organisations au format suivant :

DISPLAY_NAME               ID
example-organization1      29252605212
example-organization2      1234567890

Exécutez la commande gcloud resource-manager org-policies set-policy pour définir la règle. Vous devez fournir votre règle sous la forme d'un fichier JSON. Créez un fichier JSON au format suivant :

{
"constraint": "constraints/compute.vmExternalIpAccess",
"listPolicy": {
  "allowedValues": [
     "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME",
     "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME",
     "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"
  ]
 }
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID de projet de cette requête, tel que example-project. Sachez que la procédure diffère des étapes à suivre pour configurer les règles d'administration qui, elles, nécessitent l'ID numérique de l'organisation.
  • ZONE : zone de l'instance.
  • VM_NAME : nom de l'instance de machine virtuelle.

Vous pouvez également spécifier une liste deniedValues pour indiquer les instances de VM pour lesquelles vous voulez explicitement interdire les adresses IP externes. Les instances qui ne figurent pas sur la liste seront implicitement autorisées à posséder une adresse IP externe. Vous pouvez spécifier une liste allowedValues ou une liste deniedValues, mais pas les deux.

Ensuite, transmettez le fichier avec votre requête :

gcloud resource-manager org-policies set-policy MY_POLICY.JSON --organization=ORGANIZATION_ID

Remplacez ORGANIZATION_ID par l'ID numérique de l'organisation.

Si vous ne souhaitez pas que les VM aient accès aux adresses IP externes, vous pouvez configurer une règle avec le paramètre allValues défini sur DENY :

{
  "constraint": "constraints/compute.vmExternalIpAccess",
  "listPolicy": {
    "allValues": "DENY"
  }
}

API

Utilisez l'API setOrgPolicy() pour définir votre contrainte. Les VM de la liste allowedValue que vous spécifiez sont autorisées à disposer d'adresses IP externes. Vous pouvez également spécifier une liste deniedValues pour indiquer les instances de VM pour lesquelles vous voulez explicitement interdire les adresses IP externes. Les instances qui ne figurent pas sur la liste seront implicitement autorisées à posséder une adresse IP externe. Vous pouvez spécifier une liste allowedValues ou une liste deniedValues, mais pas les deux.

Par exemple, voici une requête permettant de définir la contrainte compute.vmExternalIpAccess sur une organisation, dans laquelle les instances de VM de certains projets de l'organisation sont autorisées à posséder des adresses IP externes :

POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORGANIZATION_ID:setOrgPolicy

ORGANIZATION_ID est l'ID numérique de l'organisation.

Dans le corps de votre requête, indiquez la règle souhaitée pour cette contrainte :

{
  "policy": {
    "constraint": "constraints/compute.vmExternalIpAccess",
    "listPolicy": {
      "allowedValues": [
        "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME",
        "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME",
        "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"
        ]
      }
    }
 }

Si vous ne souhaitez pas que les instances aient accès aux adresses IP externes, vous pouvez configurer une règle avec le paramètre allValues défini sur DENY :

{
  "policy": {
    "constraint": "constraints/compute.vmExternalIpAccess",
    "listPolicy": {
      "allValues": "DENY"
      }
    }
 }

Définir la règle au niveau du projet

Une règle définie au niveau du projet est prioritaire sur la règle définie au niveau de l'organisation. Exemple : si example-vm-1 figure sur la liste allowedValues au niveau de l'organisation, mais que la règle au niveau du projet mentionne la même VM sur la liste deniedValues, l'instance de VM ne sera pas autorisée à posséder une adresse IP externe.

Console

Suivez la même procédure que celle décrite à la section Définir la contrainte de règle au niveau de l'organisation en choisissant le projet souhaité dans le sélecteur de projet plutôt que via le sélecteur d'organisation.

Sélecteur de projet

gcloud

Exécutez la commande gcloud resource-manager org-policies set-policy pour définir la règle. Vous devez fournir votre règle sous la forme d'un fichier JSON. Créez un fichier JSON au format suivant :

{
 "constraint": "constraints/compute.vmExternalIpAccess",
 "listPolicy": {
  "allowedValues": [
   "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"
  ]
 }
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID de projet de cette requête, tel que example-project. Sachez que la procédure diffère des étapes à suivre pour configurer les règles d'administration qui, elles, nécessitent l'ID numérique de l'organisation.
  • ZONE : zone de l'instance.
  • VM_NAME : nom de l'instance de machine virtuelle.

Vous pouvez également spécifier une liste deniedValues d'instances de VM pour lesquelles vous voulez explicitement interdire les adresses IP externes. Les instances qui ne figurent pas sur la liste seront implicitement autorisées à posséder une adresse IP externe. Vous pouvez spécifier une liste allowedValues ou une liste deniedValues, mais pas les deux.

Ensuite, transmettez le fichier avec votre requête :

gcloud resource-manager org-policies set-policy MY_POLICY.JSON --project=example-project

API

Utilisez l'API setOrgPolicy pour définir votre contrainte. Les VM de la liste allowedValue que vous spécifiez sont autorisées à disposer d'adresses IP externes. Vous pouvez également spécifier une liste deniedValues pour indiquer les instances de VM pour lesquelles vous voulez explicitement interdire les adresses IP externes. Les instances qui ne figurent pas sur la liste sont implicitement autorisées à posséder une adresse IP externe. Vous pouvez spécifier une liste allowedValues ou une liste deniedValues, mais pas les deux.

Par exemple, voici une requête permettant de définir la contrainte compute.vmExternalIpAccess sur un projet pour autoriser des instances de VM spécifiques à posséder des adresses IP externes :

POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setOrgPolicy

Remplacez PROJECT_ID par l'ID du projet pour cette requête.

Le corps de la requête contient la règle souhaitée pour cette contrainte :

{
  "policy": {
    "constraint": "constraints/compute.vmExternalIpAccess",
    "listPolicy": {
      "allowedValues": [
        "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"
      ]
    }
  }
}

Bonnes pratiques

  • Évitez d'utiliser la liste deniedValues avec cette contrainte. Si vous définissez des valeurs dans la liste deniedValues, cela signifie que seules les instances de VM de la liste deniedValues ne peuvent pas se servir d'adresses IP externes. Cela peut poser un problème de sécurité si vous souhaitez contrôler exactement quelles VM peuvent disposer d'adresses IP externes. Si vous voulez supprimer certaines VM de la liste allowedValues, mettez à jour la règle existante pour retirer les VM de la liste allowedList plutôt que d'ajouter des VM à la liste deniedValues à un niveau hiérarchique inférieur.

  • Si vous souhaitez définir une règle sur une grande partie de la hiérarchie des ressources, mais exclure certains projets, vous devez restaurer la règle par défaut à l'aide de la méthode setOrgPolicy. Pour ce faire, spécifiez l'objet restoreDefault pour que toutes les VM des projets puissent être associées à des adresses IP externes. Les règles actuellement en place pour les projets ne sont pas affectées par le paramètre par défaut.

  • Appliquez cette règle d'administration avec les rôles IAM pour mieux contrôler votre environnement. Cette règle s'applique uniquement aux instances de VM, mais si vous souhaitez mieux contrôler et restreindre les adresses IP externes sur les appareils réseau, vous pouvez accorder le rôle compute.networkAdmin aux parties appropriées.

  • Tous les services et produits qui s'exécutent sur Compute Engine au sein de l'organisation ou du projet avec la règle activée sont soumis à cette règle d'administration. Plus précisément, les services tels que Google Kubernetes Engine, Cloud Dataflow, Cloud Dataproc et Cloud SQL sont affectés par cette règle. Si cela pose problème, Google recommande de configurer d'autres services et produits dans un projet différent auquel la règle d'administration n'est pas appliquée, et d'utiliser si nécessaire XPN (cross-project networking).

Étape suivante