Gestire 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:

Dopo la creazione di uno o più gruppi di risorse, è necessario potere recuperare informazioni sui gruppi di risorse, aggiungere e rimuovere regole, modificare le risorse esistenti, associare o annullare l'associazione di gruppi di sicurezza di rete ed eliminare i gruppi di sicurezza di rete. In questo articolo verrà illustrato come eseguire ognuna di queste attività. Prima di poter gestire i gruppi di sicurezza di rete, è importante sapere come funzionano.

Nota

Azure offre due modelli di distribuzione per creare e usare le risorse: Gestione risorse e la distribuzione classica. Questo articolo illustra l'uso del modello di distribuzione Resource Manager che Microsoft consiglia di usare invece del modello di distribuzione classica per le distribuzioni più recenti.

Scenario di esempio

Per illustrare meglio come gestire i gruppi di sicurezza di rete, questo articolo usa 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 il traffico 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.

Per distribuire lo scenario illustrato in precedenza, selezionare questo collegamento, fare clic su Distribuisci in Azure, sostituire i valori del parametro predefinito se necessario e seguire le istruzioni nel portale. Nelle istruzioni di esempio seguenti il modello è stato usato per distribuire un gruppo di risorse con nome RG-NSG.

Prerequisito

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.

Visualizzare NSG esistenti

Per visualizzare l'elenco di gruppi di sicurezza di rete in un gruppo di risorse specifico, eseguire il comando az network nsg list con un formato di output -o table:

az network nsg list -g RG-NSG -o table

Output previsto:

Location    Name          ProvisioningState    ResourceGroup    ResourceGuid
----------  ------------  -------------------  ---------------  ------------------------------------
centralus   NSG-BackEnd   Succeeded            RG-NSG           <guid>
centralus   NSG-FrontEnd  Succeeded            RG-NSG           <guid>

Elencare tutte le regole per un NSG

Per visualizzare le regole di un gruppo di sicurezza di rete denominato NSG-FrontEnd, eseguire il comando az network nsg show usando il filtro di query JMESPATH e il formato di output -o table:

    az network nsg show \
    --resource-group RG-NSG \
    --name NSG-FrontEnd \
    --query '[defaultSecurityRules[],securityRules[]][].{Name:name,Desc:description,Access:access,Direction:direction,DestPortRange:destinationPortRange,DestAddrPrefix:destinationAddressPrefix,SrcPortRange:sourcePortRange,SrcAddrPrefix:sourceAddressPrefix}' \
    -o table

Output previsto:

Name                           Desc                                                    Access    Direction    DestPortRange    DestAddrPrefix    SrcPortRange    SrcAddrPrefix
-----------------------------  ------------------------------------------------------  --------  -----------  ---------------  ----------------  --------------  -----------------
AllowVnetInBound               Allow inbound traffic from all VMs in VNET              Allow     Inbound      *                VirtualNetwork    *               VirtualNetwork
AllowAzureLoadBalancerInBound  Allow inbound traffic from azure load balancer          Allow     Inbound      *                *                 *               AzureLoadBalancer
DenyAllInBound                 Deny all inbound traffic                                Deny      Inbound      *                *                 *               *
AllowVnetOutBound              Allow outbound traffic from all VMs to all VMs in VNET  Allow     Outbound     *                VirtualNetwork    *               VirtualNetwork
AllowInternetOutBound          Allow outbound traffic from all VMs to Internet         Allow     Outbound     *                Internet          *               *
DenyAllOutBound                Deny all outbound traffic                               Deny      Outbound     *                *                 *               *
rdp-rule                                                                               Allow     Inbound      3389             *                 *               Internet
web-rule                                                                               Allow     Inbound      80               *                 *               Internet
Nota

È possibile anche usare az network nsg rule list per elencare solo le regole personalizzate da un gruppo di sicurezza di rete.

Visualizzare le associazioni di NSG

Per visualizzare le risorse a cui l'NSG NSG-FrontEnd è associato, eseguire il comando az network nsg show come mostrato di seguito.

az network nsg show -g RG-NSG -n nsg-frontend --query '[subnets,networkInterfaces]'

Cercare le proprietà networkInterfaces e subnets come illustrato di seguito:

[
  [
    {
      "addressPrefix": null,
      "etag": null,
      "id": "/subscriptions/<guid>/resourceGroups/RG-NSG/providers/Microsoft.Network/virtualNetworks/TestVNET/subnets/FrontEnd",
      "ipConfigurations": null,
      "name": null,
      "networkSecurityGroup": null,
      "provisioningState": null,
      "resourceGroup": "RG-NSG",
      "resourceNavigationLinks": null,
      "routeTable": null
    }
  ],
  null
]

Nell'esempio precedente, l'NSG non è associato ad alcuna interfaccia di rete (NIC) ed è associato a una subnet denominata FrontEnd.

Aggiungere una regola

Per aggiungere una regola che consenta il traffico in ingresso alla porta 443 da qualsiasi computer all'NSG NSG-FrontEnd, immettere il comando seguente:

az network nsg rule create  \
--resource-group RG-NSG \
--nsg-name NSG-FrontEnd  \
--name allow-https \
--description "Allow access to port 443 for HTTPS" \
--access Allow \
--protocol Tcp  \
--direction Inbound \
--priority 102 \
--source-address-prefix "*"  \
--source-port-range "*"  \
--destination-address-prefix "*" \
--destination-port-range "443"

Output previsto:

{
  "access": "Allow",
  "description": "Allow access to port 443 for HTTPS",
  "destinationAddressPrefix": "*",
  "destinationPortRange": "443",
  "direction": "Inbound",
  "etag": "W/\"<guid>\"",
  "id": "/subscriptions/<guid>/resourceGroups/RG-NSG/providers/Microsoft.Network/networkSecurityGroups/NSG-FrontEnd/securityRules/allow-https",
  "name": "allow-https",
  "priority": 102,
  "protocol": "Tcp",
  "provisioningState": "Succeeded",
  "resourceGroup": "RG-NSG",
  "sourceAddressPrefix": "*",
  "sourcePortRange": "*"
}

Modificare una regola

Per modificare la regola creata in precedenza per consentire solo il traffico in ingresso da Internet, eseguire il comando az network nsg rule update come illustrato di seguito.

az network nsg rule update \
--resource-group RG-NSG \
--nsg-name NSG-FrontEnd \
--name allow-https \
--source-address-prefix Internet

Output previsto:

{
"access": "Allow",
"description": "Allow access to port 443 for HTTPS",
"destinationAddressPrefix": "*",
"destinationPortRange": "443",
"direction": "Inbound",
"etag": "W/\"<guid>\"",
"id": "/subscriptions/<guid>/resourceGroups/RG-NSG/providers/Microsoft.Network/networkSecurityGroups/NSG-FrontEnd/securityRules/allow-https",
"name": "allow-https",
"priority": 102,
"protocol": "Tcp",
"provisioningState": "Succeeded",
"resourceGroup": "RG-NSG",
"sourceAddressPrefix": "Internet",
"sourcePortRange": "*"
}

Eliminare una regola

Per eliminare la regola creata in precedenza, eseguire il comando seguente:

az network nsg rule delete \
--resource-group RG-NSG \
--nsg-name NSG-FrontEnd \
--name allow-https

Associare un NSG a una NIC

Per associare il gruppo di sicurezza di rete NSG-FrontEnd alla scheda di interfaccia di rete TestNICWeb1, eseguire il comando az network nic update:

az network nic update \
--resource-group RG-NSG \
--name TestNICWeb1 \
--network-security-group NSG-FrontEnd    

Output previsto:

{
  "dnsSettings": {
    "appliedDnsServers": [],
    "dnsServers": [],
    "internalDnsNameLabel": null,
    "internalDomainNameSuffix": "k0wkaguidnqrh0ud.gx.internal.cloudapp.net",
    "internalFqdn": null
  },
  "enableAcceleratedNetworking": false,
  "enableIpForwarding": false,
  "etag": "W/\"<guid>\"",
  "id": "/subscriptions/<guid>/resourceGroups/RG-NSG/providers/Microsoft.Network/networkInterfaces/TestNICWeb1",
  "ipConfigurations": [
    {
      "applicationGatewayBackendAddressPools": null,
      "etag": "W/\"<guid>\"",
      "id": "/subscriptions/<guid>/resourceGroups/RG-NSG/providers/Microsoft.Network/networkInterfaces/TestNICWeb1/ipConfigurations/ipconfig1",
      "loadBalancerBackendAddressPools": null,
      "loadBalancerInboundNatRules": null,
      "name": "ipconfig1",
      "primary": true,
      "privateIpAddress": "192.168.1.6",
      "privateIpAddressVersion": "IPv4",
      "privateIpAllocationMethod": "Static",
      "provisioningState": "Succeeded",
      "publicIpAddress": null,
      "resourceGroup": "RG-NSG",
      "subnet": {
        "addressPrefix": null,
        "etag": null,
        "id": "/subscriptions/<guid>/resourceGroups/RG-NSG/providers/Microsoft.Network/virtualNetworks/TestVNet/subnets/FrontEnd",
        "ipConfigurations": null,
        "name": null,
        "networkSecurityGroup": null,
        "provisioningState": null,
        "resourceGroup": "RG-NSG",
        "resourceNavigationLinks": null,
        "routeTable": null
      }
    }
  ],
  "location": "centralus",
  "macAddress": "00-0D-3A-91-A9-60",
  "name": "TestNICWeb1",
  "networkSecurityGroup": {
    "defaultSecurityRules": null,
    "etag": null,
    "id": "/subscriptions/<guid>/resourceGroups/RG-NSG/providers/Microsoft.Network/networkSecurityGroups/NSG-FrontEnd",
    "location": null,
    "name": null,
    "networkInterfaces": null,
    "provisioningState": null,
    "resourceGroup": "RG-NSG",
    "resourceGuid": null,
    "securityRules": null,
    "subnets": null,
    "tags": null,
    "type": null
  },
  "primary": null,
  "provisioningState": "Succeeded",
  "resourceGroup": "RG-NSG",
  "resourceGuid": "<guid>",
  "tags": {},
  "type": "Microsoft.Network/networkInterfaces",
  "virtualMachine": null
}

Annullare l'associazione tra un NSG e una NIC

Per annullare l'associazione del gruppo di sicurezza di rete NSG-FrontEnd dalla scheda di interfaccia di rete TestNICWeb1 eseguire di nuovo il comando az network nsg rule update ma sostituire l'argomento --network-security-group con una stringa vuota ("").

az network nic update --resource-group RG-NSG --name TestNICWeb3 --network-security-group ""

Nell'output la chiave networkSecurityGroup è impostata su null.

Annullare l'associazione tra un NSG e una subnet

Per annullare l'associazione del gruppo di sicurezza di rete NSG-FrontEnd dalla subnet FrontEnd eseguire il comando az network nsg rule update, ma sostituire l'argomento --network-security-group con una stringa vuota ("").

az network vnet subnet update \
--resource-group RG-NSG \
--vnet-name testvnet \
--name FrontEnd \
--network-security-group ""

Nell'output la chiave networkSecurityGroup è impostata su null.

Associare un gruppo di sicurezza di rete a una subnet

Per associare di nuovo il gruppo di sicurezza di rete NSG-FrontEnd alla subnet FrontEnd, eseguire il comando seguente:

az network vnet subnet update \
--resource-group RG-NSG \
--vnet-name testvnet \
--name FrontEnd \
--network-security-group NSG-FrontEnd

Nell'output il valore della chiave networkSecurityGroup è simile al seguente:

"networkSecurityGroup": {
    "defaultSecurityRules": null,
    "etag": null,
    "id": "/subscriptions/0e220bf6-5caa-4e9f-8383-51f16b6c109f/resourceGroups/RG-NSG/providers/Microsoft.Network/networkSecurityGroups/NSG-FrontEnd",
    "location": null,
    "name": null,
    "networkInterfaces": null,
    "provisioningState": null,
    "resourceGroup": "RG-NSG",
    "resourceGuid": null,
    "securityRules": null,
    "subnets": null,
    "tags": null,
    "type": null
  }

Eliminare un gruppo di sicurezza di rete

È possibile eliminare un NSG solo se non è associato ad alcuna risorsa. Per eliminare un NSG, seguire questa procedura.

  1. Per controllare le risorse associate a un NSG, eseguire azure network nsg show come illustrato in Visualizzare le associazioni di NSG.
  2. Se l'NSG è associato a una o più NIC, eseguire azure network nic set come illustrato in Annullare l'associazione tra un NSG e una NIC per ognuna delle NIC.
  3. Se l'NSG è associato a una o più subnet, eseguire azure network vnet subnet set come illustrato in Annullare l'associazione tra un NSG e una subnet per ognuna delle subnet.
  4. Per eliminare l'NSG, eseguire il comando seguente:

    az network nsg delete --resource-group RG-NSG --name NSG-FrontEnd
    

    Passaggi successivi

  5. Abilitare la registrazione per gli NSG.