Exercice – Configurer l’accès réseau

Effectué

Dans cet exercice, vous allez configurer l’accès à la machine virtuelle (VM) que vous avez créée précédemment dans ce module.

Important

Le bac à sable Microsoft Learn doit encore être en cours d’exécution. Si l'environnement de test a expiré, vous devrez refaire l'exercice précédent (Exercice – Créer une machine virtuelle Azure).

Pour vous assurer que la machine virtuelle créée précédemment est toujours en cours d’exécution, utilisez la commande suivante :

az vm list


Si vous recevez une réponse vide [], vous devez à nouveau effectuer le premier exercice de ce module. Si le résultat répertorie votre machine virtuelle actuelle et ses paramètres, vous pouvez continuer.

Pour l’heure, la machine virtuelle que vous avez créée et sur laquelle vous avez installé Nginx n’est pas accessible via Internet. Vous allez créer un groupe de sécurité réseau qui change cela qui permettra l'accès entrant HTTP sur le port 80.

Tâche 1 : Accéder à votre serveur web

Dans cette procédure, vous obtenez l’adresse IP de votre machine virtuelle et tentez d’accéder à la page d’accueil de votre serveur web.

  1. Exécutez la commande az vm list-ip-addresses suivante pour obtenir l’adresse IP de votre machine virtuelle et stockez le résultat en tant que variable Bash :

    IPADDRESS="$(az vm list-ip-addresses \
      --resource-group "<rgn>[sandbox resource group name]</rgn>" \
      --name my-vm \
      --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \
      --output tsv)"    
    
  2. Exécutez la commande curl suivante pour télécharger la page d'accueil de votre serveur web :

    curl --connect-timeout 5 http://$IPADDRESS
    

    L’argument --connect-timeout permet de permettre jusqu'à cinq secondes pour que la connexion se produise. Après cinq secondes, vous voyez un message d’erreur indiquant que le délai de connexion a expiré :

    curl: (28) Connection timed out after 5001 milliseconds
    

    Ce message signifie que la VM n'était pas accessible pendant la période de temps impartie.

  3. En guise d’étape facultative, essayez d’accéder au serveur web à partir d’un navigateur :

    1. Exécutez la commande suivante pour afficher l'adresse IP de votre VM dans la console :

      echo $IPADDRESS       
      

      Vous voyez une adresse IP, par exemple 23.102.42.235.

    2. Copiez l’adresse IP que vous voyez dans le presse-papiers.

    3. Ouvrez un nouvel onglet de navigateur et accédez à votre serveur web. Après quelques instants, vous constatez que la connexion ne se produit pas. Si vous attendez que le navigateur expire, vous obtenez un résultat semblable à celui-ci :

      Screenshot of a web browser showing an error message that says the connection timed out.

    4. Gardez cet onglet de navigateur ouvert pour plus tard.

Tâche 2 : Lister les règles de groupe de sécurité réseau actuelles

Votre serveur web n’était pas accessible. Pour en déterminer la raison, nous allons examiner vos règles actuelles de groupe de sécurité réseau.

  1. Exécutez la commande az network nsg list suivante pour lister les groupes de sécurité réseau associés à votre machine virtuelle :

    az network nsg list \
      --resource-group "<rgn>[sandbox resource group name]</rgn>" \
      --query '[].name' \
      --output tsv    
    

    Vous voyez ceci :

    my-vmNSG
    
    
    

    Chaque machine virtuelle sur Azure est associée à au moins un groupe de sécurité réseau. Dans ce cas, Azure a créé pour vous un groupe de sécurité réseau appelé my-vmNSG.

  2. Exécutez la commande az network nsg rule list suivante pour lister les règles associées au groupe de sécurité réseau nommé my-vmNSG :

    az network nsg rule list \
      --resource-group "<rgn>[sandbox resource group name]</rgn>" \
      --nsg-name my-vmNSG    
    

    Vous voyez un grand bloc de texte au format JSON dans la sortie. À l’étape suivante, vous exécuterez une commande similaire qui facilitera la lecture de cette sortie.

  3. Exécutez la commande az network nsg rule list une deuxième fois. Cette fois, utilisez l’argument --query pour récupérer uniquement le nom, la priorité, les ports affectés et l’accès (Autoriser ou Refuser) pour chaque règle. L’argument --output formate la sortie sous forme de table pour en faciliter la lecture.

    az network nsg rule list \
      --resource-group "<rgn>[sandbox resource group name]</rgn>" \
      --nsg-name my-vmNSG \
      --query '[].{Name:name, Priority:priority, Port:destinationPortRange, Access:access}' \
      --output table    
    

    Vous voyez ceci :

    Name              Priority    Port    Access
    -----------------  ----------  ------  --------
    default-allow-ssh  1000        22      Allow
    
    

    Vous voyez la règle par défaut, default-allow-ssh. Cette règle autorise les connexions entrantes via le port 22 (SSH). SSH (Secure Shell) est un protocole utilisé sur sous Linux pour permettre aux administrateurs d'accéder au système à distance. La priorité de cette règle est 1000. Les règles sont traitées par ordre de priorité, avec les numéros les plus bas traités avant les numéros les plus élevés.

Par défaut, le groupe de sécurité réseau d’une VM Linux autorise l’accès au réseau uniquement via le port 22. Cela permet aux administrateurs d’accéder au système. Vous devez également autoriser les connexions entrantes sur le port 80, ce qui permet l'accès sur HTTP.

Tâche 3 : Créer la règle de sécurité du réseau

Ici, vous créez une règle de sécurité de réseau qui autorise l’accès entrant sur le port 80 (HTTP).

  1. Exécutez la commande az network nsg rule create suivante pour créer une règle appelée allow-http qui autorise l’accès entrant sur le port 80 :

    az network nsg rule create \
      --resource-group "<rgn>[sandbox resource group name]</rgn>" \
      --nsg-name my-vmNSG \
      --name allow-http \
      --protocol tcp \
      --priority 100 \
      --destination-port-range 80 \
      --access Allow    
    

    À des fins d’apprentissage, définissez ici la priorité sur 100. Dans ce cas, la priorité n’a pas d’importance. Vous devriez tenir compte de la priorité si vous aviez des plages de ports qui se chevauchent.

  2. Pour vérifier la configuration, exécutez az network nsg rule list pour voir la liste mise à jour des règles :

    az network nsg rule list \
      --resource-group "<rgn>[sandbox resource group name]</rgn>" \
      --nsg-name my-vmNSG \
      --query '[].{Name:name, Priority:priority, Port:destinationPortRange, Access:access}' \
      --output table    
    

    Vous voyez à la fois la règle default-allow-ssh par défaut et votre nouvelle règle, allow-http :

    Name              Priority    Port    Access
    -----------------  ----------  ------  --------
    default-allow-ssh  1000        22      Allow
    allow-http          100        80      Allow    
    

Tâche 4 : Accéder à nouveau à votre serveur web

Maintenant que vous avez configuré l’accès réseau au port 80, nous allons essayer d’accéder une deuxième fois au serveur web.

Notes

Une fois le groupe de sécurité réseau mis à jour, la propagation des règles mises à jour peut prendre un certain temps. Réessayez l’étape suivante, en marquant des pauses entre les différentes tentatives, jusqu’à parvenir aux résultats souhaités.

  1. Exécutez la même commande curl que vous avez exécutée précédemment :

    curl --connect-timeout 5 http://$IPADDRESS
    

    Vous voyez ceci :

    <html><body><h2>Welcome to Azure! My name is my-vm.</h2></body></html>
    
  2. Une étape facultative consiste à actualiser l’onglet de votre navigateur pour pointer vers votre serveur web. Vous voyez ceci :

    A screenshot of a web browser showing the home page from the web server. The home page displays a welcome message.

Bon travail. Dans la pratique, vous pouvez créer un groupe de sécurité réseau autonome incluant les règles d’accès réseau entrantes et sortantes dont vous avez besoin. Si vous avez plusieurs machines virtuelles qui remplissent le même objectif, vous pouvez affecter ce groupe de sécurité réseau à chaque machine virtuelle au moment de sa création. Cette technique vous permet de contrôler l’accès réseau à plusieurs machines virtuelles sous un seul ensemble central de règles.

Nettoyage

Le bac à sable nettoie automatiquement vos ressources une fois que vous avez terminé ce module.

Il est important de vérifier à la fin d'un projet si les ressources que vous avez créées sont toujours nécessaires. Les ressources en fonctionnement peuvent engendrer des coûts supplémentaires. Vous pouvez supprimer les ressources une par une, ou choisir de supprimer le groupe de ressources afin de supprimer l’ensemble des ressources.