DevOpsFacile
AccueilParcours de formationCertificationsModulesCheat SheetÀ Propos
DevOpsFacile

Une plateforme d'apprentissage complète pour maîtriser les pratiques DevOps modernes, du débutant à l'expert.

contact@devopsfacile.fr

Formation

  • Parcours de formation
  • Modules

Informations

  • À Propos
  • Conditions d'utilisation
  • Confidentialité
  • Mentions légales

© 2026 DevOps Facile. Tous droits réservés.

Fait avec pour la communauté DevOps

ModulesAzure - Intermédiaire : VNet, App Service, AKS et Bicep06 - Virtual Network, sous-réseaux et NSG

Détails

  • 40 minutes
  • Intermédiaire

Objectifs

  • Créer un VNet avec des sous-réseaux publics et privés
  • Configurer des Network Security Groups (NSG) avec des règles précises
  • Tester les règles de sécurité réseau avec la vérification IP flow
  • Comprendre les peerings VNet pour connecter des réseaux
Module Azure - Intermédiaire : VNet, App Service, AKS et Bicep

Exercice 06 : Virtual Network, sous-réseaux et NSG

🎯 Objectifs

À la fin de cet exercice, vous serez capable de :

  • ✅ Créer un VNet avec plusieurs sous-réseaux segmentés
  • ✅ Configurer des NSG (Network Security Groups) avec des règles entrantes/sortantes
  • ✅ Associer un NSG à un sous-réseau et vérifier le filtrage du trafic
  • ✅ Utiliser "Vérification du flux IP" pour déboguer les règles NSG

Durée estimée : 40 minutes

Difficulté : ⭐⭐⭐☆☆ (Intermédiaire)

Prérequis : Azure CLI installée, notions de réseau TCP/IP


📖 Contexte

Un Virtual Network (VNet) est votre réseau privé isolé dans Azure. Il est l'équivalent d'un VPC AWS. Sans VNet, vos ressources Azure seraient exposées directement à internet. La segmentation en sous-réseaux + les NSG créent des zones de sécurité : les bases de données dans le sous-réseau privé ne sont accessibles que depuis le sous-réseau applicatif.


📋 Énoncé

Créez une architecture réseau sécurisée à deux niveaux : public (web) et privé (données).


🧭 Déroulement de l'exercice

Tâche 1 : Créer le VNet et ses sous-réseaux

bash
az group create --name rg-reseau-exercice --location francecentral

# Créer le VNet avec l'espace d'adressage principal
az network vnet create \
  --name vnet-exercice \
  --resource-group rg-reseau-exercice \
  --location francecentral \
  --address-prefixes 10.0.0.0/16

# Créer le sous-réseau public (pour les serveurs web/load balancers)
az network vnet subnet create \
  --name subnet-public \
  --resource-group rg-reseau-exercice \
  --vnet-name vnet-exercice \
  --address-prefix 10.0.1.0/24

# Créer le sous-réseau privé (pour les bases de données)
az network vnet subnet create \
  --name subnet-prive \
  --resource-group rg-reseau-exercice \
  --vnet-name vnet-exercice \
  --address-prefix 10.0.2.0/24

# Vérifier la structure
az network vnet show \
  --name vnet-exercice \
  --resource-group rg-reseau-exercice \
  --query "{adresses:addressSpace.addressPrefixes,subnets:subnets[*].{nom:name,plage:addressPrefix}}" \
  --output json

Tâche 2 : Créer les Network Security Groups

bash
# NSG pour le sous-réseau public (autorise HTTP/HTTPS/SSH)
az network nsg create \
  --name nsg-public \
  --resource-group rg-reseau-exercice

# Règle : autoriser HTTP depuis internet
az network nsg rule create \
  --nsg-name nsg-public \
  --resource-group rg-reseau-exercice \
  --name "Autoriser-HTTP" \
  --priority 100 \
  --access Allow \
  --protocol Tcp \
  --direction Inbound \
  --source-address-prefixes "*" \
  --destination-port-ranges 80 \
  --description "Trafic HTTP depuis internet"

# Règle : autoriser HTTPS
az network nsg rule create \
  --nsg-name nsg-public \
  --resource-group rg-reseau-exercice \
  --name "Autoriser-HTTPS" \
  --priority 110 \
  --access Allow \
  --protocol Tcp \
  --direction Inbound \
  --source-address-prefixes "*" \
  --destination-port-ranges 443

# Règle : autoriser SSH depuis une IP spécifique seulement
MON_IP=$(curl -s https://checkip.amazonaws.com)
az network nsg rule create \
  --nsg-name nsg-public \
  --resource-group rg-reseau-exercice \
  --name "Autoriser-SSH-MonIP" \
  --priority 120 \
  --access Allow \
  --protocol Tcp \
  --direction Inbound \
  --source-address-prefixes "$MON_IP/32" \
  --destination-port-ranges 22
bash
# NSG pour le sous-réseau privé (autorise uniquement les connexions depuis le subnet public)
az network nsg create \
  --name nsg-prive \
  --resource-group rg-reseau-exercice

# Règle : autoriser PostgreSQL depuis le subnet public seulement
az network nsg rule create \
  --nsg-name nsg-prive \
  --resource-group rg-reseau-exercice \
  --name "Autoriser-Postgres-DepuisPublic" \
  --priority 100 \
  --access Allow \
  --protocol Tcp \
  --direction Inbound \
  --source-address-prefixes 10.0.1.0/24 \
  --destination-port-ranges 5432

# Règle : BLOQUER tout autre trafic entrant
az network nsg rule create \
  --nsg-name nsg-prive \
  --resource-group rg-reseau-exercice \
  --name "Bloquer-Tout-Reste" \
  --priority 4000 \
  --access Deny \
  --protocol "*" \
  --direction Inbound \
  --source-address-prefixes "*" \
  --destination-port-ranges "*"

Tâche 3 : Associer les NSG aux sous-réseaux

bash
# Associer nsg-public au subnet public
az network vnet subnet update \
  --name subnet-public \
  --resource-group rg-reseau-exercice \
  --vnet-name vnet-exercice \
  --network-security-group nsg-public

# Associer nsg-prive au subnet privé
az network vnet subnet update \
  --name subnet-prive \
  --resource-group rg-reseau-exercice \
  --vnet-name vnet-exercice \
  --network-security-group nsg-prive

# Vérifier les associations
az network vnet subnet list \
  --resource-group rg-reseau-exercice \
  --vnet-name vnet-exercice \
  --query '[*].{nom:name,plage:addressPrefix,nsg:networkSecurityGroup.id}' \
  --output table

Tâche 4 : Tester les règles NSG

Créer une VM dans le subnet public pour tester :

bash
az vm create \
  --name vm-test-public \
  --resource-group rg-reseau-exercice \
  --image Ubuntu2204 \
  --vnet-name vnet-exercice \
  --subnet subnet-public \
  --nsg "" \             # Le NSG est déjà sur le subnet
  --size Standard_B1s \
  --admin-username azureuser \
  --generate-ssh-keys \
  --public-ip-sku Standard

# Récupérer l'IP publique
VM_IP=$(az vm show \
  --resource-group rg-reseau-exercice \
  --name vm-test-public \
  --show-details \
  --query publicIps -o tsv)
echo "IP de la VM : $VM_IP"

Utiliser "Vérification du flux IP" dans Azure Network Watcher :

bash
# Activer Network Watcher
az network watcher configure \
  --resource-group NetworkWatcherRG \
  --locations francecentral \
  --enabled

# Vérifier si le port 80 entrant est autorisé
VM_ID=$(az vm show --resource-group rg-reseau-exercice --name vm-test-public --query id -o tsv)
az network watcher test-ip-flow \
  --resource-group rg-reseau-exercice \
  --direction Inbound \
  --local $VM_IP:80 \
  --remote 203.0.113.1:12345 \
  --protocol TCP \
  --vm $VM_ID
# → Access: Allow (règle: Autoriser-HTTP)

# Vérifier si le port 8080 est bloqué
az network watcher test-ip-flow \
  --resource-group rg-reseau-exercice \
  --direction Inbound \
  --local $VM_IP:8080 \
  --remote 203.0.113.1:12345 \
  --protocol TCP \
  --vm $VM_ID
# → Access: Deny (règle: DenyAllInBound - règle par défaut)

Tâche 5 : Nettoyer

bash
az group delete --name rg-reseau-exercice --yes --no-wait

✅ Vérification du résultat

  • Le VNet 10.0.0.0/16 contient 2 sous-réseaux : public (10.0.1.0/24) et privé (10.0.2.0/24)
  • Le NSG public autorise HTTP (80), HTTPS (443) et SSH depuis mon IP
  • Le NSG privé n'autorise PostgreSQL que depuis 10.0.1.0/24
  • La "Vérification du flux IP" confirme que le port 80 est Allow et le port 8080 est Deny

💡 À retenir

Ordre d'évaluation des règles NSG :

  1. Règles triées par priorité (100 = plus haute, 4096 = plus basse)
  2. Première règle correspondante = résultat final (Allow ou Deny)
  3. Règles par défaut implicites : DenyAllInbound et AllowVnetInbound

NSG sur subnet vs NSG sur NIC :

  • NSG sur subnet : s'applique à toutes les VM du subnet
  • NSG sur NIC : s'applique à une seule VM
  • Les deux peuvent coexister (les deux sont évalués)

✨ Solution Complète

bash
# Créer un NSG minimal pour un serveur web
az network nsg create --name mon-nsg --resource-group mon-rg
az network nsg rule create --nsg-name mon-nsg --resource-group mon-rg \
  --name HTTP --priority 100 --access Allow --direction Inbound \
  --protocol Tcp --destination-port-ranges 80 443
az network vnet subnet update --name mon-subnet --resource-group mon-rg \
  --vnet-name mon-vnet --network-security-group mon-nsg
Retour au module

Sur cette page

  • 🎯 Objectifs
  • 📖 Contexte
  • 📋 Énoncé
  • 🧭 Déroulement de l'exercice
  • Tâche 1 : Créer le VNet et ses sous-réseaux
  • Tâche 2 : Créer les Network Security Groups
  • Tâche 3 : Associer les NSG aux sous-réseaux
  • Tâche 4 : Tester les règles NSG
  • Tâche 5 : Nettoyer
  • ✅ Vérification du résultat
  • 💡 À retenir
  • ✨ Solution Complète