Service d'adresses IP publiques

Le service réseau d'adresses IP publiques (externes) vous permet de vous connecter depuis Internet à une machine virtuelle (VM) de charge de travail, à un dispositif de gestion ou à un équilibreur de charge s'exécutant dans votre cloud privé. Par exemple, si vous exécutez un serveur Web sur votre VM de charge de travail, vous pouvez diffuser le trafic Web en utilisant l'adresse IP publique via Internet. Par défaut, le service réseau d'adresses IP publiques est désactivé.

L'attribution d'une adresse IP publique à une ressource offre également les avantages suivants :

  • Une protection contre les attaques par déni de service distribué (DDoS) Cette protection est automatiquement activée pour l'adresse IP publique.
  • Une surveillance permanente du trafic et la réduction en temps réel des attaques courantes au niveau du réseau.
  • Une protection contre les attaques sur l'ensemble du réseau mondial et atténuation de leur impact. Le réseau peut être utilisé pour répartir le trafic associé aux attaques entre les régions et le limiter.

Comportement

Une adresse IP publique ne peut être attribuée qu'à une seule adresse IP privée. De plus, l'adresse IP publique est dédiée à cette adresse IP privée jusqu'à ce que vous décidiez d'annuler son attribution. Une ressource associée à une adresse IP publique utilise toujours l'adresse IP publique pour accéder à Internet. Vous pouvez réserver jusqu'à 100 adresses IP publiques pour le réseau VPC principal connecté à VMwarenEngine.

Par défaut, le trafic entrant sur une adresse IP publique est refusé et seul l'accès Internet sortant est autorisé. Pour autoriser ce trafic, créez une règle de pare-feu pour l'adresse IP publique vers le port spécifique.

Conditions préalables à l'utilisation de gcloud et de l'API

Pour gérer vos ressources VMware Engine à l'aide de l'outil de ligne de commande gcloud ou de l'API, nous vous recommandons de configurer les outils comme décrit ci-dessous.

gcloud

  1. Définissez votre ID de projet par défaut :

    gcloud config set project PROJECT_ID
    
  2. Définissez une région et/ou une zone par défaut:

    gcloud config set compute/region REGION
    gcloud config set compute/zone ZONE

Pour en savoir plus sur l'outil gcloud vmware, consultez la documentation de référence de Cloud SDK Cloud.

API

Les exemples d'API de cette documentation utilisent l'outil de ligne de commande cURL pour interroger l'API. La requête cURL requiert un jeton d'accès valide. Il existe de nombreuses façons d'obtenir un jeton d'accès valide. Les étapes suivantes utilisent l'outil gcloud pour générer un jeton d'accès:

  1. Se connecter à Google Cloud

    gcloud auth login
    
  2. Générer un jeton d'accès et exporter vers TOKEN

    export TOKEN=`gcloud auth print-access-token`
    
  3. Vérifier que TOKEN est correctement défini

    echo $TOKEN
    
    Output:
    TOKEN
    

À présent, utilisez le jeton d'autorisation dans vos requêtes adressées à l'API. Exemple :

curl -X GET -H "Authorization: Bearer \"$TOKEN\""  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations

Python

Les exemples de code Python présentés dans cette documentation utilisent la bibliothèque VMware Engine pour communiquer avec l'API. Pour utiliser cette approche, vous devez installer la bibliothèque et configurer les identifiants par défaut de l'application.

  1. Télécharger et installer la bibliothèque Python

     pip install google-cloud-vmwareengine
    
  2. Configurez les informations ADC en exécutant ces commandes dans votre shell.

      gcloud auth application-default login
    

    ou utiliser un fichier de clé de compte de service

      export GOOGLE_APPLICATION_CREDENTIALS="FILE_PATH"
    

Pour en savoir plus sur la bibliothèque, consultez la page de référence ou affichez des exemples de code sur GitHub.

Activer le service réseau d'adresses IP publiques dans une région

Pour pouvoir allouer une adresse IP publique à une VM de charge de travail, vous devez activer le service réseau d'adresses IP publiques dans la région :

Console

  1. Accéder au portail VMware Engine
  2. Accédez à Réseau > Paramètres régionaux.
  3. Sur la ligne correspondant à la région qui vous intéresse, sélectionnez Modifier. Si la région n'est pas répertoriée dans le tableau récapitulatif, ajoutez-la en cliquant sur Ajouter une région.
  4. Définissez l'option Service d'adresses IP publiques sur Activé.
    • Pour activer le service d'adresses IP publiques, vous devez également activer le service réseau d'accès à Internet.
    • Il est possible d'activer le service d'accès à Internet et de laisser le service d'adresses IP publiques désactivé. Dans ce cas, le VPN point à site et l'allocation d'adresses IP publiques ne sont pas disponibles.
  5. Dans le champ Plage CIDR des services périphériques, saisissez la plage d'adresses à utiliser lors de l'adressage de la passerelle d'adresses IP publiques de VMware Engine (plage d'adresses /26).
  6. Cliquez sur Envoyer.

L'état du service réseau passe à Activé lorsque l'opération est terminée, généralement après quelques minutes.

gcloud

À l'aide de l'outil gcloud, exécutez la commande suivante pour créer une règle de réseau:

gcloud vmware network-policies create NETWORK_POLICY_NAME \
    --vmware-engine-network NETWORK_NAME --edge-services-cidr IP_RANGE \
    --location REGION --external-ip-access --internet-access

Remplacez les éléments suivants :

  • NETWORK_POLICY_NAME: nom de cette règle de réseau
  • NETWORK_NAME: réseau de cette requête, au format REGION-default
  • IP_RANGE: plage CIDR à utiliser pour l'accès à Internet et les passerelles d'accès aux adresses IP externes, au format CIDR. Veuillez indiquer un bloc CIDR RFC 1918 avec le préfixe "/26"
  • REGION: région du réseau

API

curl -X POST -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/networkPolicies?networkPolicyId=NETWORK_POLICY_NAME -d '{
  "vmwareEngineNetwork":"projects/PROJECT_ID/locations/REGION/vmwareEngineNetworks/NETWORK_NAME",
  "edgeServiceCidr":IP_RANGE,
  "internetAccess: {
    "enabled": true
   },
   "externalIp": {
     "enabled": true
   }
 }

Remplacez les éléments suivants :

  • NETWORK_POLICY_NAME: nom de cette règle de réseau
  • PROJECT_ID : ID du projet pour cette requête
  • REGION: région du réseau
  • IP_RANGE: plage CIDR à utiliser pour l'accès à Internet et les passerelles d'accès aux adresses IP externes, au format CIDR. Veuillez indiquer un bloc CIDR RFC 1918 avec le préfixe "/26".
  • NETWORK_NAME: réseau auquel cette règle de réseau s'applique, doit être au format >REGION-default

Python

Créez une règle de réseau avec external_ip et internet_access définis sur True à l'aide de la fonction suivante:

from google.api_core import operation
from google.cloud import vmwareengine_v1

def create_network_policy(
    project_id: str,
    region: str,
    ip_range: str,
    internet_access: bool,
    external_ip: bool,
) -> operation.Operation:
    """
    Creates a new network policy in a given network.

    Args:
        project_id: name of the project you want to use.
        region: name of the region you want to use. I.e. "us-central1"
        ip_range: the CIDR range to use for internet access and external IP access gateways,
            in CIDR notation. An RFC 1918 CIDR block with a "/26" suffix is required.
        internet_access: should internet access be allowed.
        external_ip: should external IP addresses be assigned.

    Returns:
        An operation object representing the started operation. You can call its .result() method to wait for
        it to finish.

    Raises:
        ValueError if the provided ip_range doesn't end with /26.
    """
    if not ip_range.endswith("/26"):
        raise ValueError(
            "The ip_range needs to be an RFC 1918 CIDR block with a '/26' suffix"
        )

    network_policy = vmwareengine_v1.NetworkPolicy()
    network_policy.vmware_engine_network = f"projects/{project_id}/locations/{region}/vmwareEngineNetworks/{region}-default"
    network_policy.edge_services_cidr = ip_range
    network_policy.internet_access.enabled = internet_access
    network_policy.external_ip.enabled = external_ip

    request = vmwareengine_v1.CreateNetworkPolicyRequest()
    request.network_policy = network_policy
    request.parent = f"projects/{project_id}/locations/{region}"
    request.network_policy_id = f"{region}-default"

    client = vmwareengine_v1.VmwareEngineClient()
    return client.create_network_policy(request)

Allouer une adresse IP publique

Pour allouer une adresse IP publique à une VM de charge de travail, procédez comme suit :

  1. Accédez au portail Google Cloud VMware Engine.
  2. Accédez à Réseau > Adresses IP publiques.
  3. Cliquez sur Allouer.
  4. Dans le champ Nom, saisissez un nom permettant d'identifier l'adresse IP publique.
  5. Sélectionnez le cloud privé contenant la VM de charge de travail.
  6. Sélectionnez l'emplacement auquel vous souhaitez diffuser l'adresse IP publique allouée.
  7. Dans le champ Adresse locale associée, saisissez l'adresse IP locale de la VM à laquelle vous souhaitez attribuer cette adresse IP publique.
  8. Cliquez sur Envoyer pour commencer la tâche d'allocation de l'adresse IP publique.

Vous pouvez vérifier l'état de la tâche sur la page Activité > Tâches. Une fois l'allocation terminée, la nouvelle entrée s'affiche sur la page Adresses IP publiques avec l'état Opérationnel.