Creare gruppi di sicurezza di rete mediante il modello di Azure Resource Manager

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

Per ulteriori informazioni su NSGs, visitare Informazioni su 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. È importante comprendere i modelli e strumenti di distribuzione prima di lavorare con le risorse di Azure. È possibile visualizzare la documentazione relativa a diversi strumenti facendo clic sulle schede nella parte superiore di questo articolo.

Questo articolo illustra il modello di distribuzione Gestione risorse. È anche possibile creare gruppi di sicurezza di rete con il modello di distribuzione classica.

Scenario

Per illustrare meglio come creare un NSG, in questo documento verrà utilizzato 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 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.

Risorse NSG in un file di modello

È possibile visualizzare e scaricare il modello di esempio.

La sezione seguente illustra la definizione di gruppo di sicurezza di rete front-end in base allo scenario precedente.

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

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

Distribuire il modello ARM tramite clic per la distribuzione

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

Distribuire il modello ARM tramite PowerShell

Per distribuire il modello ARM scaricato tramite PowerShell, attenersi alla procedura seguente.

  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.
  2. Eseguire il cmdlet New-AzureRmResourceGroup per creare un gruppo di risorse usando il modello.

    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:

     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 Azure

Per distribuire il modello ARM tramite l'interfaccia della riga di comando di Azure, seguire la procedura di seguito.

  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.
  2. Eseguire il comando azure config mode per passare alla modalità Gestione risorse, come illustrato di seguito.

    azure config mode arm
    

    Di seguito è riportato l'output previsto per il comando:

     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. Nell'elenco riportato dopo l'output sono indicati i parametri usati.

    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:

     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). Nome del gruppo di risorse da creare.
    • -l (o --location). L'area di Azure in cui verrà creato il gruppo di risorse.
    • -f (o --template-file). Percorso del file di modello ARM.
    • -e (o --parameters-file). Percorso del file di parametri ARM.