Creare i gruppi di sicurezza di rete usando l'interfaccia della riga di comando di Azure 2.0

Versioni dell'interfaccia della riga di comando per completare l'attività

È possibile completare l'attività usando una delle versioni seguenti dell'interfaccia della riga di comando:

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

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.

I comandi di esempio dell'interfaccia della riga di comando di Azure 2.0 riportati di seguito prevedono un ambiente semplice già creato in base allo scenario precedente.

Creare il gruppo di sicurezza di rete per la subnet FrontEnd

Per creare un gruppo di sicurezza di rete denominato NSG-FrontEnd in base allo scenario precedente, seguire la procedura seguente:

  1. Se questa operazione non è stata ancora eseguita, installare e configurare l'interfaccia della riga di comando di Azure 2.0 e accedere a un account Azure usando il comando az login.

  2. Creare un gruppo di sicurezza di rete usando il comando azure network nsg create.

    az network nsg create \
    --resource-group testrg \
    --name NSG-FrontEnd \
    --location centralus 
    

    Parametri

    • --resource-group: nome del gruppo di risorse in cui viene creato il gruppo di sicurezza di rete. Per questo scenario, TestRG.
    • --location: area di Azure in cui viene creato il nuovo gruppo di sicurezza di rete. Per questo scenario, westus.
    • --name: nome per il nuovo gruppo di sicurezza di rete. Per questo scenario, NSG-FrontEnd.

      L'output previsto include svariate informazioni, tra cui un elenco di tutte le regole predefinite. L'esempio seguente mostra le regole predefinite usando un filtro di query JMESPATH con il formato di output table:

      az network nsg show \
      -g testrg \
      -n nsg-frontend \
      --query 'defaultSecurityRules[].{Access:access,Desc:description,DestPortRange:destinationPortRange,Direction:direction,Priority:priority}' \
      -o table
      

    Output:

     Access    Desc                                                    DestPortRange    Direction      Priority
    
     Allow     Allow inbound traffic from all VMs in VNET              *                Inbound           65000
     Allow     Allow inbound traffic from azure load balancer          *                Inbound           65001
     Deny      Deny all inbound traffic                                *                Inbound           65500
     Allow     Allow outbound traffic from all VMs to all VMs in VNET  *                Outbound          65000
     Allow     Allow outbound traffic from all VMs to Internet         *                Outbound          65001
     Deny      Deny all outbound traffic                               *                Outbound          65500
    
  3. Creare una regola che consenta l'accesso alla porta 3389 (RDP) da Internet con il comando azure network nsg rule create.

    Nota

    A seconda della shell in uso potrebbe essere necessario modificare il carattere * negli argomenti seguenti per non espandere l'argomento prima dell'esecuzione.

    az network nsg rule create \
    --resource-group testrg \
    --nsg-name NSG-FrontEnd \
    --name rdp-rule \
    --access Allow \
    --protocol Tcp \
    --direction Inbound \
    --priority 100 \
    --source-address-prefix Internet \
    --source-port-range "*" \
    --destination-address-prefix "*" \
    --destination-port-range 3389
    

    Output previsto:

    {
        "access": "Allow",
        "description": null,
        "destinationAddressPrefix": "*",
        "destinationPortRange": "3389",
        "direction": "Inbound",
        "etag": "W/\"<guid>\"",
        "id": "/subscriptions/<guid>/resourceGroups/testrg/providers/Microsoft.Network/networkSecurityGroups/NSG-FrontEnd/securityRules/rdp-rule",
        "name": "rdp-rule",
        "priority": 100,
        "protocol": "Tcp",
        "provisioningState": "Succeeded",
        "resourceGroup": "testrg",
        "sourceAddressPrefix": "Internet",
        "sourcePortRange": "*"
    }
    

    Parametri

    • --resource-group testrg: il gruppo di risorse da usare. Si noti che non fa distinzione tra maiuscole e minuscole.
    • --nsg-name NSG-FrontEnd: nome del gruppo di sicurezza di rete in cui viene creata la regola.
    • --name rdp-rule: nome per la nuova regola.
    • --access Allow: livello di accesso per la regola (Deny o Allow).
    • --protocol Tcp: protocollo (TCP, UDP o *).
    • --direction Inbound: direzione di connessione (Inbound o Outbound).
    • --priority 100: priorità per la regola.
    • --source-address-prefix Internet: prefisso dell'indirizzo di origine in CIDR o con tag predefiniti.
    • --source-port-range "*": porta o intervallo di porte di origine. Porta che ha aperto la connessione.
    • --destination-address-prefix "*": prefisso dell'indirizzo di destinazione in CIDR o con tag predefiniti.
    • --destination-port-range 3389: porta o intervallo di porte di destinazione. Porta che riceve la richiesta di connessione.
  4. Creare una regola consenta l'accesso alla porta 80 (HTTP) da Internet con il comando azure network nsg rule create.

    az network nsg rule create \
    --resource-group testrg \
    --nsg-name NSG-FrontEnd \
    --name web-rule \
    --access Allow \
    --protocol Tcp \
    --direction Inbound \
    --priority 200 \
    --source-address-prefix Internet \
    --source-port-range "*" \
    --destination-address-prefix "*" \
    --destination-port-range 80
    

    Output previsto:

    {
        "access": "Allow",
        "description": null,
        "destinationAddressPrefix": "*",
        "destinationPortRange": "80",
        "direction": "Inbound",
        "etag": "W/\"<guid>\"",
        "id": "/subscriptions/<guid>/resourceGroups/testrg/providers/Microsoft.Network/networkSecurityGroups/NSG-FrontEnd/securityRules/web-rule",
        "name": "web-rule",
        "priority": 200,
        "protocol": "Tcp",
        "provisioningState": "Succeeded",
        "resourceGroup": "testrg",
        "sourceAddressPrefix": "Internet",
        "sourcePortRange": "*"
    }
    
  5. Associare il gruppo di sicurezza di rete alla subnet FrontEnd con il comando az network vnet subnet update.

    az network vnet subnet update \
    --vnet-name TestVNET \
    --name FrontEnd \
    --resource-group testrg \
    --network-security-group NSG-FrontEnd
    

    Output previsto:

    {
        "addressPrefix": "192.168.1.0/24",
        "etag": "W/\"<guid>\"",
        "id": "/subscriptions/<guid>/resourceGroups/testrg/providers/Microsoft.Network/virtualNetworks/TestVNET/subnets/FrontEnd",
        "ipConfigurations": [
            {
            "etag": null,
            "id": "/subscriptions/<guid>/resourceGroups/TestRG/providers/Microsoft.Network/networkInterfaces/TestNIC/ipConfigurations/ipconfig1",
            "name": null,
            "privateIpAddress": null,
            "privateIpAllocationMethod": null,
            "provisioningState": null,
            "publicIpAddress": null,
            "resourceGroup": "TestRG",
            "subnet": null
            }
        ],
        "name": "FrontEnd",
        "networkSecurityGroup": {
            "defaultSecurityRules": null,
            "etag": null,
            "id": "/subscriptions/<guid>f/resourceGroups/testrg/providers/Microsoft.Network/networkSecurityGroups/NSG-FrontEnd",
            "location": null,
            "name": null,
            "networkInterfaces": null,
            "provisioningState": null,
            "resourceGroup": "testrg",
            "resourceGuid": null,
            "securityRules": null,
            "subnets": null,
            "tags": null,
            "type": null
        },
        "provisioningState": "Succeeded",
        "resourceGroup": "testrg",
        "resourceNavigationLinks": null,
        "routeTable": null
    }
    

Creare il gruppo di sicurezza di rete per la subnet BackEnd

Per creare un gruppo di sicurezza di rete denominato NSG-BackEnd in base allo scenario precedente, seguire la procedura seguente.

  1. Creare il gruppo di sicurezza di rete NSG-BackEnd con az network nsg create.

    az network nsg create \
    --resource-group testrg \
    --name NSG-BackEnd \
    --location centralus
    

    Come nel passaggio 2 precedente, l'output previsto contiene svariate informazioni, incluse le regole predefinite.

  2. Creare una regola che consenta l'accesso alla porta 1433 (SQL) dalla subnet FrontEnd con il comando az network nsg rule create.

    az network nsg rule create \
    --resource-group testrg \
    --nsg-name NSG-BackEnd \
    --name sql-rule \
    --access Allow \
    --protocol Tcp \
    --direction Inbound \
    --priority 100 \
    --source-address-prefix 192.168.1.0/24 \
    --source-port-range "*" \
    --destination-address-prefix "*" \
    --destination-port-range 1433
    

    Output previsto:

    {
    "access": "Allow",
    "description": null,
    "destinationAddressPrefix": "*",
    "destinationPortRange": "1433",
    "direction": "Inbound",
    "etag": "W/\"<guid>\"",
    "id": "/subscriptions/<guid>/resourceGroups/testrg/providers/Microsoft.Network/networkSecurityGroups/NSG-BackEnd/securityRules/sql-rule",
    "name": "sql-rule",
    "priority": 100,
    "protocol": "Tcp",
    "provisioningState": "Succeeded",
    "resourceGroup": "testrg",
    "sourceAddressPrefix": "192.168.1.0/24",
    "sourcePortRange": "*"
    }
    
  3. Creare una regola che neghi l'accesso a Internet usando il comando az network nsg rule create.

    az network nsg rule create \
    --resource-group testrg \
    --nsg-name NSG-BackEnd \
    --name web-rule \
    --access Deny \
    --protocol Tcp  \
    --direction Outbound  \
    --priority 200 \
    --source-address-prefix "*" \
    --source-port-range "*" \
    --destination-address-prefix "*" \
    --destination-port-range "*"
    

    Output previsto:

    {
    "access": "Deny",
    "description": null,
    "destinationAddressPrefix": "*",
    "destinationPortRange": "*",
    "direction": "Outbound",
    "etag": "W/\"<guid>\"",
    "id": "/subscriptions/<guid>/resourceGroups/testrg/providers/Microsoft.Network/networkSecurityGroups/NSG-BackEnd/securityRules/web-rule",
    "name": "web-rule",
    "priority": 200,
    "protocol": "Tcp",
    "provisioningState": "Succeeded",
    "resourceGroup": "testrg",
    "sourceAddressPrefix": "*",
    "sourcePortRange": "*"
    }
    
  4. Associare il gruppo di sicurezza di rete alla subnet BackEnd usando il comando az network vnet subnet set.

    az network vnet subnet update \
    --vnet-name TestVNET \
    --name BackEnd \
    --resource-group testrg \
    --network-security-group NSG-BackEnd
    

    Output previsto:

    {
    "addressPrefix": "192.168.2.0/24",
    "etag": "W/\"<guid>\"",
    "id": "/subscriptions/<guid>/resourceGroups/testrg/providers/Microsoft.Network/virtualNetworks/TestVNET/subnets/BackEnd",
    "ipConfigurations": null,
    "name": "BackEnd",
    "networkSecurityGroup": {
        "defaultSecurityRules": null,
        "etag": null,
        "id": "/subscriptions/<guid>/resourceGroups/testrg/providers/Microsoft.Network/networkSecurityGroups/NSG-BackEnd",
        "location": null,
        "name": null,
        "networkInterfaces": null,
        "provisioningState": null,
        "resourceGroup": "testrg",
        "resourceGuid": null,
        "securityRules": null,
        "subnets": null,
        "tags": null,
        "type": null
    },
    "provisioningState": "Succeeded",
    "resourceGroup": "testrg",
    "resourceNavigationLinks": null,
    "routeTable": null
    }