Sieciową grupę zabezpieczeń można używać do filtrowania przychodzącego i wychodzącego ruchu sieciowego do i z zasobów platformy Azure w sieci wirtualnej platformy Azure.
Sieciowe grupy zabezpieczeń zawierają reguły zabezpieczeń, które filtrują ruch sieciowy według adresów IP, portów i protokołów. Gdy sieciowa grupa zabezpieczeń jest skojarzona z podsiecią, reguły zabezpieczeń są stosowane do zasobów wdrożonych w tej podsieci.
W tym poradniku nauczysz się, jak:
- Tworzenie sieciowej grupy zabezpieczeń i reguł zabezpieczeń
- Tworzenie grup zabezpieczeń aplikacji
- Tworzenie sieci wirtualnej i kojarzenie sieciowej grupy zabezpieczeń z podsiecią
- Wdrażanie maszyn wirtualnych i kojarzenie ich interfejsów sieciowych z grupami zabezpieczeń aplikacji
Wymagania wstępne
Azure Cloud Shell
Na platformie Azure hostowane jest interaktywne środowisko wiersza poleceń Azure Cloud Shell, z którego można korzystać przez przeglądarkę. Do pracy z usługami platformy Azure można używać programu Bash lub PowerShell w środowisku Cloud Shell. Aby uruchomić kod w tym artykule, możesz użyć wstępnie zainstalowanych poleceń usługi Cloud Shell bez konieczności instalowania niczego w środowisku lokalnym.
Aby uruchomić środowisko Azure Cloud Shell:
| Opcja |
Przykład/łącze |
| Wybierz pozycję Wypróbuj w prawym górnym rogu bloku kodu lub polecenia. Wybranie pozycji Wypróbuj nie powoduje automatycznego skopiowania kodu lub polecenia do usługi Cloud Shell. |
|
| Przejdź do witryny https://shell.azure.com lub wybierz przycisk Uruchom Cloud Shell, aby otworzyć środowisko Cloud Shell w przeglądarce. |
|
| Wybierz przycisk Cloud Shell na pasku menu w prawym górnym rogu witryny Azure Portal. |
|
Aby użyć usługi Azure Cloud Shell:
Uruchom usługę Cloud Shell.
Wybierz przycisk Kopiuj w bloku kodu (lub bloku poleceń), aby skopiować kod lub polecenie.
Wklej kod lub polecenie do sesji usługi Cloud Shell, wybierając pozycję Ctrl+Shift+V w systemach Windows i Linux lub wybierając pozycję Cmd+Shift+V w systemie macOS.
Wybierz Enter, aby uruchomić kod lub polecenie.
Jeśli zdecydujesz się zainstalować program PowerShell i korzystać z niego lokalnie, ten artykuł wymaga modułu Azure PowerShell w wersji 1.0.0 lub nowszej. Uruchom Get-Module -ListAvailable Az, aby znaleźć zainstalowaną wersję. Jeśli konieczne będzie uaktualnienie, zobacz Instalowanie modułu Azure PowerShell. Jeśli używasz programu PowerShell lokalnie, musisz też uruchomić polecenie Connect-AzAccount, aby utworzyć połączenie z platformą Azure.
Jeśli nie masz jeszcze konta platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
- Ten artykuł wymaga wersji 2.0.28 lub nowszej interfejsu wiersza polecenia platformy Azure. W przypadku korzystania z usługi Azure Cloud Shell najnowsza wersja jest już zainstalowana.
Poniższa procedura tworzy sieć wirtualną z podsiecią zasobów.
W portalu wyszukaj i wybierz pozycję Sieci wirtualne.
Na stronie Sieci wirtualne wybierz + Utwórz.
Na karcie Podstawy tworzenia sieci wirtualnej wprowadź lub wybierz następujące informacje:
| Ustawienia |
Wartość |
|
Szczegóły projektu |
|
| Subskrypcja |
Wybierz swoją subskrypcję. |
| Grupa zasobów |
Wybierz pozycjęUtwórz nowy.
Wprowadź test-rg w Nazwa.
Wybierz przycisk OK. |
|
Szczegóły wystąpienia |
|
| Nazwa |
Wprowadź vnet-1. |
| Rejon |
Wybierz East US 2. |
Wybierz przycisk Dalej , aby przejść do karty Zabezpieczenia .
Wybierz przycisk Dalej, aby przejść do karty adresów IP.
W polu Przestrzeń adresowa w obszarze Podsieci wybierz domyślną podsieć.
W okienku Edytowanie podsieci wprowadź lub wybierz następujące informacje:
| Ustawienia |
Wartość |
|
Szczegóły podsieci |
|
| Szablon podsieci |
Pozostaw wartość domyślną jako Domyślna. |
| Nazwa |
Wprowadź subnet-1. |
| Adres początkowy |
Pozostaw wartość domyślną 10.0.0.0. |
| Rozmiar podsieci |
Pozostaw wartość domyślną /24(256 adresów). |
Wybierz Zapisz.
Wybierz pozycję Przejrzyj i utwórz w dolnej części ekranu. Po zakończeniu walidacji wybierz pozycję Utwórz.
Najpierw utwórz grupę zasobów dla wszystkich zasobów utworzonych w tym artykule za pomocą polecenia New-AzResourceGroup. Poniższy przykład tworzy grupę zasobów w lokalizacji westus2 :
$rg = @{
ResourceGroupName = "test-rg"
Location = "westus2"
}
New-AzResourceGroup @rg
Utwórz sieć wirtualną za pomocą New-AzVirtualNetwork. Poniższy przykład tworzy wirtualną sieć o nazwie vnet-1:
$vnet = @{
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "vnet-1"
AddressPrefix = "10.0.0.0/16"
}
$virtualNetwork = New-AzVirtualNetwork @vnet
Utwórz konfigurację podsieci za pomocą polecenia New-AzVirtualNetworkSubnetConfig, a następnie zapisz konfigurację podsieci w sieci wirtualnej za pomocą polecenia Set-AzVirtualNetwork. Poniższy przykład dodaje do sieci wirtualnej podsieć o nazwie subnet-1 i kojarzy z nią sieciową grupę zabezpieczeń nsg-1 :
$subnet = @{
Name = "subnet-1"
VirtualNetwork = $virtualNetwork
AddressPrefix = "10.0.0.0/24"
}
Add-AzVirtualNetworkSubnetConfig @subnet
$virtualNetwork | Set-AzVirtualNetwork
Najpierw utwórz grupę zasobów dla zasobów utworzonych w tym artykule przy użyciu az group create. Poniższy przykład tworzy grupę zasobów w lokalizacji westus2 :
az group create \
--name test-rg \
--location westus2
Utwórz sieć wirtualną za pomocą polecenia az network vnet create. Poniższy przykład tworzy wirtualną sieć o nazwie vnet-1:
az network vnet create \
--name vnet-1 \
--resource-group test-rg \
--address-prefixes 10.0.0.0/16
Dodaj podsieć do sieci wirtualnej za pomocą az network vnet subnet create. Poniższy przykład dodaje do sieci wirtualnej podsieć o nazwie subnet-1 i kojarzy z nią sieciową grupę zabezpieczeń 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
Tworzenie grup zabezpieczeń aplikacji
Grupa zabezpieczeń aplikacji (ASG) umożliwia grupowanie serwerów z podobnymi funkcjami, takimi jak serwery internetowe.
W polu wyszukiwania w górnej części portalu wprowadź ciąg Grupa zabezpieczeń aplikacji. Wybierz pozycję Grupy zabezpieczeń aplikacji w wynikach wyszukiwania.
Wybierz + Utwórz.
Na karcie Podstawy tworzenia grupy zabezpieczeń aplikacji wprowadź lub wybierz następujące informacje:
| Ustawienia |
Wartość |
|
Szczegóły projektu |
|
| Subskrypcja |
Wybierz swoją subskrypcję. |
| Grupa zasobów |
Wybierz pozycję test-rg. |
|
Szczegóły wystąpienia |
|
| Nazwa |
Wprowadź asg-web. |
| Rejon |
Wybierz pozycję Zachodnie stany USA 2. |
Wybierz opcję Recenzja i utwórz.
Wybierz + Utwórz.
Powtórz poprzednie kroki, określając następujące wartości:
| Ustawienia |
Wartość |
|
Szczegóły projektu |
|
| Subskrypcja |
Wybierz swoją subskrypcję. |
| Grupa zasobów |
Wybierz pozycję test-rg. |
|
Szczegóły wystąpienia |
|
| Nazwa |
Wprowadź asg-mgmt. |
| Rejon |
Wybierz pozycję Zachodnie stany USA 2. |
Wybierz opcję Recenzja i utwórz.
Wybierz Utwórz.
Utwórz grupę zabezpieczeń aplikacji za pomocą polecenia New-AzApplicationSecurityGroup. Grupa zabezpieczeń aplikacji umożliwia grupowanie serwerów z podobnymi wymaganiami dotyczącymi filtrowania portów. W poniższym przykładzie są tworzone dwie grupy zabezpieczeń aplikacji.
$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
Utwórz grupę zabezpieczeń aplikacji za pomocą az network asg create. Grupa zabezpieczeń aplikacji umożliwia grupowanie serwerów z podobnymi wymaganiami dotyczącymi filtrowania portów. W poniższym przykładzie są tworzone dwie grupy zabezpieczeń aplikacji.
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
Tworzenie sieciowej grupy zabezpieczeń
Sieciowa grupa zabezpieczeń zabezpiecza ruch sieciowy w sieci wirtualnej.
W polu wyszukiwania w górnej części portalu wprowadź wartość Sieciowa grupa zabezpieczeń. Wybierz pozycję Sieciowe grupy zabezpieczeń w wynikach wyszukiwania.
Uwaga / Notatka
W wynikach wyszukiwania sieciowych grup zabezpieczeń możesz zobaczyć sieciowe grupy zabezpieczeń (klasyczne). Wybierz pozycję Sieciowe grupy zabezpieczeń.
Wybierz + Utwórz.
Na karcie Podstawowe informacje w obszarze Tworzenie sieciowej grupy zabezpieczeń wprowadź lub wybierz następujące informacje:
| Ustawienia |
Wartość |
|
Szczegóły projektu |
|
| Subskrypcja |
Wybierz swoją subskrypcję. |
| Grupa zasobów |
Wybierz pozycję test-rg. |
|
Szczegóły wystąpienia |
|
| Nazwa |
Wprowadź ciąg nsg-1. |
| Lokalizacja |
Wybierz pozycję Zachodnie stany USA 2. |
Wybierz opcję Recenzja i utwórz.
Wybierz Utwórz.
Utwórz sieciową grupę zabezpieczeń przy użyciu polecenia New-AzNetworkSecurityGroup. Poniższy przykład tworzy sieciową grupę zabezpieczeń o nazwie nsg-1:
$nsgParams = @{
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "nsg-1"
}
$nsg = New-AzNetworkSecurityGroup @nsgParams
Utwórz sieciową grupę zabezpieczeń za pomocą polecenia az network nsg create. Poniższy przykład tworzy sieciową grupę zabezpieczeń o nazwie nsg-1:
# Create a network security group
az network nsg create \
--resource-group test-rg \
--name nsg-1
Przypisz grupę zabezpieczeń sieciowych do podsieci
W tej sekcji skojarzysz sieciową grupę zabezpieczeń z podsiecią utworzonej wcześniej sieci wirtualnej.
W polu wyszukiwania w górnej części portalu wprowadź wartość Sieciowa grupa zabezpieczeń. Wybierz pozycję Sieciowe grupy zabezpieczeń w wynikach wyszukiwania.
Wybierz pozycję nsg-1.
Wybierz Podsieci w sekcji Ustawienia elementu nsg-1.
Na stronie Podsieci wybierz pozycję + Skojarz:
W sekcji Skojarz podsieć wybierz vnet-1 (test-rg) dla Sieci wirtualnej.
Wybierz subnet-1 dla Subnet, a następnie wybierz OK.
Użyj polecenia Get-AzVirtualNetwork , aby pobrać obiekt sieci wirtualnej, a następnie użyj polecenia Set-AzVirtualNetworkSubnetConfig , aby skojarzyć sieciową grupę zabezpieczeń z podsiecią. Poniższy przykład pobiera obiekt sieci wirtualnej i aktualizuje konfigurację podsieci w celu skojarzenia sieciowej grupy zabezpieczeń:
# 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
Użyj polecenia az network vnet subnet update, aby skojarzyć sieciową grupę zabezpieczeń z podsiecią. Poniższy przykład kojarzy sieciową grupę zabezpieczeń nsg-1 z podsieciąsubnet-1 :
az network vnet subnet update \
--resource-group test-rg \
--vnet-name vnet-1 \
--name subnet-1 \
--network-security-group nsg-1
Tworzenie reguł zabezpieczeń
Wybierz Reguły zabezpieczeń dla ruchu przychodzącego z sekcji Ustawienia elementu nsg-1.
Na stronie Reguły zabezpieczeń dla ruchu przychodzącego wybierz pozycję + Dodaj.
Utwórz regułę zabezpieczeń zezwalającą na port 80 do grupy zabezpieczeń aplikacji asg-web . Na stronie Dodawanie reguły zabezpieczeń dla ruchu przychodzącego wprowadź lub wybierz następujące informacje:
| Ustawienia |
Wartość |
| Źródło |
Pozostaw wartość domyślną Dowolna. |
| Zakresy portów źródłowych |
Pozostaw wartość domyślną (*). |
| Destynacja |
Wybierz pozycję Grupa zabezpieczeń aplikacji. |
| Docelowe grupy zabezpieczeń aplikacji |
Wybierz pozycję asg-web. |
| Usługa |
Pozostaw wartość domyślną ustawioną na Niestandardowe. |
| Zakresy portów docelowych |
Wprowadź 80. |
| Protokół |
Wybierz pozycję TCP. |
| Akcja |
Pozostaw wartość domyślną Zezwalaj. |
| Priorytet |
Pozostaw wartość domyślną 100. |
| Nazwa |
Wprowadź allow-http-web. |
Wybierz Dodaj.
Wykonaj poprzednie kroki z użyciem następujących informacji.
| Ustawienia |
Wartość |
| Źródło |
Pozostaw wartość domyślną Dowolna. |
| Zakresy portów źródłowych |
Pozostaw wartość domyślną (*). |
| Destynacja |
Wybierz pozycję Grupa zabezpieczeń aplikacji. |
| Docelowa grupa zabezpieczeń aplikacji |
Wybierz asg-mgmt |
| Usługa |
Pozostaw wartość domyślną ustawioną na Niestandardowe. |
| Zakresy portów docelowych |
Wprowadź wartość 8080. |
| Protokół |
Wybierz pozycję TCP. |
| Akcja |
Pozostaw wartość domyślną Zezwalaj. |
| Priorytet |
Pozostaw wartość domyślną 110. |
| Nazwa |
Wprowadź allow-8080-mgmt. |
Wybierz Dodaj.
Utwórz regułę zabezpieczeń za pomocą polecenia New-AzNetworkSecurityRuleConfig. Poniższy przykład tworzy regułę zezwalającą na ruch przychodzący z Internetu do grupy zabezpieczeń aplikacji asg-web przez 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
Poniższy przykład tworzy regułę zezwalającą na ruch przychodzący z Internetu do grupy zabezpieczeń aplikacji asg-mgmt przez 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
Użyj polecenia Get-AzNetworkSecurityGroup , aby pobrać istniejącą sieciową grupę zabezpieczeń, a następnie dodaj nowe reguły z operatorem += . Na koniec zaktualizuj sieciową grupę zabezpieczeń za pomocą polecenia 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
Utwórz regułę zabezpieczeń za pomocą polecenia az network nsg rule create. Poniższy przykład tworzy regułę zezwalającą na ruch przychodzący z Internetu do grupy zabezpieczeń aplikacji asg-web przez 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
Poniższy przykład tworzy regułę zezwalającą na ruch przychodzący z Internetu do grupy zabezpieczeń aplikacji asg-mgmt przez 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
Tworzenie maszyn wirtualnych
Utwórz dwie maszyny wirtualne w sieci wirtualnej.
W portalu wyszukaj i wybierz pozycję Maszyny wirtualne.
W obszarze Maszyny wirtualne wybierz pozycję + Utwórz, a następnie pozycję Maszyna wirtualna.
W obszarze Tworzenie maszyny wirtualnej wprowadź lub wybierz te informacje na karcie Podstawy :
| Ustawienia |
Wartość |
|
Szczegóły projektu |
|
| Subskrypcja |
Wybierz swoją subskrypcję. |
| Grupa zasobów |
Wybierz pozycję test-rg. |
|
Szczegóły wystąpienia |
|
| Nazwa maszyny wirtualnej |
Wprowadź vm-web. |
| Rejon |
Wybierz pozycję (Stany Zjednoczone) Zachodnie stany USA 2. |
| Opcje dostępności |
Pozostaw wartość domyślną Brak wymaganej nadmiarowości infrastruktury. |
| Typ zabezpieczeń |
Wybierz opcję Standardowa. |
| obraz |
Wybierz pozycję Ubuntu Server 24.04 LTS — x64 Gen2. |
| Instancja Azure Spot |
Pozostaw domyślnie pole bez zaznaczenia. |
| Rozmiar |
Wybierz rozmiar. |
|
Konto administratora |
|
| Typ uwierzytelniania |
Wybierz opcję Klucz publiczny SSH. |
| Nazwa użytkownika |
Wprowadź azureuser. |
| Źródło klucza publicznego SSH |
Wybierz pozycję Generuj nową parę kluczy. |
| Nazwa pary kluczy |
Wprowadź vm-web-key. |
|
Reguły portów przychodzących |
|
| Wybierz porty wejściowe |
Wybierz pozycję Brak. |
Wybierz pozycję Dalej: Dyski , a następnie Dalej: Sieć.
Na karcie Sieć wprowadź lub wybierz następujące informacje:
| Ustawienia |
Wartość |
|
Interfejs sieciowy |
|
| Sieć wirtualna |
Wybierz pozycję vnet-1. |
| Podsieć |
Wybierz podsieć-1 (10.0.0.0/24). |
| Publiczny adres IP |
Pozostaw wartość domyślną nowego publicznego adresu IP. |
| Grupa zabezpieczeń sieciowych NIC |
Wybierz pozycję Brak. |
Wybierz kartę Przegląd + tworzenie lub wybierz niebieski przycisk Przegląd + tworzenie w dolnej części strony.
Wybierz Utwórz.
Po wyświetleniu monitu o wygenerowanie nowej pary kluczy wybierz pozycję Pobierz klucz prywatny i utwórz zasób. Klucz prywatny jest pobierany na komputer lokalny. Wdrożenie maszyny wirtualnej może potrwać kilka minut.
Powtórz poprzednie kroki, aby utworzyć drugą maszynę wirtualną o nazwie vm-mgmt z nazwą pary kluczy vm-mgmt-key.
Przed utworzeniem maszyn wirtualnych pobierz obiekt sieci wirtualnej z podsiecią za pomocą polecenia Get-AzVirtualNetwork:
$virtualNetworkParams = @{
Name = "vnet-1"
ResourceGroupName = "test-rg"
}
$virtualNetwork = Get-AzVirtualNetwork @virtualNetworkParams
Utwórz publiczny adres IP dla każdej maszyny wirtualnej przy użyciu polecenia 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
Utwórz dwa interfejsy sieciowe za pomocą polecenia New-AzNetworkInterface i przypisz publiczny adres IP do interfejsu sieciowego. Poniższy przykład tworzy interfejs sieciowy, przypisuje mu publiczny adres IP 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
Poniższy przykład tworzy interfejs sieciowy, przypisuje adres IP publicznyip-vm-mgmt do niego.
$mgmtNicParams = @{
Location = "westus2"
Name = "vm-mgmt-nic"
ResourceGroupName = "test-rg"
SubnetId = $virtualNetwork.Subnets[0].Id
PublicIpAddressId = $publicIpMgmt.Id
}
$mgmtNic = New-AzNetworkInterface @mgmtNicParams
Utwórz dwie maszyny wirtualne w sieci wirtualnej, aby można było zweryfikować filtrowanie ruchu w późniejszym kroku.
Generuj klucze SSH w Azure za pomocą New-AzSshKey. Poniższy przykład tworzy zasoby klucza SSH dla każdej maszyny wirtualnej:
# 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
Utwórz konfigurację maszyny wirtualnej za pomocą polecenia New-AzVMConfig, a następnie utwórz maszynę wirtualną za pomocą polecenia New-AzVM. Poniższy przykład tworzy maszynę wirtualną, która służy jako serwer internetowy. Opcja -AsJob tworzy maszynę wirtualną w tle, aby móc przejść do następnego 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
Utwórz maszynę wirtualną, która będzie służyć jako serwer zarządzania:
# 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
Utworzenie maszyny wirtualnej zajmuje kilka minut. Nie wykonuj następnego kroku, dopóki platforma Azure nie zakończy tworzenia maszyny wirtualnej.
Utwórz dwie maszyny wirtualne w sieci wirtualnej, aby można było zweryfikować filtrowanie ruchu w późniejszym kroku.
Utwórz maszynę wirtualną za pomocą polecenia az vm create. Poniższy przykład tworzy maszynę wirtualną, która służy jako serwer internetowy. Określono --nsg "" opcję uniemożliwiającą platformie Azure utworzenie domyślnej sieciowej grupy zabezpieczeń dla interfejsu sieciowego tworzonego przez platformę Azure podczas tworzenia maszyny wirtualnej. Parametr --generate-ssh-keys powoduje, że interfejs wiersza polecenia szuka dostępnego klucza SSH w pliku ~/.ssh. Jeśli zostanie znaleziony, zostanie użyty ten klucz. Jeśli tak nie jest, jest generowany i przechowywany w pliku ~/.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
W ciągu kilku minut zostanie utworzona maszyna wirtualna. Po utworzeniu maszyny wirtualnej zwracane są dane wyjściowe podobne do następującego przykładu:
{
"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"
}
Utwórz maszynę wirtualną za pomocą polecenia az vm create. Poniższy przykład tworzy maszynę wirtualną, która służy jako serwer zarządzania:
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
W ciągu kilku minut zostanie utworzona maszyna wirtualna. Nie wykonuj następnego kroku, dopóki platforma Azure nie zakończy tworzenia maszyny wirtualnej.
Kojarzenie interfejsów sieciowych z usługą ASG
Po utworzeniu maszyn wirtualnych platforma Azure utworzyła interfejs sieciowy dla każdej maszyny wirtualnej i dołączyła ją do maszyny wirtualnej.
Dodaj interfejs sieciowy każdej maszyny wirtualnej do jednej z utworzonych wcześniej grup zabezpieczeń aplikacji:
W polu wyszukiwania w górnej części portalu wprowadź ciąg Maszyna wirtualna. Wybierz pozycję Maszyny wirtualne w wynikach wyszukiwania, a następnie wybierz pozycję vm-web.
Wybierz pozycję Grupy zabezpieczeń aplikacji w sekcji Sieć w sieci vm-web.
Wybierz pozycję Dodaj grupy zabezpieczeń aplikacji, a następnie na karcie Dodaj grupy zabezpieczeń aplikacji wybierz pozycję asg-web. Na koniec wybierz pozycję Dodaj.
Powtórz poprzednie kroki dla narzędzia vm-mgmt, wybierając pozycję asg-mgmt na karcie Dodawanie grup zabezpieczeń aplikacji .
Użyj polecenia Get-AzNetworkInterface , aby pobrać interfejs sieciowy maszyny wirtualnej, a następnie pobierz grupę zabezpieczeń aplikacji za pomocą polecenia Get-AzApplicationSecurityGroup . Na koniec użyj polecenia Set-AzNetworkInterface , aby skojarzyć grupę zabezpieczeń aplikacji z interfejsem sieciowym. Poniższy przykład kojarzy grupę zabezpieczeń aplikacji asg-web z interfejsem sieciowym 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
Powtórz polecenie, aby skojarzyć grupę zabezpieczeń aplikacji asg-mgmt z interfejsem sieciowym 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
Użyj polecenia az network nic update, aby skojarzyć interfejs sieciowy z grupą zabezpieczeń aplikacji. Poniższy przykład kojarzy grupę zabezpieczeń aplikacji asg-web z interfejsem sieciowym 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
Powtórz polecenie, aby skojarzyć grupę zabezpieczeń aplikacji asg-mgmt z interfejsem sieciowym 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
Testowanie filtrów ruchu
W polu wyszukiwania w górnej części portalu wprowadź ciąg Maszyna wirtualna. Wybierz pozycję Maszyny wirtualne w wynikach wyszukiwania.
Wybierz vm-web.
Wybierz pozycję Uruchom polecenie w sekcji Operacje .
Wybierz pozycję UruchomShellScript.
W okienku Uruchom skrypt polecenia wprowadź następujące polecenia:
sudo apt-get update -y
sudo apt-get install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx
Wybierz Uruchom. Poczekaj na pomyślne ukończenie skryptu.
Na stronie Przeglądmaszyny wirtualnej vm-web zanotuj publiczny adres IP maszyny wirtualnej.
Aby potwierdzić, że możesz uzyskać dostęp do serwera internetowego vm-web z Internetu na porcie 80, otwórz przeglądarkę internetową na komputerze i przejdź do http://<public-ip-address-from-previous-step>adresu .
Zostanie wyświetlona domyślna strona nginx, ponieważ ruch przychodzący z Internetu do grupy zabezpieczeń aplikacji asg-web jest dozwolony za pośrednictwem portu 80.
Interfejs sieciowy dołączony do sieci vm-web jest skojarzony z grupą zabezpieczeń aplikacji asg-web i zezwala na połączenie.
Spróbuj uzyskać dostęp do vm-web na porcie 443, wpisując adres https://<public-ip-address-vm-web> w przeglądarce. Połączenie kończy się niepowodzeniem lub przekroczeniem limitu czasu, ponieważ reguła zabezpieczeń dla sieci Asg-Web nie zezwala na ruch przychodzący z Internetu przez port 443.
Teraz skonfiguruj narzędzie vm-mgmt za pomocą narzędzia nginx na porcie 8080. Wybierz pozycję vm-mgmt na stronie Maszyny wirtualne .
Wybierz pozycję Uruchom polecenie w sekcji Operacje .
Wybierz pozycję UruchomShellScript.
W okienku Uruchom skrypt polecenia wprowadź następujące polecenia, aby zainstalować serwer nginx na porcie 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
Wybierz Uruchom. Poczekaj na pomyślne ukończenie skryptu.
Na stronie Przeglądmaszyny wirtualnej vm-mgmt zanotuj publiczny adres IP maszyny wirtualnej.
Aby potwierdzić, że możesz uzyskać dostęp do serwera internetowego vm-mgmt z Internetu na porcie 8080, otwórz przeglądarkę internetową na komputerze i przejdź do http://<public-ip-address-vm-mgmt>:8080adresu .
Zostanie wyświetlona domyślna strona nginx, ponieważ ruch przychodzący z Internetu do grupy zabezpieczeń aplikacji asg-mgmt jest dozwolony za pośrednictwem portu 8080.
Spróbuj uzyskać dostęp do vm-mgmt na porcie 80, wpisując adres w przeglądarce http://<public-ip-address-vm-mgmt>. Połączenie kończy się niepowodzeniem lub przekroczeniem limitu czasu, ponieważ żadna reguła zabezpieczeń nie zezwala na ruch przychodzący do portu 80 w grupie zabezpieczeń aplikacji asg-mgmt.
Interfejs sieciowy dołączony do sieci vm-web jest skojarzony z grupą zabezpieczeń aplikacji asg-web i zezwala na połączenie.
Zainstaluj nginx na vm-web przy użyciu 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
Wykonanie polecenia może potrwać kilka minut. Po zakończeniu przetestuj dostęp do web na vm-web.
Uzyskaj publiczny adres IP vm-web:
$webIPParams = @{
Name = "public-ip-vm-web"
ResourceGroupName = "test-rg"
}
$webIP = Get-AzPublicIpAddress @webIPParams
Write-Host "vm-web IP: $($webIP.IpAddress)"
Aby potwierdzić, że możesz uzyskać dostęp do serwera internetowego vm-web z Internetu na porcie 80, otwórz przeglądarkę internetową na komputerze i przejdź do http://<vm-web-ip-address>adresu .
Zostanie wyświetlona domyślna strona nginx, ponieważ ruch przychodzący z Internetu do grupy zabezpieczeń aplikacji asg-web jest dozwolony za pośrednictwem portu 80. Interfejs sieciowy dołączony do maszyny wirtualnej vm-web znajduje się w tej grupie.
Spróbuj uzyskać dostęp do vm-web na porcie 443, otwierając stronę https://<vm-web-ip-address> w przeglądarce. Połączenie kończy się niepowodzeniem lub przekroczeniem limitu czasu, ponieważ reguła zabezpieczeń dla sieci Asg-Web nie zezwala na ruch przychodzący z Internetu przez port 443.
Teraz zainstaluj serwer nginx na porcie 8080 na maszynie wirtualnej 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
Pobierz publiczny adres IP dla vm-mgmt:
$mgmtIPParams = @{
Name = "public-ip-vm-mgmt"
ResourceGroupName = "test-rg"
}
$mgmtIP = Get-AzPublicIpAddress @mgmtIPParams
Write-Host "vm-mgmt IP: $($mgmtIP.IpAddress)"
Aby potwierdzić, że możesz uzyskać dostęp do serwera internetowego vm-mgmt z Internetu na porcie 8080, otwórz przeglądarkę internetową na komputerze i przejdź do http://<vm-mgmt-ip-address>:8080adresu .
Zostanie wyświetlona domyślna strona nginx, ponieważ ruch przychodzący z Internetu do grupy zabezpieczeń aplikacji asg-mgmt jest dozwolony za pośrednictwem portu 8080.
Spróbuj uzyskać dostęp do vm-mgmt na porcie 80, otwierając stronę http://<vm-mgmt-ip-address> w swojej przeglądarce. Połączenie kończy się niepowodzeniem lub przekroczeniem limitu czasu, ponieważ żadna reguła zabezpieczeń nie zezwala na ruch przychodzący na port 80 do grupy zabezpieczeń aplikacji asg-mgmt.
Zainstaluj nginx na vm-web przy użyciu 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"
Uzyskaj publiczny adres IP vm-web:
webIP=$(az vm show --show-details --resource-group test-rg --name vm-web --query publicIps --output tsv)
echo "vm-web IP: $webIP"
Aby potwierdzić, że możesz uzyskać dostęp do serwera internetowego vm-web z Internetu na porcie 80, użyj narzędzia curl:
curl http://$webIP
Połączenie powiedzie się, ponieważ grupa zabezpieczeń aplikacji asg-web , w której znajduje się interfejs sieciowy dołączony do maszyny wirtualnej vm-web , zezwala na ruch przychodzący z Internetu przez port 80.
Spróbuj połączyć się z vm-web na porcie 443:
curl -k https://$webIP
Połączenie kończy się niepowodzeniem lub przekroczeniem limitu czasu, ponieważ reguła zabezpieczeń dla sieci Asg-Web nie zezwala na ruch przychodzący z Internetu przez port 443.
Teraz zainstaluj serwer nginx na porcie 8080 na maszynie wirtualnej 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"
Pobierz publiczny adres IP dla vm-mgmt:
mgmtIP=$(az vm show --show-details --resource-group test-rg --name vm-mgmt --query publicIps --output tsv)
echo "vm-mgmt IP: $mgmtIP"
Aby potwierdzić, że możesz uzyskać dostęp do serwera internetowego vm-mgmt z Internetu na porcie 8080, użyj narzędzia curl:
curl http://$mgmtIP:8080
Połączenie powiedzie się, ponieważ ruch przychodzący z Internetu do grupy zabezpieczeń aplikacji asg-mgmt jest dozwolony za pośrednictwem portu 8080.
Spróbuj uzyskać dostęp do narzędzia vm-mgmt na porcie 80:
curl http://$mgmtIP
Połączenie kończy się niepowodzeniem lub przekroczeniem limitu czasu, ponieważ żadna reguła zabezpieczeń nie zezwala na ruch przychodzący na port 80 do grupy zabezpieczeń aplikacji asg-mgmt.
Po zakończeniu korzystania z utworzonych zasobów możesz usunąć grupę zasobów i wszystkie jej zasoby.
W witrynie Azure Portal wyszukaj i wybierz pozycję Grupy zasobów.
Na stronie Grupy zasobów wybierz grupę zasobów test-rg .
Na stronie test-rg wybierz pozycję Usuń grupę zasobów.
Wprowadź test-rg w Wprowadź nazwę grupy zasobów, aby potwierdzić usunięcie, a następnie wybierz Usuń.
Gdy grupa zasobów nie jest już potrzebna, możesz użyć polecenia Remove-AzResourceGroup , aby usunąć grupę zasobów i wszystkie zawarte w niej zasoby:
$params = @{
Name = "test-rg"
Force = $true
}
Remove-AzResourceGroup @params
Gdy grupa zasobów nie jest już potrzebna, użyj polecenia az group delete , aby usunąć grupę zasobów i wszystkie zawarte w niej zasoby.
az group delete \
--name test-rg \
--yes \
--no-wait
Dalsze kroki
W tym samouczku nauczysz się następujących rzeczy:
- Utworzono sieciową grupę zabezpieczeń i skojarzyliśmy ją z podsiecią sieci wirtualnej.
- Utworzono grupy zabezpieczeń aplikacji dla ruchu internetowego i zarządzania.
- Utworzono dwie maszyny wirtualne z systemem Linux z uwierzytelnianiem za pomocą klucza SSH i skojarzyły swoje interfejsy sieciowe z grupami zabezpieczeń aplikacji.
- Zainstalowane serwery internetowe nginx na obu maszynach wirtualnych z różnymi konfiguracjami portów.
- Przetestowano filtrowanie sieci w grupie zabezpieczeń aplikacji przez zademonstrowanie, że vm-web zezwala na port 80 (HTTP) i blokuje port 443, podczas gdy vm-mgmt zezwala na port 8080 i blokuje port 80 (HTTP).
Aby dowiedzieć się więcej na temat sieciowych grup zabezpieczeń, zobacz Network security group overview (Omówienie sieciowej grupy zabezpieczeń ) i Manage a network security group (Zarządzanie sieciową grupą zabezpieczeń).
Domyślnie platforma Azure kieruje ruch między podsieciami. Zamiast tego możesz wybrać kierowanie ruchu między podsieciami przez maszynę wirtualną, pełniąc funkcję zapory.
Aby dowiedzieć się, jak utworzyć tabelę tras, przejdź do następnego samouczka.