Automatyzowanie inspekcji sieciowej grupy zabezpieczeń za pomocą widoku grupy zabezpieczeń usługi Azure Network Watcher
Uwaga
Interfejs API widoku grupy zabezpieczeń nie jest już obsługiwany i wkrótce zostanie wycofany. Użyj funkcji Obowiązujące reguły zabezpieczeń, która zapewnia te same funkcje.
Klienci często borykają się z wyzwaniem weryfikacji stanu zabezpieczeń swojej infrastruktury. To wyzwanie nie różni się od maszyn wirtualnych na platformie Azure. Ważne jest, aby mieć podobny profil zabezpieczeń oparty na zastosowanych regułach sieciowej grupy zabezpieczeń. Za pomocą widoku grupy zabezpieczeń możesz teraz uzyskać listę reguł zastosowanych do maszyny wirtualnej w sieciowej grupie zabezpieczeń. Możesz zdefiniować złoty profil zabezpieczeń sieciowej grupy zabezpieczeń i zainicjować widok grupy zabezpieczeń w cotygodniowym czasie i porównać dane wyjściowe ze złotym profilem i utworzyć raport. Dzięki temu można łatwo identyfikować wszystkie maszyny wirtualne, które nie są zgodne z określonym profilem zabezpieczeń.
Aby dowiedzieć się więcej na temat sieciowych grup zabezpieczeń, zobacz Network security groups overview (Omówienie sieciowych grup zabezpieczeń).
Wymagania wstępne
- Jeśli nie masz konta platformy Azure z aktywną subskrypcją, utwórz je bezpłatnie.
- Maszyna wirtualna.
Scenariusz
W tym scenariuszu porównasz znany dobry punkt odniesienia z wynikami widoku grupy zabezpieczeń zwróconym dla maszyny wirtualnej.
W tym scenariuszu wykonasz następujące elementy:
- Pobieranie znanego dobrego zestawu reguł
- Pobieranie maszyny wirtualnej przy użyciu interfejsu API REST
- Uzyskiwanie widoku grupy zabezpieczeń dla maszyny wirtualnej
- Ocena odpowiedzi
Pobieranie zestawu reguł
Pierwszym krokiem w tym przykładzie jest praca z istniejącym punktem odniesienia. W poniższym przykładzie przedstawiono kod json wyodrębniony z istniejącej sieciowej grupy zabezpieczeń przy użyciu Get-AzNetworkSecurityGroup
polecenia cmdlet, które jest używane jako punkt odniesienia dla tego przykładu.
[
{
"Description": null,
"Protocol": "TCP",
"SourcePortRange": "*",
"DestinationPortRange": "3389",
"SourceAddressPrefix": "*",
"DestinationAddressPrefix": "*",
"Access": "Allow",
"Priority": 1000,
"Direction": "Inbound",
"ProvisioningState": "Succeeded",
"Name": "default-allow-rdp",
"Etag": "W/\"d8859256-1c4c-4b93-ba7d-73d9bf67c4f1\"",
"Id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testrg/providers/Microsoft.Network/networkSecurityGroups/testvm1-nsg/securityRules/default-allow-rdp"
},
{
"Description": null,
"Protocol": "*",
"SourcePortRange": "*",
"DestinationPortRange": "111",
"SourceAddressPrefix": "*",
"DestinationAddressPrefix": "*",
"Access": "Allow",
"Priority": 1010,
"Direction": "Inbound",
"ProvisioningState": "Succeeded",
"Name": "MyRuleDoNotDelete",
"Etag": "W/\"d8859256-1c4c-4b93-ba7d-73d9bf67c4f1\"",
"Id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testrg/providers/Microsoft.Network/networkSecurityGroups/testvm1-nsg/securityRules/MyRuleDoNotDelete"
},
{
"Description": null,
"Protocol": "*",
"SourcePortRange": "*",
"DestinationPortRange": "112",
"SourceAddressPrefix": "*",
"DestinationAddressPrefix": "*",
"Access": "Allow",
"Priority": 1020,
"Direction": "Inbound",
"ProvisioningState": "Succeeded",
"Name": "My2ndRuleDoNotDelete",
"Etag": "W/\"d8859256-1c4c-4b93-ba7d-73d9bf67c4f1\"",
"Id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testrg/providers/Microsoft.Network/networkSecurityGroups/testvm1-nsg/securityRules/My2ndRuleDoNotDelete"
},
{
"Description": null,
"Protocol": "TCP",
"SourcePortRange": "*",
"DestinationPortRange": "5672",
"SourceAddressPrefix": "*",
"DestinationAddressPrefix": "*",
"Access": "Deny",
"Priority": 1030,
"Direction": "Inbound",
"ProvisioningState": "Succeeded",
"Name": "ThisRuleNeedsToStay",
"Etag": "W/\"d8859256-1c4c-4b93-ba7d-73d9bf67c4f1\"",
"Id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testrg/providers/Microsoft.Network/networkSecurityGroups/testvm1-nsg/securityRules/ThisRuleNeedsToStay"
}
]
Konwertowanie zestawu reguł na obiekty programu PowerShell
W tym kroku odczytujemy plik json, który został utworzony wcześniej z regułami, które powinny znajdować się w sieciowej grupie zabezpieczeń w tym przykładzie.
$nsgbaserules = Get-Content -Path C:\temp\testvm1-nsg.json | ConvertFrom-Json
Pobieranie usługi Network Watcher
Następnym krokiem jest pobranie wystąpienia usługi Network Watcher. Zmienna $networkWatcher
jest przekazywana do AzNetworkWatcherSecurityGroupView
polecenia cmdlet .
$networkWatcher = Get-AzResource | Where {$_.ResourceType -eq "Microsoft.Network/networkWatchers" -and $_.Location -eq "WestCentralUS" }
Pobieranie konfiguracji maszyny wirtualnej
Maszyna wirtualna jest wymagana do uruchomienia Get-AzNetworkWatcherSecurityGroupView
polecenia cmdlet. Poniższy przykład pobiera obiekt maszyny wirtualnej.
$VM = Get-AzVM -ResourceGroupName "testrg" -Name "testvm1"
Pobieranie widoku grupy zabezpieczeń
Następnym krokiem jest pobranie wyniku widoku grupy zabezpieczeń. Ten wynik jest porównywany z plikiem json "odniesienia", który został pokazany wcześniej.
$secgroup = Get-AzNetworkWatcherSecurityGroupView -NetworkWatcher $networkWatcher -TargetVirtualMachineId $VM.Id
Analiza wyników
Odpowiedź jest grupowana według interfejsów sieciowych. Różne typy zwracanych reguł to obowiązujące i domyślne reguły zabezpieczeń. Wynik jest dodatkowo podzielony na sposób ich stosowania w podsieci lub wirtualnej karcie sieciowej.
Poniższy skrypt programu PowerShell porównuje wyniki widoku grupy zabezpieczeń z istniejącymi danymi wyjściowymi sieciowej grupy zabezpieczeń. Poniższy przykład to prosty przykład porównywania wyników z poleceniem Compare-Object
cmdlet.
Compare-Object -ReferenceObject $nsgbaserules `
-DifferenceObject $secgroup.NetworkInterfaces[0].NetworkInterfaceSecurityRules `
-Property Name,Description,Protocol,SourcePortRange,DestinationPortRange,SourceAddressPrefix,DestinationAddressPrefix,Access,Priority,Direction
Poniższy przykład jest wynikiem. W porównaniu widać dwie reguły, które znajdowały się w pierwszym zestawie reguł.
Name : My2ndRuleDoNotDelete
Description :
Protocol : *
SourcePortRange : *
DestinationPortRange : 112
SourceAddressPrefix : *
DestinationAddressPrefix : *
Access : Allow
Priority : 1020
Direction : Inbound
SideIndicator : <=
Name : ThisRuleNeedsToStay
Description :
Protocol : TCP
SourcePortRange : *
DestinationPortRange : 5672
SourceAddressPrefix : *
DestinationAddressPrefix : *
Access : Deny
Priority : 1030
Direction : Inbound
SideIndicator : <=
Następne kroki
Zobacz Tworzenie, zmienianie lub usuwanie sieciowej grupy zabezpieczeń, aby śledzić sieciową grupę zabezpieczeń i reguły zabezpieczeń, które są kwestionowane.