Skupinu zabezpečení sítě můžete použít k filtrování příchozího a odchozího síťového provozu do a z prostředků Azure ve virtuální síti Azure.
Skupiny zabezpečení sítě obsahují pravidla zabezpečení, která filtrují síťový provoz podle IP adresy, portu a protokolu. Pokud je skupina zabezpečení sítě přidružená k podsíti, pravidla zabezpečení se použijí na prostředky nasazené v této podsíti.
V tomto kurzu se naučíte:
- Vytvoření skupiny zabezpečení sítě a pravidel zabezpečení
- Vytvoření skupin zabezpečení aplikací
- Vytvořte virtuální síť a přidružte skupinu zabezpečení sítě k podsíti
- Nasazení virtuálních počítačů a přidružení jejich síťových rozhraní ke skupinám zabezpečení aplikací
Požadavky
Azure Cloud Shell
Azure hostí interaktivní prostředí Azure Cloud Shell, které můžete používat v prohlížeči. Pro práci se službami Azure můžete v prostředí Cloud Shell použít buď Bash, nebo PowerShell. Předinstalované příkazy Cloud Shellu můžete použít ke spuštění kódu v tomto článku, aniž byste museli instalovat cokoli do místního prostředí.
Spuštění služby Azure Cloud Shell:
| Možnost |
Příklad nebo odkaz |
| Vyberte Vyzkoušet v pravém horním rohu bloku kódu nebo příkazu. Výběrem možnosti Vyzkoušet se kód ani příkaz automaticky nekopíruje do Cloud Shellu. |
|
| Přejděte na adresu https://shell.azure.com nebo výběrem tlačítka Spustit Cloud Shell otevřete Cloud Shell v prohlížeči. |
|
| Zvolte tlačítko Cloud Shell v pruhu nabídky v pravém horním rohu webu Azure Portal. |
|
Použití Azure Cloud Shellu:
Spusťte Cloud Shell.
Výběrem tlačítka Kopírovat v bloku kódu (nebo bloku příkazů) zkopírujte kód nebo příkaz.
Vložte kód nebo příkaz do relace Cloud Shellu tak, že ve Windows a Linuxu vyberete Ctrl+Shift+V nebo v macOS vyberete Cmd+Shift+V.
Stisknutím klávesy Enter spusťte kód nebo příkaz.
Pokud se rozhodnete nainstalovat a používat PowerShell místně, tento článek vyžaduje modul Azure PowerShell verze 1.0.0 nebo novější. Nainstalovanou verzi zjistíte spuštěním příkazu Get-Module -ListAvailable Az. Pokud potřebujete upgrade, přečtěte si téma Instalace modulu Azure PowerShell. Pokud používáte PowerShell místně, musíte také spustit Connect-AzAccount , abyste vytvořili připojení k Azure.
Pokud nemáte účet Azure, vytvořte si bezplatný účet před tím, než začnete.
- Tento článek vyžaduje verzi 2.0.28 nebo novější azure CLI. Pokud používáte Azure Cloud Shell, je už nainstalovaná nejnovější verze.
Následující postup vytvoří virtuální síť s podsítí pro prostředky.
Na portálu vyhledejte a vyberte Virtuální sítě.
Na stránce Virtuální sítě vyberte + Vytvořit.
Na kartě Základy vytvoření virtuální sítě zadejte nebo vyberte následující informace:
| Nastavení |
Hodnota |
|
Podrobnosti projektu |
|
| Předplatné |
Vyberte své předplatné. |
| Skupina prostředků |
Vyberte možnost Vytvořit novou.
Do pole Název zadejte test-rg.
Vyberte OK. |
|
Podrobnosti o instanci |
|
| Název |
Zadejte vnet-1. |
| Oblast |
Vyberte USA – východ 2. |
Výběrem možnosti Další přejděte na kartu Zabezpečení .
Výběrem možnosti Další přejděte na kartu IP adresy.
V poli Adresní prostor pod Podsítě vyberte výchozí podsíť.
V podokně Upravit podsíť zadejte nebo vyberte následující informace:
| Nastavení |
Hodnota |
|
Podrobnosti o podsíti |
|
| Šablona podsítě |
Ponechte výchozí hodnotu výchozí. |
| Název |
Zadejte subnet-1. |
| Počáteční adresa |
Ponechte výchozí hodnotu 10.0.0.0. |
| Velikost podsítě |
Ponechte výchozí hodnotu /24(256 adres). |
Zvolte Uložit.
V dolní části obrazovky vyberte Zkontrolovat a vytvořit . Po úspěšném ověření vyberte Vytvořit.
Nejprve vytvořte skupinu prostředků pro všechny prostředky vytvořené v tomto článku pomocí rutiny New-AzResourceGroup. Následující příklad vytvoří skupinu prostředků ve westus2:
$rg = @{
ResourceGroupName = "test-rg"
Location = "westus2"
}
New-AzResourceGroup @rg
Vytvořte virtuální síť pomocí příkazu New-AzVirtualNetwork. Následující příklad vytvoří virtuální síť s názvem vnet-1:
$vnet = @{
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "vnet-1"
AddressPrefix = "10.0.0.0/16"
}
$virtualNetwork = New-AzVirtualNetwork @vnet
Vytvořte konfiguraci podsítě pomocí rutiny New-AzVirtualNetworkSubnetConfig a pak zapište konfiguraci podsítě do virtuální sítě pomocí rutiny Set-AzVirtualNetwork. Následující příklad přidá podsíť s názvem subnet-1 do virtuální sítě a přidruží k ní skupinu zabezpečení sítě nsg-1 :
$subnet = @{
Name = "subnet-1"
VirtualNetwork = $virtualNetwork
AddressPrefix = "10.0.0.0/24"
}
Add-AzVirtualNetworkSubnetConfig @subnet
$virtualNetwork | Set-AzVirtualNetwork
Nejprve vytvořte skupinu prostředků pro všechny prostředky vytvořené v tomto článku pomocí příkazu az group create. Následující příklad vytvoří skupinu prostředků ve westus2:
az group create \
--name test-rg \
--location westus2
Vytvořte virtuální síť pomocí příkazu az network vnet create. Následující příklad vytvoří virtuální síť s názvem vnet-1:
az network vnet create \
--name vnet-1 \
--resource-group test-rg \
--address-prefixes 10.0.0.0/16
Přidejte podsíť do virtuální sítě pomocí příkazu az network vnet subnet create. Následující příklad přidá podsíť s názvem subnet-1 do virtuální sítě a přidruží k ní skupinu zabezpečení sítě 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
Vytvoření skupin zabezpečení aplikací
Skupina zabezpečení aplikace (ASG) umožňuje seskupovat servery s podobnými funkcemi, jako jsou webové servery.
Do vyhledávacího pole v horní části portálu zadejte skupinu zabezpečení aplikace. Ve výsledcích hledání vyberte skupiny zabezpečení aplikace.
Vyberte + Vytvořit.
Na kartě Základy vytvořte skupinu zabezpečení aplikace, zadejte nebo vyberte tyto informace:
| Nastavení |
Hodnota |
|
Podrobnosti projektu |
|
| Předplatné |
Vyberte své předplatné. |
| Skupina prostředků |
Vyberte test-rg. |
|
Podrobnosti o instanci |
|
| Název |
Zadejte asg-web. |
| Oblast |
Vyberte USA – západ 2. |
Vyberte Zkontrolovat a vytvořit.
Vyberte + Vytvořit.
Opakujte předchozí kroky a zadejte následující hodnoty:
| Nastavení |
Hodnota |
|
Podrobnosti projektu |
|
| Předplatné |
Vyberte své předplatné. |
| Skupina prostředků |
Vyberte test-rg. |
|
Podrobnosti o instanci |
|
| Název |
Zadejte asg-mgmt. |
| Oblast |
Vyberte USA – západ 2. |
Vyberte Zkontrolovat a vytvořit.
Vyberte Vytvořit.
Vytvořte skupinu zabezpečení aplikace pomocí rutiny New-AzApplicationSecurityGroup. Skupina zabezpečení aplikací umožňuje seskupovat servery s podobnými požadavky na filtrování portů. Následující příklad vytvoří dvě skupiny zabezpečení aplikací.
$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
Vytvořte skupinu zabezpečení aplikace pomocí příkazu az network asg create. Skupina zabezpečení aplikací umožňuje seskupovat servery s podobnými požadavky na filtrování portů. Následující příklad vytvoří dvě skupiny zabezpečení aplikací.
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
Vytvoření skupiny zabezpečení sítě
Skupina zabezpečení sítě (NSG) zabezpečuje síťový provoz ve vaší virtuální síti.
Do vyhledávacího pole v horní části portálu zadejte skupinu zabezpečení sítě. Ve výsledcích hledání vyberte skupiny zabezpečení sítě.
Poznámka:
Ve výsledcích hledání pro skupiny zabezpečení sítě se můžou zobrazit skupiny zabezpečení sítě (klasické). Vyberte skupiny zabezpečení sítě.
Vyberte + Vytvořit.
Na kartě Základy vytvořte skupinu zabezpečení sítě, zadejte nebo vyberte tyto informace:
| Nastavení |
Hodnota |
|
Podrobnosti projektu |
|
| Předplatné |
Vyberte své předplatné. |
| Skupina prostředků |
Vyberte test-rg. |
|
Podrobnosti o instanci |
|
| Název |
Zadejte nsg-1. |
| Umístění |
Vyberte USA – západ 2. |
Vyberte Zkontrolovat a vytvořit.
Vyberte Vytvořit.
Vytvořte skupinu zabezpečení sítě pomocí příkazu New-AzNetworkSecurityGroup. Následující příklad vytvoří skupinu zabezpečení sítě s názvem nsg-1:
$nsgParams = @{
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "nsg-1"
}
$nsg = New-AzNetworkSecurityGroup @nsgParams
Vytvořte skupinu zabezpečení sítě pomocí příkazu az network nsg create. Následující příklad vytvoří skupinu zabezpečení sítě s názvem nsg-1:
# Create a network security group
az network nsg create \
--resource-group test-rg \
--name nsg-1
Přidružit skupinu zabezpečení sítě k podsíti
V této části přidružíte skupinu zabezpečení sítě k podsíti virtuální sítě, kterou jste vytvořili dříve.
Do vyhledávacího pole v horní části portálu zadejte skupinu zabezpečení sítě. Ve výsledcích hledání vyberte skupiny zabezpečení sítě.
Vyberte nsg-1.
V části Nastavení nsg-1 vyberte podsítě.
Na stránce Podsítě vyberte + Přidružit:
V části Přidružit podsíť vyberte vnet-1 (test-rg) pro virtuální síť.
Jako podsíť vyberte podsíť 1a pak vyberte OK.
Pomocí rutiny Get-AzVirtualNetwork načtěte objekt virtuální sítě a pak pomocí rutiny Set-AzVirtualNetworkSubnetConfig přidružte skupinu zabezpečení sítě k podsíti. Následující příklad načte objekt virtuální sítě a aktualizuje konfiguraci podsítě pro přidružení skupiny zabezpečení sítě:
# 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
Pomocí příkazu az network vnet subnet update přidružte skupinu zabezpečení sítě k podsíti. Následující příklad přidruží skupinu zabezpečení sítě nsg-1 k podsíti 1:
az network vnet subnet update \
--resource-group test-rg \
--vnet-name vnet-1 \
--name subnet-1 \
--network-security-group nsg-1
Vytvoření pravidel zabezpečení
Vyberte příchozí pravidla zabezpečení z části Nastavení skupiny nsg-1.
Na stránce Příchozí pravidla zabezpečení vyberte + Přidat.
Vytvořte pravidlo zabezpečení, které umožňuje port 80 do skupiny zabezpečení asg-web aplikací. Na stránce Přidání pravidla pro příchozí zabezpečení zadejte nebo vyberte následující informace:
| Nastavení |
Hodnota |
| Zdroj |
Ponechte výchozí hodnotu Any. |
| Rozsahy zdrojových portů |
Ponechte výchozí hodnotu (*). |
| Cíl |
Vyberte skupinu zabezpečení aplikace. |
| Cílové skupiny zabezpečení aplikací |
Vyberte asg-web. |
| Služba |
Ponechte výchozí hodnotu Vlastní. |
| Rozsahy cílových portů |
Zadejte 80. |
| Protokol |
Vyberte TCP. |
| Akce |
Ponechte výchozí možnost Povolit. |
| Priorita |
Ponechte výchozí hodnotu 100. |
| Název |
Zadejte allow-http-web. |
Vyberte Přidat.
Proveďte předchozí kroky s následujícími informacemi:
| Nastavení |
Hodnota |
| Zdroj |
Ponechte výchozí hodnotu Any. |
| Rozsahy zdrojových portů |
Ponechte výchozí hodnotu (*). |
| Cíl |
Vyberte skupinu zabezpečení aplikace. |
| Cílová skupina zabezpečení aplikace |
Vyberte asg-mgmt. |
| Služba |
Ponechte výchozí hodnotu Vlastní. |
| Rozsahy cílových portů |
Zadejte 8080. |
| Protokol |
Vyberte TCP. |
| Akce |
Ponechte výchozí možnost Povolit. |
| Priorita |
Ponechte výchozí hodnotu 110. |
| Název |
Zadejte allow-8080-mgmt. |
Vyberte Přidat.
Vytvořte pravidlo zabezpečení pomocí rutiny New-AzNetworkSecurityRuleConfig. Následující příklad vytvoří pravidlo, které umožňuje příchozí provoz z internetu do aplikační skupiny zabezpečení asg-web přes 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
Následující příklad vytvoří pravidlo, které povoluje příchozí provoz z internetu do skupiny zabezpečení aplikace asg-mgmt přes 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
Pomocí Get-AzNetworkSecurityGroup načtěte existující skupinu zabezpečení sítě a poté přidejte nová pravidla pomocí operátoru +=. Nakonec aktualizujte skupinu zabezpečení sítě pomocí set-AzNetworkSecurityGroup:
# 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
Vytvořte pravidlo zabezpečení pomocí příkazu az network nsg rule create. Následující příklad vytvoří pravidlo, které umožňuje příchozí provoz z internetu do aplikační bezpečnostní skupiny asg-web přes 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
Následující příklad vytvoří pravidlo, které umožňuje příchozí provoz z internetu do skupiny zabezpečení aplikace asg-mgmt přes 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
Vytvoření virtuálních počítačů
Ve virtuální síti vytvořte dva virtuální počítače.
Na portálu vyhledejte a vyberte Virtuální počítače.
Ve virtuálních počítačích vyberte + Vytvořit a pak virtuální počítač.
V části Vytvořit virtuální počítač zadejte nebo vyberte tyto informace na kartě Základy :
| Nastavení |
Hodnota |
|
Podrobnosti projektu |
|
| Předplatné |
Vyberte své předplatné. |
| Skupina prostředků |
Vyberte test-rg. |
|
Podrobnosti o instanci |
|
| Název virtuálního stroje |
Zadejte vm-web. |
| Oblast |
Vyberte (USA) USA – západ 2. |
| Možnosti dostupnosti |
Ponechte výchozí nastavení Není vyžadována redundantní infrastruktura. |
| Typ zabezpečení |
Vyberte položku Standardní. |
| Obrázek |
Vyberte Ubuntu Server 24.04 LTS - x64 Gen2. |
| Spotová instance Azure |
Ponechte výchozí nastavení nezaškrtnuté. |
| Velikost |
Vyberte velikost. |
|
Účet správce |
|
| Typ autentizace |
Vyberte veřejný klíč SSH. |
| Uživatelské jméno |
Zadejte azureuser. |
| Zdroj veřejného klíče SSH |
Vyberte Vygenerovat nový pár klíčů. |
| Název páru klíčů |
Zadejte vm-web-key. |
|
Pravidla portů pro příchozí spojení |
|
| Vyberte příchozí porty |
Vyberte Žádná. |
Vyberte Další: Disky a další : Sítě.
Na kartě Sítě zadejte nebo vyberte následující informace:
| Nastavení |
Hodnota |
|
Síťové rozhraní |
|
| Virtuální síť |
Vyberte vnet-1. |
| Podsíť |
Vyberte podsíť 1 (10.0.0.0/24). |
| Veřejná IP adresa |
Ponechte výchozí hodnotu nové veřejné IP adresy. |
| Skupina zabezpečení sítě NIC |
Vyberte Žádná. |
Vyberte kartu Zkontrolovat a vytvořit nebo vyberte modré tlačítko Zkontrolovat a vytvořit v dolní části stránky.
Vyberte Vytvořit.
Po zobrazení výzvy k vygenerování nového páru klíčů vyberte Stáhnout privátní klíč a vytvořit prostředek. Privátní klíč se stáhne do místního počítače. Nasazení virtuálního počítače může trvat několik minut.
Opakujte předchozí kroky a vytvořte druhý virtuální počítač s názvem vm-mgmt s názvem páru klíčů vm-mgmt-key.
Před vytvořením virtuálních počítačů načtěte objekt virtuální sítě s podsítí pomocí rutiny Get-AzVirtualNetwork:
$virtualNetworkParams = @{
Name = "vnet-1"
ResourceGroupName = "test-rg"
}
$virtualNetwork = Get-AzVirtualNetwork @virtualNetworkParams
Vytvořte veřejnou IP adresu pro každý virtuální počítač pomocí 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
Vytvořte dvě síťová rozhraní pomocí New-AzNetworkInterface a přiřaďte k síťovému rozhraní veřejnou IP adresu. Následující příklad vytvoří síťové rozhraní a přidruží k němu veřejnou IP adresu public-ip-vm-web.
$webNicParams = @{
Location = "westus2"
Name = "vm-web-nic"
ResourceGroupName = "test-rg"
SubnetId = $virtualNetwork.Subnets[0].Id
PublicIpAddressId = $publicIpWeb.Id
}
$webNic = New-AzNetworkInterface @webNicParams
Následující příklad vytvoří síťové rozhraní, přidruží k němu veřejnou IP adresu public-ip-vm-mgmt .
$mgmtNicParams = @{
Location = "westus2"
Name = "vm-mgmt-nic"
ResourceGroupName = "test-rg"
SubnetId = $virtualNetwork.Subnets[0].Id
PublicIpAddressId = $publicIpMgmt.Id
}
$mgmtNic = New-AzNetworkInterface @mgmtNicParams
Vytvořte ve virtuální síti dva virtuální počítače, abyste v pozdějším kroku mohli ověřit filtrování provozu.
Generujte klíče SSH v Azure pomocí New-AzSshKey. Následující příklad vytvoří pro každý virtuální počítač klíčové prostředky SSH:
# 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
Vytvořte konfiguraci virtuálního počítače pomocí rutiny New-AzVMConfig a pak vytvořte virtuální počítač pomocí rutiny New-AzVM. Následující příklad vytvoří virtuální počítač, který slouží jako webový server. Pomocí možnosti -AsJob se virtuální počítač vytvoří na pozadí, takže můžete pokračovat k dalšímu kroku:
# 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
Vytvořte virtuální počítač, který bude sloužit jako server pro správu:
# 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
Vytvoření virtuálního počítače trvá několik minut. Nepokračujte dalším krokem, dokud Azure nedokončí vytváření virtuálního počítače.
Vytvořte ve virtuální síti dva virtuální počítače, abyste v pozdějším kroku mohli ověřit filtrování provozu.
Vytvořte virtuální počítač pomocí příkazu az vm create. Následující příklad vytvoří virtuální počítač, který slouží jako webový server. Tato možnost je zadaná, --nsg "" aby azure nemohla vytvořit výchozí skupinu zabezpečení sítě pro síťové rozhraní, které Azure vytvoří při vytváření virtuálního počítače. Tento --generate-ssh-keys parametr způsobí, že rozhraní příkazového řádku vyhledá dostupný klíč ssh v ~/.sshsouboru . Pokud se najde, použije se tento klíč. Pokud ne, jeden se vygeneruje a uloží v ~/.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
Vytvoření virtuálního počítače trvá několik minut. Po vytvoření virtuálního počítače se vrátí výstup podobný následujícímu příkladu:
{
"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"
}
Vytvořte virtuální počítač pomocí příkazu az vm create. Následující příklad vytvoří virtuální počítač, který slouží jako server pro správu:
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
Vytvoření virtuálního počítače trvá několik minut. Nepokračujte dalším krokem, dokud Azure nedokončí vytváření virtuálního počítače.
Přidružit síťová rozhraní ke skupině zabezpečení aplikací (ASG)
Když jste vytvořili virtuální počítače, Azure pro každý virtuální počítač vytvořil síťové rozhraní a připojil ho k virtuálnímu počítači.
Přidejte síťové rozhraní každého virtuálního počítače do jedné ze skupin zabezpečení aplikací, které jste vytvořili dříve:
Do vyhledávacího pole v horní části portálu zadejte virtuální počítač. Ve výsledcích hledání vyberte Virtuální počítače a pak vyberte vm-web.
Vyberte skupiny zabezpečení aplikací z části Sítě v vm-web.
Vyberte Přidat skupiny zabezpečení aplikace a pak na kartě Přidat skupiny zabezpečení aplikací vyberte asg-web. Nakonec vyberte Přidat.
Opakujte předchozí kroky pro vm-mgmt a vyberte asg-mgmt na kartě Přidat skupiny zabezpečení aplikace.
Pomocí rutiny Get-AzNetworkInterface načtěte síťové rozhraní virtuálního počítače a pak pomocí rutiny Get-AzApplicationSecurityGroup načtěte skupinu zabezpečení aplikace. Nakonec pomocí Set-AzNetworkInterface přidružte skupinu zabezpečení aplikace k síťovému rozhraní. Následující příklad přidruží skupinu zabezpečení aplikace asg-web k síťovému rozhraní 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
Opakováním příkazu přidružte skupinu zabezpečení aplikace asg-mgmt k síťovému rozhraní 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
Pomocí příkazu az network nic update přidružte síťové rozhraní ke skupině zabezpečení aplikace. Následující příklad přidruží skupinu zabezpečení aplikace asg-web k síťovému rozhraní 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
Opakováním příkazu přidružte skupinu zabezpečení aplikace asg-mgmt k síťovému rozhraní 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
Testování filtrů provozu
Do vyhledávacího pole v horní části portálu zadejte virtuální počítač. Ve výsledcích hledání vyberte virtuální počítače .
Vyberte vm-web.
V části Operace vyberte příkaz Spustit.
Vyberte RunShellScript.
V podokně Spustit skript příkazů zadejte následující příkazy:
sudo apt-get update -y
sudo apt-get install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx
Vyberte Spustit. Počkejte, až se skript úspěšně dokončí.
Na stránce Přehled webu virtuálního počítače si poznamenejte veřejnou IP adresu vašeho virtuálního počítače.
Pokud chcete ověřit, že máte přístup k webovému serveru virtuálního počítače vm-web z internetu na portu 80, otevřete internetový prohlížeč na počítači a přejděte na http://<public-ip-address-from-previous-step>.
Zobrazí se výchozí stránka nginx, protože příchozí provoz z internetu do skupiny zabezpečení asg-web aplikací je povolený přes port 80.
Síťové rozhraní připojené k virtuálnímu počítači web je přidružené ke skupině zabezpečení aplikací asg-web a umožňuje připojení.
Zkuste získat přístup k vm-web na portu 443 přístupem k https://<public-ip-address-vm-web> ve vašem prohlížeči. Připojení selže nebo vyprší časový limit, protože pravidlo zabezpečení pro asg-web nepovoluje příchozí provoz z internetu na port 443.
Teď nakonfigurujte vm-mgmt s nginx na portu 8080. Na stránce Virtuální počítače vyberte vm-mgmt.
V části Operace vyberte příkaz Spustit.
Vyberte RunShellScript.
V podokně Spustit skript příkazů zadejte následující příkazy pro instalaci nginx na 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
Vyberte Spustit. Počkejte, až se skript úspěšně dokončí.
Na stránce Přehledvirtuálního počítače si poznamenejte veřejnou IP adresu vašeho virtuálního počítače.
Pokud chcete ověřit, že máte přístup k webovému serveru vm-mgmt z internetu na portu 8080, otevřete internetový prohlížeč na počítači a přejděte na http://<public-ip-address-vm-mgmt>:8080.
Zobrazí se výchozí stránka nginx, protože příchozí provoz z internetu do skupiny zabezpečení aplikace asg-mgmt je povolený přes port 8080.
Zkuste získat přístup k vm-mgmt na portu 80 tak, že přejdete do http://<public-ip-address-vm-mgmt> prohlížeče. Připojení selže nebo vyprší časový limit, protože žádné pravidlo zabezpečení neumožňuje příchozí port 80 do skupiny zabezpečení aplikace asg-mgmt .
Síťové rozhraní připojené k virtuálnímu počítači web je přidružené ke skupině zabezpečení aplikací asg-web a umožňuje připojení.
Nainstalujte nginx na vm-web pomocí 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
Dokončení příkazu může trvat několik minut. Po dokončení otestujte webový přístup na vm-web.
Získejte veřejnou IP adresu vm-web:
$webIPParams = @{
Name = "public-ip-vm-web"
ResourceGroupName = "test-rg"
}
$webIP = Get-AzPublicIpAddress @webIPParams
Write-Host "vm-web IP: $($webIP.IpAddress)"
Pokud chcete ověřit, že máte přístup k webovému serveru vm-web z internetu na portu 80, otevřete internetový prohlížeč na počítači a přejděte na http://<vm-web-ip-address>.
Zobrazí se výchozí stránka nginx, protože příchozí provoz z internetu do skupiny zabezpečení aplikace asg-web je povolený přes port 80. Síťové rozhraní připojené k virtuálnímu počítači vm-web je v této skupině.
Zkuste získat přístup k vm-web na portu 443 tak, že přejdete ve https://<vm-web-ip-address> prohlížeči. Připojení selže nebo vyprší časový limit, protože pravidlo zabezpečení pro asg-web nepovoluje z internetu příchozí připojení na port 443.
Teď nainstalujte nginx na port 8080 na 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
Získejte veřejnou IP adresu vm-mgmt:
$mgmtIPParams = @{
Name = "public-ip-vm-mgmt"
ResourceGroupName = "test-rg"
}
$mgmtIP = Get-AzPublicIpAddress @mgmtIPParams
Write-Host "vm-mgmt IP: $($mgmtIP.IpAddress)"
Pokud chcete ověřit, že máte přístup k webovému serveru vm-mgmt z internetu na portu 8080, otevřete internetový prohlížeč na počítači a přejděte na http://<vm-mgmt-ip-address>:8080.
Zobrazí se výchozí stránka nginx, protože příchozí provoz z internetu do skupiny zabezpečení aplikace asg-mgmt je povolený přes port 8080.
Zkuste získat přístup k vm-mgmt na portu 80 tak, že přejdete do http://<vm-mgmt-ip-address> prohlížeče. Připojení selže nebo vyprší časový limit, protože žádné pravidlo zabezpečení neumožňuje příchozí port 80 do skupiny zabezpečení aplikace asg-mgmt .
Nainstalujte nginx na vm-web pomocí příkazu 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"
Získejte veřejnou IP adresu vm-web:
webIP=$(az vm show --show-details --resource-group test-rg --name vm-web --query publicIps --output tsv)
echo "vm-web IP: $webIP"
Pokud chcete ověřit, že máte přístup k webovému serveru vm-web z internetu na portu 80, použijte curl:
curl http://$webIP
Připojení proběhne úspěšně, protože skupina zabezpečení webové aplikace asg, ve které je síťové rozhraní připojené k virtuálnímu počítači vm-web , umožňuje příchozí port 80 z internetu.
Zkuste získat přístup k vm-webu na portu 443:
curl -k https://$webIP
Připojení selže nebo vyprší časový limit, protože pravidlo zabezpečení pro asg-web nepovoluje příchozí provoz na portu 443 z internetu.
Teď nainstalujte nginx na port 8080 na 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"
Získejte veřejnou IP adresu vm-mgmt:
mgmtIP=$(az vm show --show-details --resource-group test-rg --name vm-mgmt --query publicIps --output tsv)
echo "vm-mgmt IP: $mgmtIP"
Pokud chcete ověřit, že máte přístup k webovému serveru vm-mgmt z internetu na portu 8080, použijte curl:
curl http://$mgmtIP:8080
Připojení je úspěšné, protože příchozí provoz z internetu do skupiny zabezpečení aplikace asg-mgmt je povolený přes port 8080.
Zkuste získat přístup k vm-mgmt na portu 80:
curl http://$mgmtIP
Připojení selže nebo vyprší časový limit, protože žádné pravidlo zabezpečení neumožňuje příchozí port 80 do skupiny zabezpečení aplikace asg-mgmt .
Po dokončení používání vytvořených prostředků můžete odstranit skupinu prostředků a všechny její prostředky.
Na webu Azure Portal vyhledejte a vyberte skupiny prostředků.
Na stránce Skupiny prostředků vyberte skupinu prostředků test-rg.
Na stránce test-rg vyberte Odstranit skupinu prostředků.
Zadáním příkazu test-rg do pole Zadejte název skupiny prostředků potvrďte odstranění a pak vyberte Odstranit.
Pokud už ji nepotřebujete, můžete k odebrání skupiny prostředků a všech prostředků, které obsahuje, použít Remove-AzResourceGroup :
$params = @{
Name = "test-rg"
Force = $true
}
Remove-AzResourceGroup @params
Pokud už ji nepotřebujete, pomocí příkazu az group delete odeberte skupinu prostředků a všechny prostředky, které obsahuje.
az group delete \
--name test-rg \
--yes \
--no-wait
Další kroky
V tomto kurzu se naučíte:
- Vytvořili jste skupinu zabezpečení sítě a přidružili ji k podsíti virtuální sítě.
- Vytvořili jste skupiny zabezpečení aplikací pro provoz webu a správy.
- Vytvořili dva virtuální počítače s Linuxem s ověřováním klíčů SSH a přidružovali síťová rozhraní ke skupinám zabezpečení aplikací.
- Nainstalovali jsme webové servery nginx na oba virtuální počítače s různými konfiguracemi portů.
- Otestování síťového filtrování skupin zabezpečení aplikace předvedením, že vm-web umožňuje port 80 (HTTP), ale odmítne port 443, zatímco vm-mgmt umožňuje port 8080, ale odmítne port 80 (HTTP).
Další informace o skupinách zabezpečení sítě najdete v tématech Přehled skupin zabezpečení sítě a Správa skupiny zabezpečení sítě.
Provoz mezi podsítěmi směruje ve výchozím nastavení Azure. Místo toho se můžete rozhodnout směrovat provoz mezi podsítěmi přes virtuální počítač, který například slouží jako brána firewall.
Pokud chcete zjistit, jak vytvořit směrovací tabulku, pokračujte k dalšímu kurzu.