Vous pouvez utiliser un groupe de sécurité réseau pour filtrer le trafic réseau sortant et entrant respectivement à destination et en provenance de ressources Azure dans un réseau virtuel Azure.
Les groupes de sécurité réseau contiennent des règles de sécurité qui filtrent le trafic réseau par adresse IP, port et protocole. Quand un groupe de sécurité réseau est associé à un sous-réseau, des règles de sécurité sont appliquées aux ressources déployées dans ce sous-réseau.
Dans ce tutoriel, vous allez apprendre à :
- Créer un groupe de sécurité réseau et les règles associées
- Créer des groupes de sécurité d’application
- Créer un réseau virtuel et associer un groupe de sécurité réseau à un sous-réseau
- Déployer des machines virtuelles et associer leurs interfaces réseau aux groupes de sécurité d’application
Prérequis
Azure Cloud Shell
Azure héberge Azure Cloud Shell, un environnement d’interpréteur de commandes interactif que vous pouvez utiliser dans votre navigateur. Vous pouvez utiliser Bash ou PowerShell avec Cloud Shell pour utiliser les services Azure. Vous pouvez utiliser les commandes préinstallées Cloud Shell pour exécuter le code de cet article sans avoir à installer quoi que ce soit dans votre environnement local.
Pour démarrer Azure Cloud Shell :
| Choix |
Exemple/Lien |
| Sélectionnez Essayer en haut à droite d’un bloc de code ou de commande. Cette action n’a pas pour effet de copier automatiquement le code ni la commande dans Cloud Shell. |
|
| Accédez à https://shell.azure.com ou sélectionnez le bouton Lancer Cloud Shell pour ouvrir Cloud Shell dans votre navigateur. |
|
| Sélectionnez le bouton Cloud Shell dans la barre de menus en haut à droite du portail Azure. |
|
Pour utiliser Azure Cloud Shell, procédez comme suit :
Démarrez Cloud Shell.
Sélectionnez le bouton Copier sur un bloc de code (ou un bloc de commande) pour copier le code ou la commande.
Collez le code ou la commande dans la session Cloud Shell en sélectionnant Ctrl+Maj+V (sur Windows et Linux) ou Cmd+Maj+V (sur macOS).
Sélectionnez Entrée pour exécuter le code ou la commande.
Si vous choisissez d’installer et d’utiliser PowerShell en local, vous devez exécuter le module Azure PowerShell version 1.0.0 ou ultérieure pour les besoins de cet article. Exécutez Get-Module -ListAvailable Az pour rechercher la version installée. Si vous devez effectuer une mise à niveau, consultez Installer le module Azure PowerShell. Si vous exécutez PowerShell en local, vous devez également exécuter Connect-AzAccount pour créer une connexion avec Azure.
Si vous ne disposez pas d’un compte Azure, créez-en un gratuitement avant de commencer.
Utilisez l’environnement Bash dans Azure Cloud Shell. Pour obtenir plus d’informations, consultez Démarrage d’Azure Cloud Shell.
Si vous préférez exécuter les commandes de référence de l’interface de ligne de commande localement, installez l’interface Azure CLI. Si vous exécutez sur Windows ou macOS, envisagez d’exécuter Azure CLI dans un conteneur Docker. Pour plus d’informations, consultez Guide pratique pour exécuter Azure CLI dans un conteneur Docker.
Si vous utilisez une installation locale, connectez-vous à Azure CLI à l’aide de la commande az login. Pour finir le processus d’authentification, suivez les étapes affichées dans votre terminal. Pour obtenir d’autres options de connexion, consultez S’authentifier auprès d’Azure à l’aide d’Azure CLI.
Quand vous y êtes invité, installez l’extension Azure CLI à la première utilisation. Pour plus d’informations sur les extensions, consultez Utiliser et gérer des extensions avec Azure CLI.
Exécutez az version pour rechercher la version et les bibliothèques dépendantes installées. Pour effectuer une mise à niveau vers la dernière version, exécutez az upgrade.
- Cet article nécessite la version 2.0.28 ou ultérieure d’Azure CLI. Si vous utilisez Azure Cloud Shell, la version la plus récente est déjà installée.
La procédure suivante crée un réseau virtuel avec un sous-réseau ressource.
Dans le portail, recherchez et sélectionnez Réseaux virtuels.
Dans la page Réseaux virtuels, sélectionnez + Créer.
Sous l’onglet Général de la page Créer un réseau virtuel, entrez ou sélectionnez les informations suivantes :
| Paramètre |
Valeur |
|
Détails du projet |
|
| Abonnement |
Sélectionnez votre abonnement. |
| groupe de ressources |
Sélectionnez Créer nouveau.
Entrez test-rg dans Nom.
Sélectionnez OK. |
|
Détails de l’instance |
|
| Nom |
Entrez vnet-1. |
| Région |
Sélectionnez USA Est. |
Sélectionnez Suivant pour passer à l’onglet Sécurité.
Sélectionnez Suivant pour passer à l’onglet Adresses IP.
Dans la zone Espace d’adressage sous Sous-réseaux, sélectionnez le sous-réseau par défaut.
Sur la volet Modifier un sous-réseau, saisissez ou sélectionnez les informations suivantes :
| Paramètre |
Valeur |
|
Détails du sous-réseau |
|
| Modèle de sous-réseau |
Conservez la valeur Par défaut. |
| Nom |
Entrez subnet-1. |
| Adresse de démarrage |
Laissez la valeur par défaut sur 10.0.0.0. |
| Taille du sous-réseau |
Conservez la valeur par défaut /24 (256 adresses). |
Sélectionnez Enregistrer.
Sélectionnez Vérifier + créer au bas de l’écran. Une fois la validation réussie, sélectionnez Créer.
Tout d’abord, créez un groupe de ressources pour toutes les ressources créées dans cet article avec New-AzResourceGroup. L’exemple suivant crée un groupe de ressources à l’emplacement westus2 :
$rg = @{
ResourceGroupName = "test-rg"
Location = "westus2"
}
New-AzResourceGroup @rg
Créez un réseau virtuel avec New-AzVirtualNetwork. L’exemple suivant crée un réseau virtuel nommévnet-1 :
$vnet = @{
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "vnet-1"
AddressPrefix = "10.0.0.0/16"
}
$virtualNetwork = New-AzVirtualNetwork @vnet
Créez une configuration de sous-réseau avec New-AzVirtualNetworkSubnetConfig, puis écrivez la configuration du sous-réseau dans le réseau virtuel avec Set-AzVirtualNetwork. L’exemple suivant ajoute un sous-réseau nommé subnet-1 au réseau virtuel et l’associe au groupe de sécurité réseau nsg-1 :
$subnet = @{
Name = "subnet-1"
VirtualNetwork = $virtualNetwork
AddressPrefix = "10.0.0.0/24"
}
Add-AzVirtualNetworkSubnetConfig @subnet
$virtualNetwork | Set-AzVirtualNetwork
Tout d’abord, créez un groupe de ressources pour toutes les ressources créées dans cet article avec az group create. L’exemple suivant crée un groupe de ressources à l’emplacement westus2 :
az group create \
--name test-rg \
--location westus2
Créez un réseau virtuel avec la commande az network vnet create. L’exemple suivant crée un réseau virtuel nommévnet-1 :
az network vnet create \
--name vnet-1 \
--resource-group test-rg \
--address-prefixes 10.0.0.0/16
Ajoutez un sous-réseau au réseau virtuel avec la commande az network vnet subnet create. L’exemple suivant ajoute un sous-réseau nommé subnet-1 au réseau virtuel et l’associe au groupe de sécurité réseau nsg-1 :
az network vnet subnet create \
--vnet-name vnet-1 \
--resource-group test-rg \
--name subnet-1 \
--address-prefix 10.0.0.0/24
Créer des groupes de sécurité d’application
Un groupe de sécurité d’application vous permet de regrouper des serveurs dont les fonctions sont similaires, comme des serveurs Web.
Dans la zone de recherche située en haut du portail, entrez Groupe de sécurité application. Dans les résultats de la recherche, sélectionnez Groupes de sécurité d’application.
Sélectionnez + Créer.
Dans Créer un groupe de sécurité d’application, sous l’onglet De base, entrez ou sélectionnez les informations suivantes :
| Paramètre |
Valeur |
|
Détails du projet |
|
| Abonnement |
Sélectionnez votre abonnement. |
| groupe de ressources |
Sélectionnez test-rg. |
|
Détails de l’instance |
|
| Nom |
Entrez asg-web. |
| Région |
Sélectionnez USA Ouest 2. |
Sélectionnez Revoir + créer.
Sélectionnez + Créer.
Répétez les étapes précédentes en spécifiant les valeurs suivantes :
| Paramètre |
Valeur |
|
Détails du projet |
|
| Abonnement |
Sélectionnez votre abonnement. |
| groupe de ressources |
Sélectionnez test-rg. |
|
Détails de l’instance |
|
| Nom |
Entrez asg-mgmt. |
| Région |
Sélectionnez USA Ouest 2. |
Sélectionnez Revoir + créer.
Sélectionnez Create (Créer).
Créez un groupe de sécurité d’application avec New-AzApplicationSecurityGroup. Un groupe de sécurité d’application vous permet de regrouper des serveurs avec des exigences de filtrage de port similaires. L’exemple suivant crée deux groupes de sécurité d’application.
$web = @{
ResourceGroupName = "test-rg"
Name = "asg-web"
Location = "westus2"
}
$webAsg = New-AzApplicationSecurityGroup @web
$mgmt = @{
ResourceGroupName = "test-rg"
Name = "asg-mgmt"
Location = "westus2"
}
$mgmtAsg = New-AzApplicationSecurityGroup @mgmt
Créez un groupe de sécurité d’application avec la commande az network asg create. Un groupe de sécurité d’application vous permet de regrouper des serveurs avec des exigences de filtrage de port similaires. L’exemple suivant crée deux groupes de sécurité d’application.
az network asg create \
--resource-group test-rg \
--name asg-web \
--location westus2
az network asg create \
--resource-group test-rg \
--name asg-mgmt \
--location westus2
Créer un groupe de sécurité réseau
Un groupe de sécurité réseau (NSG) sécurise le trafic réseau dans votre réseau virtuel.
Dans la zone de recherche située en haut du portail, entrez Groupe de sécurité réseau. Dans les résultats de la recherche, sélectionnez Groupe de sécurité réseau.
Remarque
Dans les résultats de recherche pour Groupes de sécurité réseau, vous pouvez voir Groupes de sécurité réseau (classique). Sélectionnez Groupes de sécurité réseau.
Sélectionnez + Créer.
Dans Créer un groupe de sécurité réseau, sous l’onglet De base, entrez ou sélectionnez les informations suivantes :
| Paramètre |
Valeur |
|
Détails du projet |
|
| Abonnement |
Sélectionnez votre abonnement. |
| groupe de ressources |
Sélectionnez test-rg. |
|
Détails de l’instance |
|
| Nom |
Entrez nsg-1. |
| Emplacement |
Sélectionnez USA Ouest 2. |
Sélectionnez Revoir + créer.
Sélectionnez Create (Créer).
Créez un groupe de sécurité réseau avec New-AzNetworkSecurityGroup. L’exemple suivant crée un groupe de sécurité réseau nommé nsg-1 :
$nsgParams = @{
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "nsg-1"
}
$nsg = New-AzNetworkSecurityGroup @nsgParams
Créez un groupe de sécurité réseau avec la commande az network nsg create. L’exemple suivant crée un groupe de sécurité réseau nommé nsg-1 :
# Create a network security group
az network nsg create \
--resource-group test-rg \
--name nsg-1
Associer le groupe de sécurité réseau au sous-réseau
Dans cette section, vous allez associer le groupe de sécurité réseau au sous-réseau du réseau virtuel que vous avez créé.
Dans la zone de recherche située en haut du portail, entrez Groupe de sécurité réseau. Dans les résultats de la recherche, sélectionnez Groupe de sécurité réseau.
Sélectionnez nsg-1.
Dans la section Paramètres de nsg-1, sélectionnez Sous-réseaux.
Dans la page Sous-réseaux, sélectionnez + Associer :
Sous Associer un sous-réseau, pour Réseau virtuel, sélectionnez vnet-1 (test-rg).
Pour Sous-réseau, sélectionnez subnet-1, puis OK.
Utilisez la commande Get-AzVirtualNetwork pour récupérer l’objet de réseau virtuel, puis utilisez la commande Set-AzVirtualNetworkSubnetConfig pour associer le groupe de sécurité réseau au sous-réseau. L’exemple suivant récupère l’objet de réseau virtuel et met à jour la configuration du sous-réseau pour associer le groupe de sécurité réseau :
# Retrieve the virtual network
$vnet = Get-AzVirtualNetwork -Name "vnet-1" -ResourceGroupName "test-rg"
# Update the subnet configuration to associate the network security group
$subnetConfigParams = @{
VirtualNetwork = $vnet
Name = "subnet-1"
AddressPrefix = $vnet.Subnets[0].AddressPrefix
NetworkSecurityGroup = Get-AzNetworkSecurityGroup -Name "nsg-1" -ResourceGroupName "test-rg"
}
Set-AzVirtualNetworkSubnetConfig @subnetConfigParams
# Update the virtual network with the new subnet configuration
$vnet | Set-AzVirtualNetwork
Utilisez la commande az network vnet subnet update pour associer le groupe de sécurité réseau au sous-réseau. L’exemple suivant associe le groupe de sécurité réseau nsg-1 au sous-réseau subnet-1 :
az network vnet subnet update \
--resource-group test-rg \
--vnet-name vnet-1 \
--name subnet-1 \
--network-security-group nsg-1
Créer des règles de sécurité
Dans la section Paramètres de nsg-1, sélectionnez Règles de sécurité de trafic entrant.
Dans la page Règles de sécurité de trafic entrant, sélectionnez + Ajouter.
Créez une règle de sécurité qui autorise le port 80 vers le groupe de sécurité d’application asg-web . À la page Ajouter une règle de sécurité de trafic entrant, entrez ou sélectionnez les informations suivantes :
| Paramètre |
Valeur |
| Origine |
Conservez la valeur par défaut Tous. |
| Plages de ports sources |
Conservez la valeur par défaut de (*). |
| Destination |
Sélectionnez Groupe de sécurité d’application. |
| Groupes de sécurité d’application de destination |
Sélectionnez asg-web. |
| Service |
Conservez la valeur par défaut Personnalisé. |
| Plages de ports de destination |
Entrez 80. |
| Protocole |
Sélectionnez TCP. |
| Action |
Conservez la valeur par défaut Autoriser. |
| Priorité |
Conservez la valeur par défaut 100. |
| Nom |
Entrez allow-http-web. |
Sélectionnez Ajouter.
Effectuez les étapes précédentes avec les informations suivantes :
| Paramètre |
Valeur |
| Origine |
Conservez la valeur par défaut Tous. |
| Plages de ports sources |
Conservez la valeur par défaut de (*). |
| Destination |
Sélectionnez Groupe de sécurité d’application. |
| Groupe de sécurité d’application de destination |
Sélectionnez asg-mgmt. |
| Service |
Conservez la valeur par défaut Personnalisé. |
| Plages de ports de destination |
Entrez 8080. |
| Protocole |
Sélectionnez TCP. |
| Action |
Conservez la valeur par défaut Autoriser. |
| Priorité |
Conservez la valeur par défaut 110. |
| Nom |
Entrez allow-8080-mgmt. |
Sélectionnez Ajouter.
Créez une règle de sécurité avec New-AzNetworkSecurityRuleConfig. L’exemple suivant crée une règle qui autorise le trafic entrant depuis Internet vers le groupe de sécurité d’application asg-web sur le port 80 :
$webAsgParams = @{
Name = "asg-web"
ResourceGroupName = "test-rg"
}
$webAsg = Get-AzApplicationSecurityGroup @webAsgParams
$webRuleParams = @{
Name = "Allow-HTTP-Web"
Access = "Allow"
Protocol = "Tcp"
Direction = "Inbound"
Priority = 100
SourceAddressPrefix = "Internet"
SourcePortRange = "*"
DestinationApplicationSecurityGroupId = $webAsg.id
DestinationPortRange = 80
}
$webRule = New-AzNetworkSecurityRuleConfig @webRuleParams
L’exemple suivant crée une règle qui autorise le trafic entrant depuis Internet vers le groupe de sécurité d’application asg-mgmt sur le port 8080 :
$mgmtAsgParams = @{
Name = "asg-mgmt"
ResourceGroupName = "test-rg"
}
$mgmtAsg = Get-AzApplicationSecurityGroup @mgmtAsgParams
$mgmtRuleParams = @{
Name = "Allow-8080-Mgmt"
Access = "Allow"
Protocol = "Tcp"
Direction = "Inbound"
Priority = 110
SourceAddressPrefix = "Internet"
SourcePortRange = "*"
DestinationApplicationSecurityGroupId = $mgmtAsg.id
DestinationPortRange = 8080
}
$mgmtRule = New-AzNetworkSecurityRuleConfig @mgmtRuleParams
Utilisez la commande Get-AzNetworkSecurityGroup pour récupérer le groupe de sécurité réseau existant, puis ajoutez les nouvelles règles avec l’opérateur +=. Enfin, utilisez la commande Set-AzNetworkSecurityGroup pour mettre à jour le groupe de sécurité réseau :
# Retrieve the existing network security group
$nsg = Get-AzNetworkSecurityGroup -Name "nsg-1" -ResourceGroupName "test-rg"
# Add the new rules to the security group
$nsg.SecurityRules += $webRule
$nsg.SecurityRules += $mgmtRule
# Update the network security group with the new rules
Set-AzNetworkSecurityGroup -NetworkSecurityGroup $nsg
Créez une règle de sécurité avec az network nsg rule create. L’exemple suivant crée une règle qui autorise le trafic entrant depuis Internet vers le groupe de sécurité d’application asg-web sur le port 80 :
az network nsg rule create \
--resource-group test-rg \
--nsg-name nsg-1 \
--name Allow-HTTP-Web \
--access Allow \
--protocol Tcp \
--direction Inbound \
--priority 100 \
--source-address-prefix Internet \
--source-port-range "*" \
--destination-asgs "asg-web" \
--destination-port-range 80
L’exemple suivant crée une règle qui autorise le trafic entrant à partir d’Internet vers le groupe de sécurité d’application asg-mgmt sur le port 8080 :
az network nsg rule create \
--resource-group test-rg \
--nsg-name nsg-1 \
--name Allow-8080-Mgmt \
--access Allow \
--protocol Tcp \
--direction Inbound \
--priority 110 \
--source-address-prefix Internet \
--source-port-range "*" \
--destination-asgs "asg-mgmt" \
--destination-port-range 8080
Créer des machines virtuelles
Créez deux machines virtuelles dans le réseau virtuel.
Dans le portail, recherchez et sélectionnez Machines virtuelles.
Dans les machines virtuelles, sélectionnez + Créer, puis Machine virtuelle.
Dans Créer une machine virtuelle, entrez ou sélectionnez les informations suivantes sous l’onglet Informations de base :
| Paramètre |
Valeur |
|
Détails du projet |
|
| Abonnement |
Sélectionnez votre abonnement. |
| groupe de ressources |
Sélectionnez test-rg. |
|
Détails de l’instance |
|
| Nom de la machine virtuelle |
Entrez vm-web. |
| Région |
Sélectionnez (USA) USA Ouest 2. |
| Options de disponibilité |
Conservez la valeur par défaut Aucune redondance d’infrastructure requise. |
| Type de sécurité |
Sélectionnez Standard. |
| Image |
Sélectionnez Ubuntu Server 24.04 LTS – x64 Gen2. |
| Instance Azure Spot |
Conservez la valeur par défaut (case non cochée). |
| Taille |
Sélectionnez une taille. |
|
Compte administrateur |
|
| Type d’authentification |
sélectionnez Clé publique SSH. |
| Nom d’utilisateur |
Saisissez azureuser. |
| Source de la clé publique SSH |
Sélectionnez Générer une nouvelle paire de clés. |
| Nom de la paire de clés |
Entrez vm-web-key. |
|
Règles des ports d’entrée |
|
| Sélectionner des ports d’entrée |
Sélectionnez Aucun. |
Sélectionnez Suivant : Disques, puis Suivant : Réseaux.
Sous l’onglet Mise en réseau, entrez ou sélectionnez les informations suivantes :
| Paramètre |
Valeur |
|
Interface réseau |
|
| Réseau virtuel |
Sélectionnez vnet-1. |
| Subnet |
Sélectionnez subnet-1 (10.0.0.0/24). |
| Adresse IP publique |
Conservez la valeur par défaut indiquant une nouvelle IP publique. |
| Groupe de sécurité réseau de la carte réseau |
Sélectionnez Aucun. |
Sélectionnez l’onglet Vérifier + créer, ou sélectionnez le bouton bleu Vérifier + créer situé au bas de la page.
Sélectionnez Create (Créer).
Lorsque vous êtes invité à générer une nouvelle paire de clés, sélectionnez Télécharger la clé privée et créer une ressource. La clé privée est téléchargée sur votre ordinateur local. Le déploiement de la machine virtuelle peut prendre quelques minutes.
Répétez les étapes précédentes pour créer une deuxième machine virtuelle nommée vm-mgmt avec nom de paire de clés vm-mgmt-key.
Avant de créer les machines virtuelles, récupérez l’objet de réseau virtuel avec le sous-réseau à l’aide de la commande Get-AzVirtualNetwork :
$virtualNetworkParams = @{
Name = "vnet-1"
ResourceGroupName = "test-rg"
}
$virtualNetwork = Get-AzVirtualNetwork @virtualNetworkParams
Créez une adresse IP publique pour chaque machine virtuelle avec New-AzPublicIpAddress :
$publicIpWebParams = @{
AllocationMethod = "Static"
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "public-ip-vm-web"
}
$publicIpWeb = New-AzPublicIpAddress @publicIpWebParams
$publicIpMgmtParams = @{
AllocationMethod = "Static"
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "public-ip-vm-mgmt"
}
$publicIpMgmt = New-AzPublicIpAddress @publicIpMgmtParams
Créez deux interfaces réseau avec New-AzNetworkInterfaceet attribuez une adresse IP publique à l’interface réseau. L’exemple suivant crée une interface réseau, associe l’adresse IP publique public-ip-vm-web à celle-ci.
$webNicParams = @{
Location = "westus2"
Name = "vm-web-nic"
ResourceGroupName = "test-rg"
SubnetId = $virtualNetwork.Subnets[0].Id
PublicIpAddressId = $publicIpWeb.Id
}
$webNic = New-AzNetworkInterface @webNicParams
L’exemple suivant crée une interface réseau, associe l’adresse IP publique public-ip-mgmt à celle-ci.
$mgmtNicParams = @{
Location = "westus2"
Name = "vm-mgmt-nic"
ResourceGroupName = "test-rg"
SubnetId = $virtualNetwork.Subnets[0].Id
PublicIpAddressId = $publicIpMgmt.Id
}
$mgmtNic = New-AzNetworkInterface @mgmtNicParams
Créez deux machines virtuelles dans le réseau virtuel pour pouvoir valider le filtrage du trafic à une étape ultérieure.
Générez des clés SSH dans Azure avec New-AzSshKey. L’exemple suivant crée des ressources de clé SSH pour chaque machine virtuelle :
# Create SSH key for vm-web
$webSshKeyParams = @{
ResourceGroupName = "test-rg"
Name = "vm-web-key"
}
New-AzSshKey @webSshKeyParams
# Create SSH key for vm-mgmt
$mgmtSshKeyParams = @{
ResourceGroupName = "test-rg"
Name = "vm-mgmt-key"
}
New-AzSshKey @mgmtSshKeyParams
Créez une configuration de machine virtuelle avec New-AzVMConfig, puis créez la machine virtuelle avec New-AzVM. L’exemple suivant crée une machine virtuelle qui sert de serveur web. L’option -AsJob crée la machine virtuelle en arrière-plan. Vous pouvez donc passer à l’étape suivante :
# Get the SSH public key
$sshKey = Get-AzSshKey -Name "vm-web-key" -ResourceGroupName "test-rg"
$webVmConfigParams = @{
VMName = "vm-web"
VMSize = "Standard_DS1_V2"
}
$vmImageParams = @{
PublisherName = "Canonical"
Offer = "ubuntu-24_04-lts"
Skus = "server"
Version = "latest"
}
$webVmConfig = New-AzVMConfig @webVmConfigParams | `
Set-AzVMOperatingSystem -Linux -ComputerName "vm-web" -Credential (New-Object System.Management.Automation.PSCredential("azureuser", (ConvertTo-SecureString "DummyP@ssw0rd" -AsPlainText -Force))) -DisablePasswordAuthentication | `
Set-AzVMSourceImage @vmImageParams | `
Add-AzVMNetworkInterface -Id $webNic.Id | `
Set-AzVMOSDisk -CreateOption FromImage | `
Set-AzVMBootDiagnostic -Disable | `
Add-AzVMSshPublicKey -KeyData $sshKey.publicKey -Path "/home/azureuser/.ssh/authorized_keys"
$webVmParams = @{
ResourceGroupName = "test-rg"
Location = "westus2"
VM = $webVmConfig
}
New-AzVM @webVmParams -AsJob
Créez une machine virtuelle comme un serveur d’administration :
# Get the SSH public key
$sshKey = Get-AzSshKey -Name "vm-mgmt-key" -ResourceGroupName "test-rg"
$mgmtVmConfigParams = @{
VMName = "vm-mgmt"
VMSize = "Standard_DS1_V2"
}
$vmImageParams = @{
PublisherName = "Canonical"
Offer = "ubuntu-24_04-lts"
Skus = "server"
Version = "latest"
}
$mgmtVmConfig = New-AzVMConfig @mgmtVmConfigParams | `
Set-AzVMOperatingSystem -Linux -ComputerName "vm-mgmt" -Credential (New-Object System.Management.Automation.PSCredential("azureuser", (ConvertTo-SecureString "DummyP@ssw0rd" -AsPlainText -Force))) -DisablePasswordAuthentication | `
Set-AzVMSourceImage @vmImageParams | `
Add-AzVMNetworkInterface -Id $mgmtNic.Id | `
Set-AzVMOSDisk -CreateOption FromImage | `
Set-AzVMBootDiagnostic -Disable | `
Add-AzVMSshPublicKey -KeyData $sshKey.publicKey -Path "/home/azureuser/.ssh/authorized_keys"
$mgmtVmParams = @{
ResourceGroupName = "test-rg"
Location = "westus2"
VM = $mgmtVmConfig
}
New-AzVM @mgmtVmParams
La création de la machine virtuelle prend quelques minutes. Ne passez pas à l’étape suivante avant qu’Azure ait terminé la création de la machine virtuelle.
Créez deux machines virtuelles dans le réseau virtuel pour pouvoir valider le filtrage du trafic à une étape ultérieure.
Créez une machine virtuelle avec la commande az vm create. L’exemple suivant crée une machine virtuelle qui sert de serveur web. L’option --nsg "" est spécifiée pour empêcher la création par Azure d’un groupe de sécurité réseau par défaut pour l’interface réseau créée par Azure lorsqu’il crée la machine virtuelle. Le paramètre --generate-ssh-keys fait en sorte que le CLI recherche une clé ssh disponible dans ~/.ssh. Si une clé est trouvée, cette clé est utilisée. Si ce n’est pas le cas, l’un est généré et stocké dans ~/.ssh:
az vm create \
--resource-group test-rg \
--name vm-web \
--image Ubuntu2404 \
--vnet-name vnet-1 \
--subnet subnet-1 \
--nsg "" \
--admin-username azureuser \
--generate-ssh-keys
La création de la machine virtuelle ne nécessite que quelques minutes. Une fois la machine virtuelle créée, une sortie similaire à l’exemple suivant est renvoyée :
{
"fqdns": "",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test-rg/providers/Microsoft.Compute/virtualMachines/vm-web",
"location": "westus2",
"macAddress": "00-0D-3A-23-9A-49",
"powerState": "VM running",
"privateIpAddress": "10.0.0.4",
"publicIpAddress": "203.0.113.24",
"resourceGroup": "test-rg"
}
Créez une machine virtuelle avec la commande az vm create. L’exemple suivant crée une machine virtuelle qui sert de serveur d’administration :
az vm create \
--resource-group test-rg \
--name vm-mgmt \
--image Ubuntu2404 \
--vnet-name vnet-1 \
--subnet subnet-1 \
--nsg "" \
--admin-username azureuser \
--generate-ssh-keys
La création de la machine virtuelle ne nécessite que quelques minutes. Ne passez pas à l’étape suivante avant qu’Azure ait terminé la création de la machine virtuelle.
Associer des interfaces réseau à un groupe de sécurité d’application
Quand vous avez créé les machines virtuelles, Azure a créé une interface réseau pour chacune d’elles et l’a attachée à celle-ci.
Ajoutez l’interface réseau de chaque machine virtuelle à l’un des groupes de sécurité d’application que vous avez créés précédemment :
Dans la zone de recherche située en haut du portail, entrez Machine virtuelle. Sélectionnez Machines virtuelles dans les résultats de la recherche, puis vm-web.
Sélectionnez Groupes de sécurité d’application dans la section Mise en réseau de vm-web.
Sélectionnez Ajouter des groupes de sécurité d’application, puis sous l’onglet Ajouter des groupes de sécurité d’application, choisissez asg-web. Enfin, sélectionnez Ajouter.
Répétez les étapes précédentes pour vm-mgmt, en sélectionnant asg-mgmt sous l’onglet Ajouter des groupes de sécurité d’application.
Utilisez la commande Get-AzNetworkInterface pour récupérer l’interface réseau de la machine virtuelle, puis utilisez la commande Get-AzApplicationSecurityGroup pour récupérer le groupe de sécurité d’application. Enfin, utilisez la commande Set-AzNetworkInterface pour associer le groupe de sécurité d’application à l’interface réseau. L’exemple suivant associe le groupe de sécurité d’application asg-web à l’interface réseau vm-web-nic :
$params1 = @{
Name = "vm-web-nic"
ResourceGroupName = "test-rg"
}
$nic = Get-AzNetworkInterface @params1
$params2 = @{
Name = "asg-web"
ResourceGroupName = "test-rg"
}
$asg = Get-AzApplicationSecurityGroup @params2
$nic.IpConfigurations[0].ApplicationSecurityGroups = @($asg)
$params3 = @{
NetworkInterface = $nic
}
Set-AzNetworkInterface @params3
Répétez la commande pour associer le groupe de sécurité d’application asg-mgmt à l’interface réseau vm-mgmt-nic .
$params1 = @{
Name = "vm-mgmt-nic"
ResourceGroupName = "test-rg"
}
$nic = Get-AzNetworkInterface @params1
$params2 = @{
Name = "asg-mgmt"
ResourceGroupName = "test-rg"
}
$asg = Get-AzApplicationSecurityGroup @params2
$nic.IpConfigurations[0].ApplicationSecurityGroups = @($asg)
$params3 = @{
NetworkInterface = $nic
}
Set-AzNetworkInterface @params3
Utilisez la commande az network nic update pour associer l’interface réseau au groupe de sécurité d’application. L’exemple suivant associe le groupe de sécurité d’application asg-web à l’interface réseau vm-web-nic :
# Retrieve the network interface name associated with the virtual machine
nic_name=$(az vm show --resource-group test-rg --name vm-web --query 'networkProfile.networkInterfaces[0].id' -o tsv | xargs basename)
# Associate the application security group with the network interface
az network nic ip-config update \
--name ipconfigvm-web \
--nic-name $nic_name \
--resource-group test-rg \
--application-security-groups asg-web
Répétez la commande pour associer le groupe de sécurité d’application asg-mgmt à l’interface réseau vm-mgmt-nic .
# Retrieve the network interface name associated with the virtual machine
nic_name=$(az vm show --resource-group test-rg --name vm-mgmt --query 'networkProfile.networkInterfaces[0].id' -o tsv | xargs basename)
# Associate the application security group with the network interface
az network nic ip-config update \
--name ipconfigvm-mgmt \
--nic-name $nic_name \
--resource-group test-rg \
--application-security-groups asg-mgmt
Tester les filtres de trafic
Dans la zone de recherche située en haut du portail, entrez Machine virtuelle. Sélectionnez Machines virtuelles dans les résultats de la recherche.
Sélectionnez vm-web.
Sélectionnez Exécuter la commande dans la section Opérations .
Sélectionnez RunShellScript.
Dans le volet Exécuter un script de commande , entrez les commandes suivantes :
sudo apt-get update -y
sudo apt-get install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx
Sélectionnez Exécuter. Attendez que le script se termine correctement.
Dans la page Vue d’ensemble de vm-web, notez l’adresse IP publique de votre machine virtuelle.
Pour confirmer que vous pouvez accéder au serveur web vm-web à partir d’Internet sur le port 80, ouvrez un navigateur Internet sur votre ordinateur et accédez à http://<public-ip-address-from-previous-step>.
Vous voyez la page nginx par défaut, car le trafic entrant depuis Internet vers le groupe de sécurité d’application asg-web est autorisé via le port 80.
L’interface réseau attachée à vm-web est associée au groupe de sécurité d’application asg-web et autorise la connexion.
Essayez d’accéder à vm-web sur le port 443 en vous rendant sur https://<public-ip-address-vm-web> dans votre navigateur. La connexion échoue ou expire, car la règle de sécurité pour le site asg-web n’autorise pas le port 443 entrant à partir d’Internet.
Configurez maintenant vm-mgmt avec nginx sur le port 8080. Sélectionnez vm-mgmt dans la page Machines virtuelles .
Sélectionnez Exécuter la commande dans la section Opérations .
Sélectionnez RunShellScript.
Dans le volet Exécuter le script de commande , entrez les commandes suivantes pour installer nginx sur le port 8080 :
sudo apt-get update -y
sudo apt-get install -y nginx
# Configure nginx to listen on port 8080
sudo tee /etc/nginx/sites-available/default > /dev/null <<EOF
server {
listen 8080 default_server;
listen [::]:8080 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files \$uri \$uri/ =404;
}
}
EOF
sudo systemctl restart nginx
Sélectionnez Exécuter. Attendez que le script se termine correctement.
Dans la page Vue d’ensemble de vm-mgmt, notez l’adresse IP publique de votre machine virtuelle.
Pour confirmer que vous pouvez accéder au serveur web vm-mgmt à partir d’Internet sur le port 8080, ouvrez un navigateur Internet sur votre ordinateur et accédez à http://<public-ip-address-vm-mgmt>:8080.
Vous voyez la page nginx par défaut, car le trafic entrant depuis Internet vers le groupe de sécurité d’application asg-mgmt est autorisé via le port 8080.
Essayez d’accéder à vm-mgmt sur le port 80 en entrant http://<public-ip-address-vm-mgmt> dans votre navigateur. La connexion échoue ou expire, car aucune règle de sécurité n’autorise le port 80 entrant vers le groupe de sécurité d’application asg-mgmt .
L’interface réseau attachée à vm-web est associée au groupe de sécurité d’application asg-web et autorise la connexion.
Installez nginx sur vm-web à l’aide d’Invoke-AzVMRunCommand :
$webInstallParams = @{
ResourceGroupName = "test-rg"
VMName = "vm-web"
CommandId = "RunShellScript"
ScriptString = @"
sudo apt-get update -y
sudo apt-get install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx
"@
}
Invoke-AzVMRunCommand @webInstallParams
L’exécution de la commande peut prendre quelques instants. Une fois l’opération terminée, testez l’accès web sur vm-web.
Obtenez l’adresse IP publique de vm-web :
$webIPParams = @{
Name = "public-ip-vm-web"
ResourceGroupName = "test-rg"
}
$webIP = Get-AzPublicIpAddress @webIPParams
Write-Host "vm-web IP: $($webIP.IpAddress)"
Pour confirmer que vous pouvez accéder au serveur web vm-web à partir d’Internet sur le port 80, ouvrez un navigateur Internet sur votre ordinateur et accédez à http://<vm-web-ip-address>.
Vous voyez la page nginx par défaut, car le trafic entrant depuis Internet vers le groupe de sécurité d’application asg-web est autorisé via le port 80. L’interface réseau attachée à la machine virtuelle vm-web se trouve dans ce groupe.
Essayez d’accéder à vm-web sur le port 443 via https://<vm-web-ip-address> votre navigateur. La connexion échoue ou expire, car la règle de sécurité pour le site asg-web n’autorise pas le port 443 entrant à partir d’Internet.
Installez maintenant nginx sur le port 8080 sur vm-mgmt :
$mgmtInstallParams = @{
ResourceGroupName = "test-rg"
VMName = "vm-mgmt"
CommandId = "RunShellScript"
ScriptString = @"
sudo apt-get update -y
sudo apt-get install -y nginx
# Configure nginx to listen on port 8080
sudo tee /etc/nginx/sites-available/default > /dev/null <<'EOF'
server {
listen 8080 default_server;
listen [::]:8080 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files \$uri \$uri/ =404;
}
}
EOF
sudo systemctl restart nginx
"@
}
Invoke-AzVMRunCommand @mgmtInstallParams
Obtenez l’adresse IP publique de vm-mgmt :
$mgmtIPParams = @{
Name = "public-ip-vm-mgmt"
ResourceGroupName = "test-rg"
}
$mgmtIP = Get-AzPublicIpAddress @mgmtIPParams
Write-Host "vm-mgmt IP: $($mgmtIP.IpAddress)"
Pour confirmer que vous pouvez accéder au serveur web vm-mgmt à partir d’Internet sur le port 8080, ouvrez un navigateur Internet sur votre ordinateur et accédez à http://<vm-mgmt-ip-address>:8080.
Vous voyez la page nginx par défaut, car le trafic entrant depuis Internet vers le groupe de sécurité d’application asg-mgmt est autorisé via le port 8080.
Essayez d’accéder à vm-mgmt sur le port 80 en ouvrant http://<vm-mgmt-ip-address> dans votre navigateur. La connexion échoue ou expire, car aucune règle de sécurité n’autorise le port 80 entrant vers le groupe de sécurité d’application asg-mgmt .
Installez nginx sur vm-web à l’aide d’az vm run-command invoke :
az vm run-command invoke \
--resource-group test-rg \
--name vm-web \
--command-id RunShellScript \
--scripts "sudo apt-get update -y && sudo apt-get install -y nginx && sudo systemctl enable nginx && sudo systemctl start nginx"
Obtenez l’adresse IP publique de vm-web :
webIP=$(az vm show --show-details --resource-group test-rg --name vm-web --query publicIps --output tsv)
echo "vm-web IP: $webIP"
Pour confirmer que vous pouvez accéder au serveur web vm-web à partir d’Internet sur le port 80, utilisez curl :
curl http://$webIP
La connexion aboutit, car le groupe de sécurité d’application asg-web, dans lequel se trouve l’interface réseau attachée à la machine virtuelle vm-web, autorise le trafic entrant sur le port 80 à partir d’Internet.
Essayez d’accéder à vm-web sur le port 443 :
curl -k https://$webIP
La connexion échoue ou expire, car la règle de sécurité pour le site asg-web n’autorise pas le port 443 entrant à partir d’Internet.
Installez maintenant nginx sur le port 8080 sur vm-mgmt :
az vm run-command invoke \
--resource-group test-rg \
--name vm-mgmt \
--command-id RunShellScript \
--scripts "sudo apt-get update -y && \
sudo apt-get install -y nginx && \
sudo bash -c 'cat > /etc/nginx/sites-available/default <<EOF
server {
listen 8080 default_server;
listen [::]:8080 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files \\\$uri \\\$uri/ =404;
}
}
EOF' && \
sudo systemctl restart nginx"
Obtenez l’adresse IP publique de vm-mgmt :
mgmtIP=$(az vm show --show-details --resource-group test-rg --name vm-mgmt --query publicIps --output tsv)
echo "vm-mgmt IP: $mgmtIP"
Pour vérifier que vous pouvez accéder au serveur web vm-mgmt à partir d’Internet sur le port 8080, utilisez curl :
curl http://$mgmtIP:8080
La connexion réussit, car le trafic entrant depuis Internet vers le groupe de sécurité d’application asg-mgmt est autorisé via le port 8080.
Essayez d’accéder à vm-mgmt sur le port 80 :
curl http://$mgmtIP
La connexion échoue ou expire, car aucune règle de sécurité n’autorise le port 80 entrant vers le groupe de sécurité d’application asg-mgmt .
Lorsque vous avez terminé d’utiliser les ressources que vous avez créées, vous pouvez supprimer le groupe de ressources et toutes ses ressources.
Depuis le portail Azure, recherchez et sélectionnez Groupes de ressources.
Dans la page Groupes de ressources, sélectionnez le groupe de ressources test-rg.
Dans la page test-rg, sélectionnez Supprimer le groupe de ressources.
Dans Entrer le nom du groupe de ressources pour confirmer la suppression, entrez test-rg, puis sélectionnez Supprimer.
Quand vous n’avez plus besoin d’un groupe de ressources, vous pouvez utiliser Remove-AzResourceGroup pour le supprimer ainsi que toutes les ressources qu’il contient :
$params = @{
Name = "test-rg"
Force = $true
}
Remove-AzResourceGroup @params
Quand vous n’avez plus besoin d’un groupe de ressources, utilisez az group delete pour le supprimer, ainsi que toutes les ressources qu’il contient.
az group delete \
--name test-rg \
--yes \
--no-wait
Étapes suivantes
Dans ce tutoriel, vous allez :
- Vous avez créé un groupe de sécurité réseau, et vous l’avez associé à un sous-réseau de réseau virtuel.
- Création de groupes de sécurité d’application pour le trafic web et de gestion.
- Créez deux machines virtuelles Linux avec l’authentification par clé SSH et associez leurs interfaces réseau aux groupes de sécurité d’application.
- Serveurs web nginx installés sur les deux machines virtuelles avec différentes configurations de port.
- Testé le filtrage réseau du groupe de sécurité d’application en démontrant que vm-web autorise le port 80 (HTTP), mais refuse le port 443, tandis que vm-mgmt autorise le port 8080, mais refuse le port 80 (HTTP).
Pour en savoir plus sur les groupes de sécurité réseau, consultez Vue d’ensemble d’un groupe de sécurité réseau et Gérer un groupe de sécurité réseau.
Azure achemine par défaut le trafic entre les sous-réseaux. À la place, vous pouvez choisir par exemple d’acheminer le trafic entre les sous-réseaux via une machine virtuelle, agissant comme un pare-feu.
Pour apprendre à créer une table de routage, passez au didacticiel suivant.