Analizzare la protezione della macchina virtuale visualizzando un gruppo di sicurezza con l'API RESTAnalyze your Virtual Machine security with Security Group View using REST API

La visualizzazione di un gruppo di sicurezza consente di recuperare le regole di sicurezza di rete configurate ed effettive applicate a una macchina virtuale.Security group view returns configured and effective network security rules that are applied to a virtual machine. Questa funzionalità è utile per controllare e diagnosticare i gruppi di sicurezza di rete e le regole configurate in una macchina virtuale per verificare che il traffico viene consentito o negato in modo corretto.This capability is useful to audit and diagnose Network Security Groups and rules that are configured on a VM to ensure traffic is being correctly allowed or denied. Questo articolo illustra come recuperare le regole di sicurezza effettive ed applicate a una macchina virtuale tramite l'API RESTIn this article, we show you how to retrieve the effective and applied security rules to a virtual machine using REST API

Prima di iniziareBefore you begin

In questo scenario, si chiama l'API REST di Network Watcher per ottenere la visualizzazione del gruppo di sicurezza per una macchina virtuale.In this scenario, you call the Network Watcher Rest API to get the security group view for a virtual machine. ARMclient viene usato per chiamare l'API REST con PowerShell.ARMclient is used to call the REST API using PowerShell. ARMClient è reperibile in Chocolatey in ARMClient on Chocolatey (ARMClient in Chocolatey)ARMClient is found on chocolatey at ARMClient on Chocolatey

Questo scenario presuppone il completamento dei passaggi descritti in Creare un servizio Network Watcher per creare un servizio Network Watcher.This scenario assumes you have already followed the steps in Create a Network Watcher to create a Network Watcher. Lo scenario presuppone inoltre che esista e possa essere usato un gruppo di risorse con una macchina virtuale valida.The scenario also assumes that a Resource Group with a valid virtual machine exists to be used.

ScenarioScenario

Lo scenario illustrato in questo articolo recupera le regole di sicurezza effettive e applicate a una determinata macchina virtuale.The scenario covered in this article retrieves the effective and applied security rules for a given virtual machine.

Accedere con ARMClientLog in with ARMClient

armclient login

Recuperare una macchina virtualeRetrieve a virtual machine

Eseguire lo script seguente per restituire una macchina virtuale Il codice seguente necessita delle variabili:Run the following script to return a virtual machineThe following code needs variables:

  • subscriptionId: l'ID sottoscrizione può essere recuperato anche con il cmdlet Get-AzureRMSubscription.subscriptionId - The subscription id can also be retrieved with the Get-AzureRMSubscription cmdlet.
  • resourceGroupName: il nome di un gruppo di risorse contenente le macchine virtuali.resourceGroupName - The name of a resource group that contains virtual machines.
$subscriptionId = '<subscription id>'
$resourceGroupName = '<resource group name>'

armclient get https://management.azure.com/subscriptions/${subscriptionId}/ResourceGroups/${resourceGroupName}/providers/Microsoft.Compute/virtualMachines?api-version=2015-05-01-preview

Le informazioni necessarie sono l'id sotto il tipo di Microsoft.Compute/virtualMachines in risposta, come illustrato nell'esempio seguente:The information that is needed is the id under the type Microsoft.Compute/virtualMachines in response, as seen in the following example:

...,
        "networkProfile": {
          "networkInterfaces": [
            {
              "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft
.Network/networkInterfaces/{nicName}"
            }
          ]
        },
        "provisioningState": "Succeeded"
      },
      "resources": [
        {
          "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Com
pute/virtualMachines/{vmName}/extensions/CustomScriptExtension"
        }
      ],
      "type": "Microsoft.Compute/virtualMachines",
      "location": "westcentralus",
      "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute
/virtualMachines/{vmName}",
      "name": "{vmName}"
    }
  ]
}

Ottenere la visualizzazione del gruppo di sicurezza per la macchina virtualeGet security group view for virtual machine

Nell'esempio seguente viene richiesta la visualizzazione del gruppo di sicurezza di una macchina virtuale di destinazione.The following example requests the security group view of a targeted virtual machine. I risultati di questo esempio possono essere usati per confrontare le regole e la sicurezza definite dall'origine per cercare la deviazione della configurazione.The results from this example can be used to compare to the rules and security defined by the origination to look for configuration drift.

$subscriptionId = "<subscription id>"
$resourceGroupName = "<resource group name>"
$networkWatcherName = "<network watcher name>"
$targetUri = "<uri of target resource>" # Example: /subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.compute/virtualMachine/$vmName

$requestBody = @"
{
    'targetResourceId': '${targetUri}'

}
"@
armclient post "https://management.azure.com/subscriptions/${subscriptionId}/ResourceGroups/${resourceGroupName}/providers/Microsoft.Network/networkWatchers/${networkWatcherName}/securityGroupView?api-version=2016-12-01" $requestBody -verbose

Visualizzare la rispostaView the response

L'esempio seguente costituisce la risposta del comando precedente.The following sample is the response returned from the preceding command. I risultati mostrano tutte le regole di sicurezza effettive e applicate alla macchina virtuale, suddivise nei gruppi NetworkInterfaceSecurityRules, DefaultSecurityRules e EffectiveSecurityRules.The results show all the effective and applied security rules on the virtual machine broken down in groups of NetworkInterfaceSecurityRules, DefaultSecurityRules, and EffectiveSecurityRules.


{
  "networkInterfaces": [
    {
      "securityRuleAssociations": {
        "networkInterfaceAssociation": {
          "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{nicName}",
          "securityRules": [
            {
              "name": "default-allow-rdp",
              "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{nsgName}/securityRules/default-allow-rdp",
              "etag": "W/\"d4c411d4-0d62-49dc-8092-3d4b57825740\"",
              "properties": {
                "provisioningState": "Succeeded",
                "protocol": "TCP",
                "sourcePortRange": "*",
                "destinationPortRange": "3389",
                "sourceAddressPrefix": "*",
                "destinationAddressPrefix": "*",
                "access": "Allow",
                "priority": 1000,
                "direction": "Inbound"
              }
            }
          ]
        },
        "defaultSecurityRules": [
          {
            "name": "AllowVnetInBound",
            "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{nsgName}/defaultSecurityRules/",
            "properties": {
              "provisioningState": "Succeeded",
              "description": "Allow inbound traffic from all VMs in VNET",
              "protocol": "*",
              "sourcePortRange": "*",
              "destinationPortRange": "*",
              "sourceAddressPrefix": "VirtualNetwork",
              "destinationAddressPrefix": "VirtualNetwork",
              "access": "Allow",
              "priority": 65000,
              "direction": "Inbound"
            }
          },
          ...
        ],
        "effectiveSecurityRules": [
          {
            "name": "DefaultOutboundDenyAll",
            "protocol": "All",
            "sourcePortRange": "0-65535",
            "destinationPortRange": "0-65535",
            "sourceAddressPrefix": "*",
            "destinationAddressPrefix": "*",
            "access": "Deny",
            "priority": 65500,
            "direction": "Outbound"
          },
          ...
        ]
      }
    }
  ]
}

Passaggi successiviNext steps

Consultare Auditing Network Security Groups (NSG) with Network Watcher (Verifica dei gruppi di sicurezza di rete con Network Watcher) per informazioni su come automatizzare la verifica dei gruppi di sicurezza di rete.Visit Auditing Network Security Groups (NSG) with Network Watcher to learn how to automate validation of Network Security Groups.