Creare gruppi di sicurezza di rete mediante PowerShellCreate network security groups using PowerShell

È possibile usare un gruppo di sicurezza di rete per controllare il traffico verso una o più istanze di macchina virtuale, le istanze del ruolo, le schede di rete (NIC) o i subnet in una rete virtuale.You can use an NSG to control traffic to one or more virtual machines (VMs), role instances, network adapters (NICs), or subnets in your virtual network. Un NSG contiene le regole di controllo di accesso che consentono o negano il traffico in base alla direzione del traffico, al protocollo, all’indirizzo e alla porta di origine e all’indirizzo e alla porta di destinazione.An NSG contains access control rules that allow or deny traffic based on traffic direction, protocol, source address and port, and destination address and port. Le regole di un gruppo di sicurezza di rete possono essere modificate in qualsiasi momento e le modifiche vengono applicate a tutte le istanze associate.The rules of an NSG can be changed at any time, and changes are applied to all associated instances.

Per ulteriori informazioni su NSGs, visitare Informazioni su NSG.For more information about NSGs, visit what is an NSG.

Azure offre due modelli di distribuzione, ovvero Azure Resource Manager e la distribuzione classica.Azure has two deployment models: Azure Resource Manager and classic. Microsoft consiglia di creare le risorse tramite il modello di distribuzione Resource Manager.Microsoft recommends creating resources through the Resource Manager deployment model. Per altre informazioni sulle differenze tra i due modelli, leggere l'articolo Understand Azure deployment models (Informazioni sui modelli di distribuzione di Azure).To learn more about the differences between the two models, read the Understand Azure deployment models article. Questo articolo illustra il modello di distribuzione Gestione risorse.This article covers the Resource Manager deployment model. È anche possibile creare gruppi di sicurezza di rete con il modello di distribuzione classica.You can also create NSGs in the classic deployment model.

ScenarioScenario

Per illustrare meglio come creare un NSG, in questo documento verrà utilizzato lo scenario seguente.To better illustrate how to create NSGs, this document will use the scenario below.

Scenario di una rete virtuale

In questo scenario si creerà un NSG per ogni subnet nella rete virtuale TestVNet , come illustrato di seguito:In this scenario you will create an NSG for each subnet in the TestVNet virtual network, as described below:

  • NSG-FrontEnd.NSG-FrontEnd. Il front-end NSG verrà applicato per il subnet front-end , e contiene due regole:The front end NSG will be applied to the FrontEnd subnet, and contain two rules:
    • regola-rdp.rdp-rule. Questa regola consente il traffico RDP verso il subnet front-end .This rule will allow RDP traffic to the FrontEnd subnet.
    • regola-web.web-rule. Questa regola consente il traffico HTTP verso il subnet front-end .This rule will allow HTTP traffic to the FrontEnd subnet.
  • Back-end di NSG.NSG-BackEnd. Il back-end NSG verrà applicato per il subnet back-end , e contiene due regole:The back end NSG will be applied to the BackEnd subnet, and contain two rules:
    • regola sql.sql-rule. Questa regola consente il traffico SQL solo dal subnet front-end .This rule allows SQL traffic only from the FrontEnd subnet.
    • regola-web.web-rule. Questa regola nega tutto il traffico associato ad internet proveniente dal subnet back-end .This rule denies all internet bound traffic from the BackEnd subnet.

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 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.The combination of these rules create a DMZ-like scenario, where the back end subnet can only receive incoming traffic for SQL from the front end subnet, and has no access to the Internet, while the front end subnet can communicate with the Internet, and receive incoming HTTP requests only.

I comandi di esempio PowerShell riportati di seguito prevedono un ambiente semplice già creato in base allo scenario precedente.The sample PowerShell commands below expect a simple environment already created based on the scenario above. Se si desidera eseguire i comandi così come sono visualizzati in questo documento, creare innanzitutto l'ambiente di test distribuendo questo modello, fare clic su Distribuisci in Azure, sostituire i valori di parametro predefiniti, se necessario e seguire le istruzioni nel portale.If you want to run the commands as they are displayed in this document, first build the test environment by deploying this template, click Deploy to Azure, replace the default parameter values if necessary, and follow the instructions in the portal.

Come creare il gruppo di sicurezza di rete per la subnet front-endHow to create the NSG for the front end subnet

Per creare un gruppo di sicurezza di rete denominato NSG-FrontEnd in base allo scenario, seguire la procedura riportata di seguito:To create an NSG named NSG-FrontEnd based on the scenario, complete the following steps:

  1. Se è la prima volta che si utilizza Azure PowerShell, vedere Come installare e configurare Azure PowerShell e seguire le istruzioni fino al termine della procedura per accedere ad Azure e selezionare la sottoscrizione desiderata.If you have never used Azure PowerShell, see How to Install and Configure Azure PowerShell and follow the instructions all the way to the end to sign into Azure and select your subscription.
  2. Creare una regola di sicurezza che consente l'accesso alla porta 3389 da Internet.Create a security rule allowing access from the Internet to port 3389.

    $rule1 = New-AzureRmNetworkSecurityRuleConfig -Name rdp-rule -Description "Allow RDP" `
    -Access Allow -Protocol Tcp -Direction Inbound -Priority 100 `
    -SourceAddressPrefix Internet -SourcePortRange * `
    -DestinationAddressPrefix * -DestinationPortRange 3389
    
  3. Creare una regola di sicurezza che consente l'accesso da Internet alla porta 80.Create a security rule allowing access from the Internet to port 80.

    $rule2 = New-AzureRmNetworkSecurityRuleConfig -Name web-rule -Description "Allow HTTP" `
    -Access Allow -Protocol Tcp -Direction Inbound -Priority 101 `
    -SourceAddressPrefix Internet -SourcePortRange * -DestinationAddressPrefix * `
    -DestinationPortRange 80
    
  4. Aggiungere le regole create in precedenza a un nuovo gruppo di sicurezza di rete denominato NSG-FrontEnd.Add the rules created above to a new NSG named NSG-FrontEnd.

    $nsg = New-AzureRmNetworkSecurityGroup -ResourceGroupName TestRG -Location westus `
    -Name "NSG-FrontEnd" -SecurityRules $rule1,$rule2
    
  5. Selezionare le regole create nel gruppo di sicurezza di rete digitando:Check the rules created in the NSG by typing the following:

    $nsg
    

    L'output che mostra solo le regole di sicurezza:Output showing just the security rules:

     SecurityRules        : [
                              {
                                "Name": "rdp-rule",
                                "Etag": "W/\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"",
                                "Id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/TestRG/providers/Microsoft.Network/networkSecurityGroups/NSG-FrontEnd/securityRules/rdp-rule",
                                "Description": "Allow RDP",
                                "Protocol": "Tcp",
                                "SourcePortRange": "*",
                                "DestinationPortRange": "3389",
                                "SourceAddressPrefix": "Internet",
                                "DestinationAddressPrefix": "*",
                                "Access": "Allow",
                                "Priority": 100,
                                "Direction": "Inbound",
                                "ProvisioningState": "Succeeded"
                              },
                              {
                                "Name": "web-rule",
                                "Etag": "W/\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"",
                                "Id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/TestRG/providers/Microsoft.Network/networkSecurityGroups/NSG-FrontEnd/securityRules/web-rule",
                                "Description": "Allow HTTP",
                                "Protocol": "Tcp",
                                "SourcePortRange": "*",
                                "DestinationPortRange": "80",
                                "SourceAddressPrefix": "Internet",
                                "DestinationAddressPrefix": "*",
                                "Access": "Allow",
                                "Priority": 101,
                                "Direction": "Inbound",
                                "ProvisioningState": "Succeeded"
                              }
                            ]
    
  6. Associare il gruppo di sicurezza di rete creato in precedenza per la subnet front-end .Associate the NSG created above to the FrontEnd subnet.

    $vnet = Get-AzureRmVirtualNetwork -ResourceGroupName TestRG -Name TestVNet
    Set-AzureRmVirtualNetworkSubnetConfig -VirtualNetwork $vnet -Name FrontEnd `
    -AddressPrefix 192.168.1.0/24 -NetworkSecurityGroup $nsg
    

    Output che mostra solo le impostazioni della subnet FrontEnd , notare il valore per la proprietà NetworkSecurityGroup :Output showing only the FrontEnd subnet settings, notice the value for the NetworkSecurityGroup property:

                 Subnets           : [
                                       {
                                         "Name": "FrontEnd",
                                         "Etag": "W/\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"",
                                         "Id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/TestRG/providers/Microsoft.Network/virtualNetworks/TestVNet/subnets/FrontEnd",
                                         "AddressPrefix": "192.168.1.0/24",
                                         "IpConfigurations": [
                                           {
                                             "Id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/TestRG/providers/Microsoft.Network/networkInterfaces/TestNICWeb2/ipConfigurations/ipconfig1"
                                           },
                                           {
                                             "Id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/TestRG/providers/Microsoft.Network/networkInterfaces/TestNICWeb1/ipConfigurations/ipconfig1"
                                           }
                                         ],
                                         "NetworkSecurityGroup": {
                                           "Id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/TestRG/providers/Microsoft.Network/networkSecurityGroups/NSG-FrontEnd"
                                         },
                                         "RouteTable": null,
                                         "ProvisioningState": "Succeeded"
                                       }
    

    Avviso

    L'output per il comando precedente mostra il contenuto per l'oggetto di configurazione della rete virtuale, che esiste solo nei computer in cui si esegue PowerShell.The output for the command above shows the content for the virtual network configuration object, which only exists on the computer where you are running PowerShell. È necessario eseguire il cmdlet Set-AzureRmVirtualNetwork per salvare queste impostazioni in Azure.You need to run the Set-AzureRmVirtualNetwork cmdlet to save these settings to Azure.

  7. Salvare le nuove impostazioni di rete virtuale in Azure.Save the new VNet settings to Azure.

    Set-AzureRmVirtualNetwork -VirtualNetwork $vnet
    

    L'output che mostra solo la parte NSG:Output showing just the NSG portion:

     "NetworkSecurityGroup": {
       "Id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/TestRG/providers/Microsoft.Network/networkSecurityGroups/NSG-FrontEnd"
     }
    

Come creare il gruppo di sicurezza di rete per la subnet back-endHow to create the NSG for the back-end subnet

Per creare un gruppo di sicurezza di rete denominato NSG-BackEnd in base allo scenario precedente, seguire questa procedura:To create an NSG named NSG-BackEnd based on the scenario above, complete the following steps:

  1. Creare una regola di sicurezza che consente l'accesso dalla subnet front-end per la porta 1433 (porta predefinita usata da SQL Server).Create a security rule allowing access from the front-end subnet to port 1433 (default port used by SQL Server).

    $rule1 = New-AzureRmNetworkSecurityRuleConfig -Name frontend-rule `
    -Description "Allow FE subnet" `
    -Access Allow -Protocol Tcp -Direction Inbound -Priority 100 `
    -SourceAddressPrefix 192.168.1.0/24 -SourcePortRange * `
    -DestinationAddressPrefix * -DestinationPortRange 1433
    
  2. Creare una regola di sicurezza che blocca l'accesso a Internet.Create a security rule blocking access to the Internet.

    $rule2 = New-AzureRmNetworkSecurityRuleConfig -Name web-rule `
    -Description "Block Internet" `
    -Access Deny -Protocol * -Direction Outbound -Priority 200 `
    -SourceAddressPrefix * -SourcePortRange * `
    -DestinationAddressPrefix Internet -DestinationPortRange *
    
  3. Aggiungere le regole create in precedenza a un nuovo gruppo di sicurezza di rete denominato NSG-BackEnd.Add the rules created above to a new NSG named NSG-BackEnd.

    $nsg = New-AzureRmNetworkSecurityGroup -ResourceGroupName TestRG `
    -Location westus -Name "NSG-BackEnd" `
    -SecurityRules $rule1,$rule2
    
  4. Associare il gruppo di sicurezza di rete creato in precedenza per la subnet BackEnd .Associate the NSG created above to the BackEnd subnet.

    Set-AzureRmVirtualNetworkSubnetConfig -VirtualNetwork $vnet -Name BackEnd ` 
    -AddressPrefix 192.168.2.0/24 -NetworkSecurityGroup $nsg
    

    Output che mostra solo le impostazioni della subnet BackEnd , notare il valore per la proprietà NetworkSecurityGroup :Output showing only the BackEnd subnet settings, notice the value for the NetworkSecurityGroup property:

     Subnets           : [
                   {
                     "Name": "BackEnd",
                     "Etag": "W/\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"",
                     "Id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/TestRG/providers/Microsoft.Network/virtualNetworks/TestVNet/subnets/BackEnd",
                     "AddressPrefix": "192.168.2.0/24",
                     "IpConfigurations": [...],
                     "NetworkSecurityGroup": {
                       "Id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/TestRG/providers/Microsoft.Network/networkSecurityGroups/NSG-BackEnd"
                     },
                     "RouteTable": null,
                     "ProvisioningState": "Succeeded"
                   }
    
  5. Salvare le nuove impostazioni di rete virtuale in Azure.Save the new VNet settings to Azure.

    Set-AzureRmVirtualNetwork -VirtualNetwork $vnet
    

Come rimuovere un gruppo di sicurezza di reteHow to remove an NSG

Per eliminare un gruppo di sicurezza di rete esistente, denominato NSG-Frontend in questo caso, attenersi a questa procedura:To delete an existing NSG, called NSG-Frontend in this case, follow the step below:

Eseguire il comando Remove- AzureRmNetworkSecurityGroup illustrato di seguito e assicurarsi di includere il gruppo di risorse in cui si trova il gruppo di sicurezza di rete.Run the Remove-AzureRmNetworkSecurityGroup shown below and be sure to include the resource group the NSG is in.

Remove-AzureRmNetworkSecurityGroup -Name "NSG-FrontEnd" -ResourceGroupName "TestRG"