Gestire i gruppi di sicurezza di rete mediante PowerShell

Dopo la creazione di uno o più gruppi di risorse, è necessario potere recuperare informazioni sui gruppi di risorse, aggiungere e rimuovere regole, modificare le risorse esistenti, associare o annullare l'associazione di gruppi di sicurezza di rete ed eliminare i gruppi di sicurezza di rete. In questo articolo verrà illustrato come eseguire ognuna di queste attività. Prima di poter gestire i gruppi di sicurezza di rete, è importante sapere come funzionano.

Nota

Azure offre due modelli di distribuzione per creare e usare le risorse: Gestione risorse e la distribuzione classica. Questo articolo illustra l'uso del modello di distribuzione Resource Manager che Microsoft consiglia di usare invece del modello di distribuzione classica per le distribuzioni più recenti.

Scenario di esempio

Per illustrare meglio come gestire i gruppi di sicurezza di rete, questo articolo usa lo scenario seguente.

Scenario di una rete virtuale

In questo scenario si creerà un NSG per ogni subnet nella rete virtuale TestVNet , come illustrato di seguito:

  • NSG-FrontEnd. Il front-end NSG verrà applicato per il subnet front-end , e contiene due regole:
    • regola-rdp. Questa regola consente il traffico RDP verso il subnet front-end .
    • regola-web. Questa regola consente il traffico HTTP verso il subnet front-end .
  • Back-end di NSG. Il back-end NSG verrà applicato per il subnet back-end , e contiene due regole:
    • regola sql. Questa regola consente il traffico SQL solo dal subnet front-end .
    • regola-web. Questa regola nega tutto il traffico associato ad internet proveniente dal subnet back-end .

La combinazione di queste regole crea uno scenario simile alla rete perimetrale, dove la subnet di back-end può solo ricevere traffico in ingresso per il traffico SQL dalla subnet front-end e non dispone dell'accesso a Internet, mentre la subnet front-end può comunicare con Internet e ricevere solo le richieste HTTP in ingresso.

Per distribuire lo scenario illustrato in precedenza, selezionare questo collegamento, fare clic su Distribuisci in Azure, sostituire i valori del parametro predefinito se necessario e seguire le istruzioni nel portale. Nelle istruzioni di esempio seguenti il modello è stato usato per distribuire un gruppo di risorse con nome RG-NSG.

Prerequisito: installare il modulo Azure PowerShell.

Per realizzare la procedura descritta in questo articolo, è necessario installare e configurare Azure PowerShell e seguire le istruzioni fino al termine della procedura per accedere ad Azure e selezionare la sottoscrizione desiderata.

Nota

Se non si dispone di un account Azure, è necessario procurarsene uno. Usare la versione di valutazione gratuita.

Recuperare le informazioni

È possibile visualizzare i gruppi di sicurezza di rete (NSG, Network Security Group) esistenti, recuperare le regole relative a un NSG esistente e trovare le risorse a cui un NSG è associato.

Visualizzare NSG esistenti

Per visualizzare tutti gli NSG esistenti in una sottoscrizione, eseguire il cmdlet Get-AzureRmNetworkSecurityGroup.

Risultato previsto:

Name                 : NSG-BackEnd
ResourceGroupName    : RG-NSG
Location             : westus
Id                   : /subscriptions/[Subscription Id]/resourceGroups/RG-NSG/providers/
                       Microsoft.Network/networkSecurityGroups/NSG-BackEnd
Etag                 : W/"[Id]"
ResourceGuid         : [Id]
ProvisioningState    : Succeeded
Tags                 :                            
SecurityRules        : [...]
DefaultSecurityRules : [...]
NetworkInterfaces    : [...]
Subnets              : [...]

Name                 : NSG-FrontEnd
ResourceGroupName    : RG-NSG
Location             : eastus
Id                   : /subscriptions/[Subscription Id]/resourceGroups/NRP-RG/providers/
                       Microsoft.Network/networkSecurityGroups/NSG-FrontEnd
Etag                 : W/"[Id]"
ResourceGuid         : [Id]
ProvisioningState    : Succeeded
Tags                 : 
SecurityRules        : [...]
DefaultSecurityRules : [...]
NetworkInterfaces    : [...]
Subnets              : [...]

Name                 : WEB1
ResourceGroupName    : RG101
Location             : eastus2
Id                   : /subscriptions/[Subscription Id]/resourceGroups/RG101/providers/M
                       icrosoft.Network/networkSecurityGroups/WEB1
Etag                 : W/"[Id]"
ResourceGuid         : [Id]
ProvisioningState    : Succeeded
Tags                 : 
SecurityRules        : [...]
DefaultSecurityRules : [...]
NetworkInterfaces    : [...]
Subnets              : [...]

Per visualizzare l'elenco di NSG in un gruppo di risorse specifico, eseguire il cmdlet Get-AzureRmNetworkSecurityGroup.

Output previsto:

Name                 : NSG-BackEnd
ResourceGroupName    : RG-NSG
Location             : westus
Id                   : /subscriptions/[Subscription Id]/resourceGroups/RG-NSG/providers/
                       Microsoft.Network/networkSecurityGroups/NSG-BackEnd
Etag                 : W/"[Id]"
ResourceGuid         : [Id]
ProvisioningState    : Succeeded
Tags                 :                            
SecurityRules        : [...]
DefaultSecurityRules : [...]
NetworkInterfaces    : [...]
Subnets              : [...]

Name                 : NSG-FrontEnd
ResourceGroupName    : RG-NSG
Location             : eastus
Id                   : /subscriptions/[Subscription Id]/resourceGroups/NRP-RG/providers/
                       Microsoft.Network/networkSecurityGroups/NSG-FrontEnd
Etag                 : W/"[Id]"
ResourceGuid         : [Id]
ProvisioningState    : Succeeded
Tags                 : 
SecurityRules        : [...]
DefaultSecurityRules : [...]
NetworkInterfaces    : [...]
Subnets              : [...]

Elencare tutte le regole per un NSG

Per visualizzare le regole di un NSG denominato NSG-FrontEnd, immettere il comando seguente:

Get-AzureRmNetworkSecurityGroup -ResourceGroupName RG-NSG -Name NSG-FrontEnd | Select SecurityRules -ExpandProperty SecurityRules

Output previsto:

Name                     : rdp-rule
Id                       : /subscriptions/[Subscription Id]/resourceGroups/RG-NSG/providers/                           Microsoft.Network/networkSecurityGroups/NSG-FrontEnd/securityRules/rdp-rule
Etag                     : W/"[Id]"
ProvisioningState        : Succeeded
Description              : Allow RDP
Protocol                 : Tcp
SourcePortRange          : *
DestinationPortRange     : 3389
SourceAddressPrefix      : Internet
DestinationAddressPrefix : *
Access                   : Allow
Priority                 : 100
Direction                : Inbound

Name                     : web-rule
Id                       : /subscriptions/[Subscription Id]/resourceGroups/RG-NSG/providers/                           Microsoft.Network/networkSecurityGroups/NSG-FrontEnd/securityRules/web-rule
Etag                     : W/"[Id]"
ProvisioningState        : Succeeded
Description              : Allow HTTP
Protocol                 : Tcp
SourcePortRange          : *
DestinationPortRange     : 80
SourceAddressPrefix      : Internet
DestinationAddressPrefix : *
Access                   : Allow
Priority                 : 101
Direction                : Inbound
Nota

Per elencare le regole predefinite dell'NSG NSG-FrontEnd, è anche possibile usare Get-AzureRmNetworkSecurityGroup -ResourceGroupName RG-NSG -Name "NSG-FrontEnd" | Select DefaultSecurityRules -ExpandProperty DefaultSecurityRules.

Visualizzare le associazioni di NSG

Per visualizzare le risorse a cui l'NSG NSG-FrontEnd è associato, eseguire il comando seguente:

Get-AzureRmNetworkSecurityGroup -ResourceGroupName RG-NSG -Name NSG-FrontEnd

Cercare le proprietà NetworkInterfaces e Subnets come illustrato di seguito:

NetworkInterfaces    : []
Subnets              : [
                         {
                           "Id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/RG-NSG/providers/Microsoft.Network/virtualNetworks/TestVNet/subnets/FrontEnd",
                           "IpConfigurations": []
                         }
                       ]

Nell'esempio precedente, l'NSG non è associato ad alcuna interfaccia di rete (NIC), ma è associato a una subnet denominata FrontEnd.

Gestire le regole

È possibile aggiungere regole a un NSG esistente, modificare le regole esistenti e rimuovere regole.

Aggiungere una regola

Per aggiungere una regola che consenta il traffico in ingresso alla porta 443 da qualsiasi computer all'NSG NSG-FrontEnd, seguire questa procedura:

  1. Eseguire il comando seguente per recuperare l'NSG esistente e archiviarlo in una variabile:

    $nsg = Get-AzureRmNetworkSecurityGroup -ResourceGroupName RG-NSG -Name NSG-FrontEnd
    
  2. Eseguire il comando seguente per aggiungere una regola all'NSG:

    Add-AzureRmNetworkSecurityRuleConfig -NetworkSecurityGroup $nsg `
    -Name https-rule `
    -Description "Allow HTTPS" `
    -Access Allow `
    -Protocol Tcp `
    -Direction Inbound `
    -Priority 102 `
    -SourceAddressPrefix * `
    -SourcePortRange * `
    -DestinationAddressPrefix * `
    -DestinationPortRange 443
    
  3. Per salvare le modifiche apportate all'NSG, eseguire il comando seguente:

    Set-AzureRmNetworkSecurityGroup -NetworkSecurityGroup $nsg
    

    Output previsto che mostra solo le regole di sicurezza:

     Name                 : NSG-FrontEnd
     ...
     SecurityRules        : [
                              {
                                "Name": "rdp-rule",
                                ...
                              },
                              {
                                "Name": "web-rule",
                                ...
                              },
                              {
                                "Name": "https-rule",
                                "Etag": "W/\"[Id]\"",
                                "Id": "/subscriptions/[Subscription Id]/resourceGroups/RG-NSG/providers/Microsoft.Network/networkSecurityGroups/NSG-FrontEnd/securityRules/https-rule",
                                "Description": "Allow HTTPS",
                                "Protocol": "Tcp",
                                "SourcePortRange": "*",
                                "DestinationPortRange": "443",
                                "SourceAddressPrefix": "*",
                                "DestinationAddressPrefix": "*",
                                "Access": "Allow",
                                "Priority": 102,
                                "Direction": "Inbound",
                                "ProvisioningState": "Succeeded"
                              }
                            ]
    

Modificare una regola

Per modificare la regola creata in precedenza per consentire traffico in ingresso solo da Internet , attenersi alla procedura seguente.

  1. Eseguire il comando seguente per recuperare l'NSG esistente e archiviarlo in una variabile:

    $nsg = Get-AzureRmNetworkSecurityGroup -ResourceGroupName RG-NSG -Name NSG-FrontEnd
    
  2. Eseguire il comando seguente con le nuove impostazioni di regola:

    Set-AzureRmNetworkSecurityRuleConfig -NetworkSecurityGroup $nsg `
    -Name https-rule `
    -Description "Allow HTTPS" `
    -Access Allow `
    -Protocol Tcp `
    -Direction Inbound `
    -Priority 102 `
    -SourceAddressPrefix Internet `
    -SourcePortRange * `
    -DestinationAddressPrefix * `
    -DestinationPortRange 443
    
  3. Per salvare le modifiche apportate all'NSG, eseguire il comando seguente:

    Set-AzureRmNetworkSecurityGroup -NetworkSecurityGroup $nsg
    

    Output previsto che mostra solo le regole di sicurezza:

     Name                 : NSG-FrontEnd
     ...
     SecurityRules        : [
                              {
                                "Name": "rdp-rule",
                                ...
                              },
                              {
                                "Name": "web-rule",
                                ...
                              },
                              {
                                "Name": "https-rule",
                                "Etag": "W/\"[Id]\"",
                                "Id": "/subscriptions/[Subscription Id]/resourceGroups/RG-NSG/providers/Microsoft.Network/networkSecurityGroups/NSG-FrontEnd/securityRules/https-rule",
                                "Description": "Allow HTTPS",
                                "Protocol": "Tcp",
                                "SourcePortRange": "*",
                                "DestinationPortRange": "443",
                                "SourceAddressPrefix": "Internet",
                                "DestinationAddressPrefix": "*",
                                "Access": "Allow",
                                "Priority": 102,
                                "Direction": "Inbound",
                                "ProvisioningState": "Succeeded"
                              }
                            ]
    

Eliminare una regola

  1. Eseguire il comando seguente per recuperare l'NSG esistente e archiviarlo in una variabile:

    $nsg = Get-AzureRmNetworkSecurityGroup -ResourceGroupName RG-NSG -Name NSG-FrontEnd
    
  2. Eseguire il comando seguente per rimuovere la regola dall'NSG:

    Remove-AzureRmNetworkSecurityRuleConfig -NetworkSecurityGroup $nsg -Name https-rule
    
  3. Per salvare le modifiche apportate all'NSG, eseguire il comando seguente:

    Set-AzureRmNetworkSecurityGroup -NetworkSecurityGroup $nsg
    

    Output previsto che mostra solo le regole di sicurezza. Si noti che https-rule non è più presente:

     Name                 : NSG-FrontEnd
     ...
     SecurityRules        : [
                              {
                                "Name": "rdp-rule",
                                ...
                              },
                              {
                                "Name": "web-rule",
                                ...
                              }
                            ]
    

Gestire le associazioni

È possibile associare un NSG a subnet e schede di interfaccia di rete. È anche possibile annullare l'associazione tra un NSG e qualsiasi risorsa a cui è associato.

Associare un NSG a una NIC

Per associare l'NSG NSG-FrontEnd alla NIC TestNICWeb1, seguire questa procedura:

  1. Eseguire il comando seguente per recuperare l'NSG esistente e archiviarlo in una variabile:

    $nsg = Get-AzureRmNetworkSecurityGroup -ResourceGroupName RG-NSG -Name NSG-FrontEnd
    
  2. Eseguire il comando seguente per recuperare la NIC esistente e archiviarla in una variabile:

    $nic = Get-AzureRmNetworkInterface -ResourceGroupName RG-NSG -Name TestNICWeb1
    
  3. Impostare la proprietà NetworkSecurityGroup della variabile NIC sul valore della variabile NSG immettendo il comando seguente:

    $nic.NetworkSecurityGroup = $nsg
    
  4. Per salvare le modifiche apportate alla NIC, eseguire il comando seguente:

    Set-AzureRmNetworkInterface -NetworkInterface $nic
    

    Output previsto che mostra solo la proprietà NetworkSecurityGroup :

     NetworkSecurityGroup : {
                              "SecurityRules": [],
                              "DefaultSecurityRules": [],
                              "NetworkInterfaces": [],
                              "Subnets": [],
                              "Id": "/subscriptions/[Subscription Id]/resourceGroups/RG-NSG/providers/Microsoft.Network/networkSecurityGroups/NSG-FrontEnd"
                            }
    

Annullare l'associazione tra un NSG e una NIC

Per annullare l'associazione tra l'NSG NSG-FrontEnd e la NIC TestNICWeb1, seguire questa procedura:

  1. Eseguire il comando seguente per recuperare la NIC esistente e archiviarla in una variabile:

    $nic = Get-AzureRmNetworkInterface -ResourceGroupName RG-NSG -Name TestNICWeb1
    
  2. Impostare la proprietà NetworkSecurityGroup della variabile NIC su $null eseguendo il comando seguente:

    $nic.NetworkSecurityGroup = $null
    
  3. Per salvare le modifiche apportate alla NIC, eseguire il comando seguente:

    Set-AzureRmNetworkInterface -NetworkInterface $nic
    

    Output previsto che mostra solo la proprietà NetworkSecurityGroup :

     NetworkSecurityGroup : null
    

Annullare l'associazione tra un NSG e una subnet

Per annullare l'associazione tra l'NSG NSG-FrontEnd e la subnet FrontEnd, seguire questa procedura:

  1. Eseguire il comando seguente per recuperare la rete virtuale esistente e archiviarla in una variabile:

    $vnet = Get-AzureRmVirtualNetwork -ResourceGroupName RG-NSG -Name TestVNet
    
  2. Eseguire il comando seguente per recuperare la subnet FrontEnd e archiviarla in una variabile:

    $subnet = Get-AzureRmVirtualNetworkSubnetConfig -VirtualNetwork $vnet -Name FrontEnd
    
  3. Impostare la proprietà NetworkSecurityGroup della variabile subnet su $null immettendo il comando seguente:

    $subnet.NetworkSecurityGroup = $null
    
  4. Per salvare le modifiche apportate alla subnet, eseguire il comando seguente:

    Set-AzureRmVirtualNetwork -VirtualNetwork $vnet
    

    Output previsto che mostra solo le proprietà della subnet FrontEnd . Si noti che non esiste una proprietà per NetworkSecurityGroup:

         ...
         Subnets           : [
                               {
                                 "Name": "FrontEnd",
                                 "Etag": "W/\"[Id]\"",
                                 "Id": "/subscriptions/[Subscription Id]/resourceGroups/RG-NSG/providers/Microsoft.Network/virtualNetworks/TestVNet/subnets/FrontEnd",
                                 "AddressPrefix": "192.168.1.0/24",
                                 "IpConfigurations": [
                                   {
                                     "Id": "/subscriptions/[Subscription Id]/resourceGroups/RG-NSG/providers/Microsoft.Network/networkInterfaces/TestNICWeb2/ipConfigurations/ipconfig1"
                                   },
                                   {
                                     "Id": "/subscriptions/[Subscription Id]/resourceGroups/RG-NSG/providers/Microsoft.Network/networkInterfaces/TestNICWeb1/ipConfigurations/ipconfig1"
                                   }
                                 ],
                                 "ProvisioningState": "Succeeded"
                               },
                                 ...
                             ]
    

Associare un gruppo di sicurezza di rete a una subnet

Per associare di nuovo l'NSG NSG-FrontEnd alla subnet FronEnd, seguire questa procedura:

  1. Eseguire il comando seguente per recuperare la rete virtuale esistente e archiviarla in una variabile:

    $vnet = Get-AzureRmVirtualNetwork -ResourceGroupName RG-NSG -Name TestVNet
    
  2. Eseguire il comando seguente per recuperare la subnet FrontEnd e archiviarla in una variabile:

    $subnet = Get-AzureRmVirtualNetworkSubnetConfig -VirtualNetwork $vnet -Name FrontEnd
    
  3. Eseguire il comando seguente per recuperare l'NSG esistente e archiviarlo in una variabile:

    $nsg = Get-AzureRmNetworkSecurityGroup -ResourceGroupName RG-NSG -Name NSG-FrontEnd
    
  4. Impostare la proprietà NetworkSecurityGroup della variabile subnet su $null eseguendo il comando seguente:

    $subnet.NetworkSecurityGroup = $nsg
    
  5. Per salvare le modifiche apportate alla subnet, eseguire il comando seguente:

    Set-AzureRmVirtualNetwork -VirtualNetwork $vnet
    

    Output previsto che mostra solo la proprietà NetworkSecurityGroup della subnet FrontEnd:

     ...
     "NetworkSecurityGroup": {
                               "SecurityRules": [],
                               "DefaultSecurityRules": [],
                               "NetworkInterfaces": [],
                               "Subnets": [],
                               "Id": "/subscriptions/[Subscription Id]/resourceGroups/RG-NSG/providers/Microsoft.Network/networkSecurityGroups/NSG-FrontEnd"
                             }
     ...
    

Eliminare un gruppo di sicurezza di rete

È possibile eliminare un NSG solo se non è associato ad alcuna risorsa. Per eliminare un NSG, seguire questa procedura.

  1. Per controllare le risorse associate a un NSG, eseguire azure network nsg show come illustrato in Visualizzare le associazioni di NSG.
  2. Se l'NSG è associato a una o più NIC, eseguire azure network nic set come illustrato in Annullare l'associazione tra un NSG e una NIC per ognuna delle NIC.
  3. Se l'NSG è associato a una o più subnet, eseguire azure network vnet subnet set come illustrato in Annullare l'associazione tra un NSG e una subnet per ognuna delle subnet.
  4. Per eliminare l'NSG, eseguire il comando seguente:

    Remove-AzureRmNetworkSecurityGroup -ResourceGroupName RG-NSG -Name NSG-FrontEnd -Force
    
    Nota

    Il parametro -Force fa in modo che non sia necessario confermare l'eliminazione.

Passaggi successivi