Sdílet prostřednictvím


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

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í.