Creare i gruppi di sicurezza di rete usando l'interfaccia della riga di comando di AzureCreate network security groups using the Azure CLI

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

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 dell'interfaccia della riga di comando di Azure riportati di seguito prevedono un ambiente semplice esistente in base allo scenario precedente.The following sample Azure CLI commands expect an existing simple environment based on the previous scenario.

Creare il gruppo di sicurezza di rete per la subnet FrontEndCreate the NSG for the FrontEnd subnet

Per creare un gruppo di sicurezza di rete denominato NSG-FrontEnd in base allo scenario precedente, seguire la procedura seguente:To create an NSG named NSG-FrontEnd based on the scenario preceding, follow the steps following.

  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.If you haven't yet, install and configure the latest Azure CLI 2.0 and log in to an Azure account using az login.

  2. Creare un gruppo di sicurezza di rete usando il comando azure network nsg create.Create an NSG using the az network nsg create command.

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

    ParametriParameters:

    • --resource-group: nome del gruppo di risorse in cui viene creato il gruppo di sicurezza di rete.--resource-group: Name of the resource group where the NSG is created. Per questo scenario, TestRG.For our scenario, TestRG.
    • --location: area di Azure in cui viene creato il nuovo gruppo di sicurezza di rete.--location: Azure region where the new NSG is created. Per questo scenario, westus.For our scenario, westus.
    • --name: nome per il nuovo gruppo di sicurezza di rete.--name: Name for the new NSG. Per questo scenario, NSG-FrontEnd.For our scenario, NSG-FrontEnd.

      L'output previsto include svariate informazioni, tra cui un elenco di tutte le regole predefinite.The expected output is quite a bit of information including a list of all the default rules. L'esempio seguente mostra le regole predefinite usando un filtro di query JMESPATH con il formato di output table:The following example shows the default rules using a JMESPATH query filter with the table output format:

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

    Output: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.Create a rule that allows access to port 3389 (RDP) from the Internet with the az network nsg rule create command.

    Nota

    A seconda della shell in uso potrebbe essere necessario modificare il carattere * negli argomenti seguenti per non espandere l'argomento prima dell'esecuzione.Depending on the shell you are using, you might need to modify the * character in the arguments following so as not to expand the argument before execution.

    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:Expected output:

    {
        "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": "*"
    }
    

    ParametriParameters:

    • --resource-group testrg: il gruppo di risorse da usare.--resource-group testrg: The resource group to use. Si noti che non fa distinzione tra maiuscole e minuscole.Note that it is case-insensitive.
    • --nsg-name NSG-FrontEnd: nome del gruppo di sicurezza di rete in cui viene creata la regola.--nsg-name NSG-FrontEnd: Name of the NSG in which the rule is created.
    • --name rdp-rule: nome per la nuova regola.--name rdp-rule: Name for the new rule.
    • --access Allow: livello di accesso per la regola (Deny o Allow).--access Allow: Access level for the rule (Deny or Allow).
    • --protocol Tcp: protocollo (TCP, UDP o *).--protocol Tcp: Protocol (Tcp, Udp, or *).
    • --direction Inbound: direzione di connessione (Inbound o Outbound).--direction Inbound: Direction of the connection (Inbound or Outbound).
    • --priority 100: priorità per la regola.--priority 100: Priority for the rule.
    • --source-address-prefix Internet: prefisso dell'indirizzo di origine in CIDR o con tag predefiniti.--source-address-prefix Internet: Source address prefix in CIDR or using default tags.
    • --source-port-range "*": porta o intervallo di porte di origine.--source-port-range "*": Source port or port range. Porta che ha aperto la connessione.Port that opened the connection.
    • --destination-address-prefix "*": prefisso dell'indirizzo di destinazione in CIDR o con tag predefiniti.--destination-address-prefix "*": Destination address prefix in CIDR or using default tags.
    • --destination-port-range 3389: porta o intervallo di porte di destinazione.--destination-port-range 3389: Destination port or port range. Porta che riceve la richiesta di connessione.Port that receives the connection request.
  4. Creare una regola consenta l'accesso alla porta 80 (HTTP) da Internet con il comando azure network nsg rule create.Create a rule that allows access to port 80 (HTTP) from the Internet az network nsg rule create command.

    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:Expected putput:

    {
        "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.Bind the NSG to the FrontEnd subnet with the az network vnet subnet update command.

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

    Output previsto:Expected output:

    {
        "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 BackEndCreate the NSG for the BackEnd subnet

Per creare un gruppo di sicurezza di rete denominato NSG-BackEnd in base allo scenario precedente, seguire la procedura seguente.To create an NSG named NSG-BackEnd based on the scenario preceding, follow the steps following.

  1. Creare il gruppo di sicurezza di rete NSG-BackEnd con az network nsg create.Create the NSG-BackEnd NSG with 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.As in step 2, preceding, the expected output is quite large, including default rules.

  2. Creare una regola che consenta l'accesso alla porta 1433 (SQL) dalla subnet FrontEnd con il comando az network nsg rule create.Create a rule that allows access to port 1433 (SQL) from the FrontEnd subnet with the az network nsg rule create command.

    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:Expected output:

    {
    "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.Create a rule that denies access to the Internet using the az network nsg rule create command.

    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:Expected putput:

    {
    "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.Bind the NSG to the BackEnd subnet using the az network vnet subnet set command.

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

    Output previsto:Expected output:

    {
    "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
    }