Automatizace auditování NSG pomocí zobrazení skupiny zabezpečení služby Azure Network Watcher
Poznámka:
Rozhraní API pro zobrazení skupiny zabezpečení se už neudržuje a brzy bude zastaralé. Použijte funkci Efektivní pravidla zabezpečení, která poskytují stejné funkce.
Zákazníci se často setkávají s výzvou k ověření stavu zabezpečení své infrastruktury. Tento problém se u virtuálních počítačů v Azure nijak neliší. Je důležité mít podobný profil zabezpečení na základě použitých pravidel skupiny zabezpečení sítě (NSG). Pomocí zobrazení skupiny zabezpečení teď můžete získat seznam pravidel použitých na virtuální počítač v rámci skupiny zabezpečení sítě. Můžete definovat zlatý profil zabezpečení NSG a zahájit zobrazení skupiny zabezpečení v týdenním tempu a porovnat výstup se zlatým profilem a vytvořit sestavu. Tímto způsobem můžete snadno identifikovat všechny virtuální počítače, které nevyhovují předepsanému profilu zabezpečení.
Další informace o skupinách zabezpečení sítě najdete v tématu Přehled skupin zabezpečení sítě.
Požadavky
- Pokud nemáte účet Azure s aktivním předplatným, vytvořte si ho zdarma.
- Virtuální počítač.
Scénář
V tomto scénáři porovnáte známý dobrý směrný plán s výsledky zobrazení skupin zabezpečení vrácených pro virtuální počítač.
V tomto scénáři:
- Načtení známé dobré sady pravidel
- Načtení virtuálního počítače pomocí rozhraní REST API
- Získání zobrazení skupiny zabezpečení pro virtuální počítač
- Vyhodnocení odpovědi
Načtení sady pravidel
Prvním krokem v tomto příkladu je práce se stávajícím směrným plánem. Následující příklad je json extrahovaný z existující skupiny zabezpečení sítě pomocí Get-AzNetworkSecurityGroup
rutiny, která se v tomto příkladu používá jako směrný plán.
[
{
"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"
}
]
Převod sady pravidel na objekty PowerShellu
V tomto kroku čtete soubor JSON vytvořený dříve s pravidly, u kterých se v tomto příkladu očekává, že budou ve skupině zabezpečení sítě.
$nsgbaserules = Get-Content -Path C:\temp\testvm1-nsg.json | ConvertFrom-Json
Načtení služby Network Watcher
Dalším krokem je načtení instance služby Network Watcher. Proměnná $networkWatcher
se předá rutině AzNetworkWatcherSecurityGroupView
.
$networkWatcher = Get-AzResource | Where {$_.ResourceType -eq "Microsoft.Network/networkWatchers" -and $_.Location -eq "WestCentralUS" }
Načtení konfigurace virtuálního počítače
K spuštění rutiny Get-AzNetworkWatcherSecurityGroupView
se vyžaduje virtuální počítač. Následující příklad získá objekt virtuálního počítače.
$VM = Get-AzVM -ResourceGroupName "testrg" -Name "testvm1"
Načtení zobrazení skupiny zabezpečení
Dalším krokem je načtení výsledku zobrazení skupiny zabezpečení. Tento výsledek se porovná s kódem JSON podle směrného plánu, který byl zobrazen dříve.
$secgroup = Get-AzNetworkWatcherSecurityGroupView -NetworkWatcher $networkWatcher -TargetVirtualMachineId $VM.Id
Analýza výsledků
Odpověď seskupí podle síťových rozhraní. Vrácené různé typy pravidel jsou platná a výchozí pravidla zabezpečení. Výsledek je dále rozdělený podle toho, jak se použije v podsíti nebo virtuální síťové kartě.
Následující skript PowerShellu porovnává výsledky zobrazení skupiny zabezpečení s existujícím výstupem skupiny zabezpečení sítě. Následující příklad představuje jednoduchý příklad porovnání výsledků s rutinou Compare-Object
.
Compare-Object -ReferenceObject $nsgbaserules `
-DifferenceObject $secgroup.NetworkInterfaces[0].NetworkInterfaceSecurityRules `
-Property Name,Description,Protocol,SourcePortRange,DestinationPortRange,SourceAddressPrefix,DestinationAddressPrefix,Access,Priority,Direction
Následující příklad je výsledkem. Ve srovnání vidíte dvě pravidla, která byla v první sadě pravidel.
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 : <=
Další kroky
Viz Vytvoření, změna nebo odstranění skupiny zabezpečení sítě, abyste mohli sledovat příslušnou skupinu zabezpečení sítě a pravidla zabezpečení.