Gestire i gruppi di sicurezza di rete usando l'interfaccia della riga di comando 1.0 di Azure

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: installare l'interfaccia della riga di comando di Azure

Per eseguire i passaggi in questo articolo, è necessario installare l'interfaccia della riga di comando di Azure per Mac, Linux e Windows (interfaccia della riga di comando di Azure) ed è necessario accedere ad Azure.

Nota

Se non si dispone di un account Azure, è necessario procurarsene uno. Usare la versione di valutazione gratuita. Inoltre, per completare l'operazione è necessario aver installato una libreria o uno strumento di analisi jq o JSON di altro tipo.

Recuperare le informazioni

È possibile visualizzare i gruppi di sicurezza di rete (NSG, Network Security Group) esistenti, recuperare le regole relative a un NSG esistente e trovare le risorse a cui un NSG è associato.

Visualizzare NSG esistenti

Per visualizzare l'elenco di NSG in un gruppo di risorse specifico, eseguire il comando azure network nsg list come illustrato di seguito.

azure network nsg list --resource-group RG-NSG

Output previsto:

info:    Executing command network nsg list
+ Getting the network security groups
data:    Name          Location
data:    ------------  --------
data:    NSG-BackEnd   westus
data:    NSG-FrontEnd  westus
info:    network nsg list command OK

Elencare tutte le regole per un NSG

Per visualizzare le regole di un NSG denominato NSG-FrontEnd, eseguire il comando azure network nsg show come mostrato di seguito.

azure network nsg show --resource-group RG-NSG --name NSG-FrontEnd

Output previsto:

info:    Executing command network nsg show
+ Looking up the network security group "NSG-FrontEnd"
data:    Id                              : /subscriptions/[Subscription Id]/resourceGroups/RG-NSG/providers/Microsoft.Network/networkSecurityGroups/NSG-FrontEnd
data:    Name                            : NSG-FrontEnd
data:    Type                            : Microsoft.Network/networkSecurityGroups
data:    Location                        : westus
data:    Provisioning state              : Succeeded
data:    Tags                            : displayName=NSG - Front End
data:    Security group rules:
data:    Name                           Source IP          Source Port  Destination IP  Destination Port  Protocol  Direction  Access  Priority
data:    -----------------------------  -----------------  -----------  --------------  ----------------  --------  ---------  ------  --------
data:    rdp-rule                       Internet           *            *               3389              Tcp       Inbound    Allow   100
data:    web-rule                       Internet           *            *               80                Tcp       Inbound    Allow   101
data:    AllowVnetInBound               VirtualNetwork     *            VirtualNetwork  *                 *         Inbound    Allow   65000
data:    AllowAzureLoadBalancerInBound  AzureLoadBalancer  *            *               *                 *         Inbound    Allow   65001
data:    DenyAllInBound                 *                  *            *               *                 *         Inbound    Deny    65500
data:    AllowVnetOutBound              VirtualNetwork     *            VirtualNetwork  *                 *         Outbound   Allow   65000
data:    AllowInternetOutBound          *                  *            Internet        *                 *         Outbound   Allow   65001
data:    DenyAllOutBound                *                  *            *               *                 *         Outbound   Deny    65500
info:    network nsg show command OK

Nota

Per elencare le regole dell'NSG NSG-FrontEnd, è anche possibile usare azure network nsg rule list --resource-group RG-NSG --nsg-name NSG-FrontEnd.

Visualizzare le associazioni di NSG

Per visualizzare le risorse a cui l'NSG NSG-FrontEnd è associato, eseguire il comando azure network nsg show come mostrato di seguito. Si noti che l'unica differenza è l'uso del parametro --json .

azure network nsg show --resource-group RG-NSG --name NSG-FrontEnd --json

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

"networkInterfaces": [],
...
"subnets": [
    {
        "id": "/subscriptions/[Subscription Id]/resourceGroups/RG-NSG/providers/Microsoft.Network/virtualNetworks/TestVNet/subnets/FrontEnd"
    }
],
...

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

Gestire le regole

È possibile aggiungere regole a un NSG esistente, modificare le regole esistenti e rimuovere regole.

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:

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

Output previsto:

info:    Executing command network nsg rule create
+ Looking up the network security rule "allow-https"
+ Creating a network security rule "allow-https"
+ Looking up the network security group "NSG-FrontEnd"
data:    Id                              : /subscriptions/[Subscription Id]/resourceGroups/RG-NSG/providers/Microsoft.Network/networkSecurityGroups/NSG-FrontEnd/securityRules/allow-https
data:    Name                            : allow-https
data:    Type                            : Microsoft.Network/networkSecurityGroups/securityRules
data:    Provisioning state              : Succeeded
data:    Description                     : Allow access to port 443 for HTTPS
data:    Source IP                       : *
data:    Source Port                     : *
data:    Destination IP                  : *
data:    Destination Port                : 443
data:    Protocol                        : Tcp
data:    Direction                       : Inbound
data:    Access                          : Allow
data:    Priority                        : 102
info:    network nsg rule create command OK

Modificare una regola

Per modificare la regola creata in precedenza per consentire traffico in ingresso solo da Internet, eseguire il comando seguente:

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

Output previsto:

info:    Executing command network nsg rule set
+ Looking up the network security group "NSG-FrontEnd"
+ Setting a network security rule "allow-https"
+ Looking up the network security group "NSG-FrontEnd"
data:    Id                              : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/RG-NSG/providers/Microsoft.Network/networkSecurityGroups/NSG-FrontEnd/securityRules/allow-https
data:    Name                            : allow-https
data:    Type                            : Microsoft.Network/networkSecurityGroups/securityRules
data:    Provisioning state              : Succeeded
data:    Description                     : Allow access to port 443 for HTTPS
data:    Source IP                       : Internet
data:    Source Port                     : *
data:    Destination IP                  : *
data:    Destination Port                : 443
data:    Protocol                        : Tcp
data:    Direction                       : Inbound
data:    Access                          : Allow
data:    Priority                        : 102
info:    network nsg rule set command OK

Eliminare una regola

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

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

Nota

Il parametro --quiet fa in modo che non sia necessario confermare l'eliminazione.

Output previsto:

info:    Executing command network nsg rule delete
+ Looking up the network security group "NSG-FrontEnd"
+ Deleting network security rule "allow-https"
info:    network nsg rule delete command OK

Gestire le associazioni

È possibile associare un NSG a subnet e schede di interfaccia di rete. È anche possibile annullare l'associazione tra un NSG e qualsiasi risorsa a cui è associato.

Associare un NSG a una NIC

Per associare l'NSG NSG-FrontEnd alla scheda di interfaccia di rete TestNICWeb1, eseguire il comando seguente:

azure network nic set --resource-group RG-NSG \
    --name TestNICWeb1 \
    --network-security-group-name NSG-FrontEnd

Output previsto:

info:    Executing command network nic set
+ Looking up the network interface "TestNICWeb1"
+ Looking up the network security group "NSG-FrontEnd"
+ Updating network interface "TestNICWeb1"
+ Looking up the network interface "TestNICWeb1"
data:    Id                              : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/RG-NSG/providers/Microsoft.Network/networkInterfaces/TestNICWeb1
data:    Name                            : TestNICWeb1
data:    Type                            : Microsoft.Network/networkInterfaces
data:    Location                        : westus
data:    Provisioning state              : Succeeded
data:    MAC address                     : 00-0D-3A-30-A1-F8
data:    Enable IP forwarding            : false
data:    Tags                            : displayName=NetworkInterfaces - Web
data:    Network security group          : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/RG-NSG/providers/Microsoft.Network/networkSecurityGroups/NSG-FrontEnd
data:    Virtual machine                 : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/RG-NSG/providers/Microsoft.Compute/virtualMachines/Web1
data:    IP configurations:
data:      Name                          : ipconfig1
data:      Provisioning state            : Succeeded
data:      Public IP address             : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/RG-NSG/providers/Microsoft.Network/publicIPAddresses/TestPIPWeb1
data:      Private IP address            : 192.168.1.5
data:      Private IP Allocation Method  : Dynamic
data:      Subnet                        : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/RG-NSG/providers/Microsoft.Network/virtualNetworks/TestVNet/subnets/FrontEnd
data:
info:    network nic set command OK

Annullare l'associazione tra un NSG e una NIC

Per annullare l'associazione dell'NSG NSG-FrontEnd alla scheda di interfaccia di rete TestNICWeb1, eseguire il comando seguente:

azure network nic set --resource-group RG-NSG --name TestNICWeb1 --network-security-group-id ""

Nota

Notare il valore "" (vuoto) del parametro network-security-group-id, che consente di rimuovere un'associazione a un NSG. È possibile eseguire questa stessa operazione con il parametro network-security-group-name.

Risultato previsto:

info:    Executing command network nic set
+ Looking up the network interface "TestNICWeb1"
+ Updating network interface "TestNICWeb1"
+ Looking up the network interface "TestNICWeb1"
data:    Id                              : /subscriptions/[Subscription Id]/resourceGroups/RG-NSG/providers/Microsoft.Network/networkInterfaces/TestNICWeb1
data:    Name                            : TestNICWeb1
data:    Type                            : Microsoft.Network/networkInterfaces
data:    Location                        : westus
data:    Provisioning state              : Succeeded
data:    MAC address                     : 00-0D-3A-30-A1-F8
data:    Enable IP forwarding            : false
data:    Tags                            : displayName=NetworkInterfaces - Web
data:    Virtual machine                 : /subscriptions/[Subscription Id]/resourceGroups/RG-NSG/providers/Microsoft.Compute/virtualMachines/Web1
data:    IP configurations:
data:      Name                          : ipconfig1
data:      Provisioning state            : Succeeded
data:      Public IP address             : /subscriptions/[Subscription Id]/resourceGroups/RG-NSG/providers/Microsoft.Network/publicIPAddresses/TestPIPWeb1
data:      Private IP address            : 192.168.1.5
data:      Private IP Allocation Method  : Dynamic
data:      Subnet                        : /subscriptions/[Subscription Id]/resourceGroups/RG-NSG/providers/Microsoft.Network/virtualNetworks/TestVNet/subnets/FrontEnd
data:
info:    network nic set command OK

Annullare l'associazione tra un NSG e una subnet

Per annullare l'associazione dell'NSG NSG-FrontEnd alla subnet FrontEnd, eseguire il comando seguente:

azure network vnet subnet set --resource-group RG-NSG \
    --vnet-name TestVNet \
    --name FrontEnd \
    --network-security-group-id ""

Output previsto:

info:    Executing command network vnet subnet set
+ Looking up the subnet "FrontEnd"
+ Setting subnet "FrontEnd"
+ Looking up the subnet "FrontEnd"
data:    Id                              : /subscriptions/[Subscription Id]/resourceGroups/RG-NSG/providers/Microsoft.Network/virtualNetworks/TestVNet/subnets/FrontEnd
data:    Type                            : Microsoft.Network/virtualNetworks/subnets
data:    ProvisioningState               : Succeeded
data:    Name                            : FrontEnd
data:    Address prefix                  : 192.168.1.0/24
data:    IP configurations:
data:      /subscriptions/[Subscription Id]/resourceGroups/RG-NSG/providers/Microsoft.Network/networkInterfaces/TestNICWeb2/ipConfigurations/ipconfig1
data:      /subscriptions/[Subscription Id]/resourceGroups/RG-NSG/providers/Microsoft.Network/networkInterfaces/TestNICWeb1/ipConfigurations/ipconfig1
data:
info:    network vnet subnet set command OK

Associare un gruppo di sicurezza di rete a una subnet

Per associare l'NSG NSG-FrontEnd alla subnet FronEnd, eseguire il comando seguente:

azure network vnet subnet set --resource-group RG-NSG \
    --vnet-name TestVNet \
    --name FrontEnd \
    --network-security-group-name NSG-FronEnd

Nota

Il comando precedente funziona solo perché l'NSG NSG-FrontEnd si trova nello stesso gruppo di risorse della rete virtuale TestVNet. Se l'NSG si trova in un altro gruppo di risorse, è necessario usare invece il parametro --network-security-group-id e specificare l'ID completo dell'NSG. Per recuperare l'ID, eseguire azure network nsg show --resource-group RG-NSG --name NSG-FrontEnd --json e cercare la proprietà id.

Output previsto:

    info:    Executing command network vnet subnet set
    + Looking up the subnet "FrontEnd"
    + Looking up the network security group "NSG-FrontEnd"
    + Setting subnet "FrontEnd"
    + Looking up the subnet "FrontEnd"
    data:    Id                              : /subscriptions/[Subscription Id]/resourceGroups/RG-NSG/providers/Microsoft.Network/virtualNetworks/TestVNet/subnets/FrontEnd
    data:    Type                            : Microsoft.Network/virtualNetworks/subnets
    data:    ProvisioningState               : Succeeded
    data:    Name                            : FrontEnd
    data:    Address prefix                  : 192.168.1.0/24
    data:    Network security group          : [object Object]
    data:    IP configurations:
    data:      /subscriptions/[Subscription Id]resourceGroups/RG-NSG/providers/Microsoft.Network/networkInterfaces/TestNICWeb2/ipConfigurations/ipconfig1
    data:      /subscriptions/[Subscription Id]/resourceGroups/RG-NSG/providers/Microsoft.Network/networkInterfaces/TestNICWeb1/ipConfigurations/ipconfig1
    data:
    info:    network vnet subnet set command OK

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:

    azure network nsg delete --resource-group RG-NSG --name NSG-FrontEnd --quiet
    

    Output previsto:

     info:    Executing command network nsg delete
     + Looking up the network security group "NSG-FrontEnd"
     + Deleting network security group "NSG-FrontEnd"
     info:    network nsg delete command OK
    

Passaggi successivi