Creare gruppi di sicurezza di rete mediante il modello di Azure Resource ManagerCreate network security groups using an Azure Resource Manager template

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

Importante

Prima di iniziare a usare le risorse di Azure, è importante comprendere che Azure al momento offre due modelli di distribuzione, la distribuzione classica e Azure Resource Manager.Before you work with Azure resources, it's important to understand that Azure currently has two deployment models: Azure Resource Manager and classic. È importante comprendere i modelli e strumenti di distribuzione prima di lavorare con le risorse di Azure.Make sure you understand deployment models and tools before you work with any Azure resource. È possibile visualizzare la documentazione relativa a diversi strumenti facendo clic sulle schede nella parte superiore di questo articolo.You can view the documentation for different tools by clicking the tabs at the top of this 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.

Risorse NSG in un file di modelloNSG resources in a template file

È possibile visualizzare e scaricare il modello di esempio.You can view and download the sample template.

La sezione seguente illustra la definizione di gruppo di sicurezza di rete front-end in base allo scenario precedente.The following section shows the definition of the front-end NSG, based on the scenario.

"apiVersion": "2015-06-15",
"type": "Microsoft.Network/networkSecurityGroups",
"name": "[parameters('frontEndNSGName')]",
"location": "[resourceGroup().location]",
"tags": {
  "displayName": "NSG - Front End"
},
"properties": {
  "securityRules": [
    {
      "name": "rdp-rule",
      "properties": {
        "description": "Allow RDP",
        "protocol": "Tcp",
        "sourcePortRange": "*",
        "destinationPortRange": "3389",
        "sourceAddressPrefix": "Internet",
        "destinationAddressPrefix": "*",
        "access": "Allow",
        "priority": 100,
        "direction": "Inbound"
      }
    },
    {
      "name": "web-rule",
      "properties": {
        "description": "Allow WEB",
        "protocol": "Tcp",
        "sourcePortRange": "*",
        "destinationPortRange": "80",
        "sourceAddressPrefix": "Internet",
        "destinationAddressPrefix": "*",
        "access": "Allow",
        "priority": 101,
        "direction": "Inbound"
      }
    }
  ]
}

Per associare il gruppo di sicurezza di rete alla subnet front-end, è necessario modificare la definizione della subnet nel modello e usare l'id di riferimento per il gruppo di sicurezza di rete.To associate the NSG to the front-end subnet, you have to change the subnet definition in the template, and use the reference id for the NSG.

"subnets": [
  {
    "name": "[parameters('frontEndSubnetName')]",
    "properties": {
      "addressPrefix": "[parameters('frontEndSubnetPrefix')]",
      "networkSecurityGroup": {
      "id": "[resourceId('Microsoft.Network/networkSecurityGroups', parameters('frontEndNSGName'))]"
      }
    }
  }, 

Si noti che va effettuata la stessa operazione per il gruppo di sicurezza di rete back-end e la subnet back-end nel modello.Notice the same being done for the back-end NSG and the back-end subnet in the template.

Distribuire il modello ARM tramite clic per la distribuzioneDeploy the ARM template by using click to deploy

Il modello di esempio disponibile nel repository pubblico usa un file di parametro che contiene i valori predefiniti usati per generare lo scenario descritto in precedenza.The sample template available in the public repository uses a parameter file containing the default values used to generate the scenario described above. Distribuire questo modellotramite clic per la distribuzione, fare clic su Distribuisci in Azure, sostituire i valori del parametro predefinito se necessario e seguire le istruzioni nel portale.To deploy this template using click to deploy, follow this link, click Deploy to Azure, replace the default parameter values if necessary, and follow the instructions in the portal.

Distribuire il modello ARM tramite PowerShellDeploy the ARM template by using PowerShell

Per distribuire il modello ARM scaricato tramite PowerShell, attenersi alla procedura seguente.To deploy the ARM template you downloaded by using PowerShell, follow the steps below.

  1. Se si usa Azure PowerShell per la prima volta, vedere How to Install and Configure Azure PowerShell (Come installare e configurare Azure PowerShell) per l'installazione e la configurazione.If you have never used Azure PowerShell, follow the instructions in the How to Install and Configure Azure PowerShell to install and configure it.
  2. Eseguire il cmdlet New-AzureRmResourceGroup per creare un gruppo di risorse usando il modello.Run the New-AzureRmResourceGroup cmdlet to create a resource group using the template.

    New-AzureRmResourceGroup -Name TestRG -Location uswest `
    -TemplateFile 'https://raw.githubusercontent.com/telmosampaio/azure-templates/master/201-IaaS-WebFrontEnd-SQLBackEnd/azuredeploy.json' `
    -TemplateParameterFile 'https://raw.githubusercontent.com/telmosampaio/azure-templates/master/201-IaaS-WebFrontEnd-SQLBackEnd/azuredeploy.parameters.json'
    

    Output previsto:Expected output:

     ResourceGroupName : TestRG
     Location          : westus
     ProvisioningState : Succeeded
     Tags              :
     Permissions       :
                         Actions  NotActions
                         =======  ==========
                         *                  
    
     Resources         :
                         Name                Type                                     Location
                         ==================  =======================================  ========
                         sqlAvSet            Microsoft.Compute/availabilitySets       westus  
                         webAvSet            Microsoft.Compute/availabilitySets       westus  
                         SQL1                Microsoft.Compute/virtualMachines        westus  
                         SQL2                Microsoft.Compute/virtualMachines        westus  
                         Web1                Microsoft.Compute/virtualMachines        westus  
                         Web2                Microsoft.Compute/virtualMachines        westus  
                         TestNICSQL1         Microsoft.Network/networkInterfaces      westus  
                         TestNICSQL2         Microsoft.Network/networkInterfaces      westus  
                         TestNICWeb1         Microsoft.Network/networkInterfaces      westus  
                         TestNICWeb2         Microsoft.Network/networkInterfaces      westus  
                         NSG-BackEnd         Microsoft.Network/networkSecurityGroups  westus  
                         NSG-FrontEnd        Microsoft.Network/networkSecurityGroups  westus  
                         TestPIPSQL1         Microsoft.Network/publicIPAddresses      westus  
                         TestPIPSQL2         Microsoft.Network/publicIPAddresses      westus  
                         TestPIPWeb1         Microsoft.Network/publicIPAddresses      westus  
                         TestPIPWeb2         Microsoft.Network/publicIPAddresses      westus  
                         TestVNet            Microsoft.Network/virtualNetworks        westus  
                         testvnetstorageprm  Microsoft.Storage/storageAccounts        westus  
                         testvnetstoragestd  Microsoft.Storage/storageAccounts        westus  
    
     ResourceId        : /subscriptions/[Subscription Id]/resourceGroups/TestRG
    

Distribuire il modello ARM tramite l'interfaccia della riga di comando di AzureDeploy the ARM template by using the Azure CLI

Per distribuire il modello ARM tramite l'interfaccia della riga di comando di Azure, seguire la procedura di seguito.To deploy the ARM template by using the Azure CLI, follow the steps below.

  1. Se l'interfaccia della riga di comando di Azure non è mai stata usata, vedere Installare e configurare l'interfaccia della riga di comando di Azure e seguire le istruzioni fino al punto in cui si selezionano l'account e la sottoscrizione di Azure.If you have never used Azure CLI, see Install and Configure the Azure CLI and follow the instructions up to the point where you select your Azure account and subscription.
  2. Eseguire il comando azure config mode per passare alla modalità Gestione risorse, come illustrato di seguito.Run the azure config mode command to switch to Resource Manager mode, as shown below.

    azure config mode arm
    

    Di seguito è riportato l'output previsto per il comando:The following is the expected output for the command:

     info:    New mode is arm
    
  3. Eseguire il cmdlet azure group deployment create per distribuire la nuova rete virtuale usando il modello e i file dei parametri scaricati e modificati in precedenza.Run the azure group deployment create cmdlet to deploy the new VNet by using the template and parameter files you downloaded and modified above. Nell'elenco riportato dopo l'output sono indicati i parametri usati.The list shown after the output explains the parameters used.

    azure group create -n TestRG -l westus -f 'https://raw.githubusercontent.com/telmosampaio/azure-templates/master/201-IaaS-WebFrontEnd-SQLBackEnd/azuredeploy.json' -e 'https://raw.githubusercontent.com/telmosampaio/azure-templates/master/201-IaaS-WebFrontEnd-SQLBackEnd/azuredeploy.parameters.json'
    

    Output previsto:Expected output:

     info:    Executing command group create
     info:    Getting resource group TestRG
     info:    Creating resource group TestRG
     info:    Created resource group TestRG
     info:    Initializing template configurations and parameters
     info:    Creating a deployment
     info:    Created template deployment "azuredeploy"
     data:    Id:                  /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/TestRG
     data:    Name:                TestRG
     data:    Location:            westus
     data:    Provisioning State:  Succeeded
     data:    Tags: null
     data:    
     info:    group create command OK
    
    • -n (o --nome).-n (or --name). Nome del gruppo di risorse da creare.Name of the resource group to be created.
    • -l (o --location).-l (or --location). L'area di Azure in cui verrà creato il gruppo di risorse.Azure region where the resource group will be created.
    • -f (o --template-file).-f (or --template-file). Percorso del file di modello ARM.Path to your ARM template file.
    • -e (o --parameters-file).-e (or --parameters-file). Percorso del file di parametri ARM.Path to your ARM parameters file.