Gestire i log dei flussi dei gruppi di sicurezza di rete usando l'API REST

La registrazione dei flussi dei gruppi di sicurezza di rete è una funzionalità di Azure Network Watcher che consente di registrare informazioni sul traffico IP che scorre attraverso un gruppo di sicurezza di rete. Per altre informazioni sulla registrazione dei flussi dei gruppi di sicurezza di rete, vedere Panoramica dei log dei flussi del gruppo di sicurezza di rete.

Questo articolo illustra come usare l'API REST per abilitare, disabilitare ed eseguire query sui log dei flussi usando l'API REST. È possibile imparare a gestire un log del flusso del gruppo di sicurezza di rete usando il modello portale di Azure, PowerShell, l'interfaccia della riga di comando di Azure o Arm.

In questo articolo si apprenderà come:

  • Abilitare i log di flusso (versione 2)
  • Disabilitare i log di flusso
  • Eseguire query per lo stato dei log di flusso

Prerequisiti

  • Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
  • ARMClient. ARMClient è uno strumento da riga di comando semplice per richiamare l'API di Azure Resource Manager. Per installare lo strumento, vedere ARMClient. Per specifiche dettagliate dell'API REST dei log dei flussi del gruppo di sicurezza di rete, vedere Log dei flussi - API REST

Importante

Quando si effettuano chiamate API REST a Network Watcher, il nome del gruppo di risorse nell'URI della richiesta fa riferimento al gruppo di risorse che contiene Network Watcher, non alle risorse in cui vengono eseguite le azioni di diagnostica.

Accedere con ARMClient

Accedere a armclient con le credenziali di Azure.

armclient login

Registrare il provider Insights

Il provider Microsoft.Insights deve essere registrato per registrare correttamente il traffico che scorre attraverso un gruppo di sicurezza di rete. Se non si è certi che il provider Microsoft.Insights sia registrato, usare Provider - Registrare l'API REST per registrarla.

$subscriptionId = "00000000-0000-0000-0000-000000000000"
armclient post "https://management.azure.com//subscriptions/${subscriptionId}/providers/Microsoft.Insights/register?api-version=2021-04-01"

Abilitare i log dei flussi del gruppo di sicurezza di rete

L'esempio seguente mostra il comando che consente di abilitare i log di flusso versione 2. Per la versione 1, sostituire il campo 'version' con '1':

$subscriptionId = "00000000-0000-0000-0000-000000000000"
$targetUri = "" # example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/{resourceGroupName/providers/Microsoft.Network/networkSecurityGroups/{nsgName}"
$storageId = "/subscriptions/00000000-0000-0000-0000-000000000000/{resourceGroupName/providers/Microsoft.Storage/storageAccounts/{saName}"
$resourceGroupName = "NetworkWatcherRG"
$networkWatcherName = "NetworkWatcher_westcentralus"
$requestBody = @"
{
    'targetResourceId': '${targetUri}',
    'properties': {
    'storageId': '${storageId}',
    'enabled': 'true',
    'retentionPolicy' : {
			days: 5,
			enabled: true
		},
    'format': {
        'type': 'JSON',
        'version': 2
    }
	}
}
"@

armclient post "https://management.azure.com/subscriptions/${subscriptionId}/ResourceGroups/${resourceGroupName}/providers/Microsoft.Network/networkWatchers/${networkWatcherName}/configureFlowLog?api-version=2022-11-01" $requestBody

La risposta restituita dall'esempio precedente è la seguente:

{
  "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{nsgName}",
  "properties": {
    "storageId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{saName}",
    "enabled": true,
    "retentionPolicy": {
      "days": 5,
      "enabled": true
    },
    "format": {
    "type": "JSON",
    "version": 2
    }
  }
}

Nota

Disabilitare i log dei flussi dei gruppi di sicurezza di rete

Usare l'esempio seguente per disabilitare i log di flusso. La chiamata è uguale a quella usata per abilitare i log di flusso, ad eccezione di false che è impostato per la proprietà attivata.

$subscriptionId = "00000000-0000-0000-0000-000000000000"
$targetUri = "" # example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/{resourceGroupName/providers/Microsoft.Network/networkSecurityGroups/{nsgName}"
$storageId = "/subscriptions/00000000-0000-0000-0000-000000000000/{resourceGroupName/providers/Microsoft.Storage/storageAccounts/{saName}"
$resourceGroupName = "NetworkWatcherRG"
$networkWatcherName = "NetworkWatcher_westcentralus"
$requestBody = @"
{
    'targetResourceId': '${targetUri}',
    'properties': {
    'storageId': '${storageId}',
    'enabled': 'false',
    'retentionPolicy' : {
			days: 5,
			enabled: true
		},
    'format': {
        'type': 'JSON',
        'version': 2
    }
	}
}
"@

armclient post "https://management.azure.com/subscriptions/${subscriptionId}/ResourceGroups/${resourceGroupName}/providers/Microsoft.Network/networkWatchers/${networkWatcherName}/configureFlowLog?api-version=2022-11-01" $requestBody

La risposta restituita dall'esempio precedente è la seguente:

{
  "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{nsgName}",
  "properties": {
    "storageId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{saName}",
    "enabled": false,
    "retentionPolicy": {
      "days": 5,
      "enabled": true
    },
    "format": {
    "type": "JSON",
    "version": 2
    }
  }
}

Nota

Eseguire query sui log di flusso

La chiamata REST seguente esegue una query sullo stato dei log dei flussi in un gruppo di sicurezza di rete.

$subscriptionId = "00000000-0000-0000-0000-000000000000"
$targetUri = "" # example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/{resourceGroupName/providers/Microsoft.Network/networkSecurityGroups/{nsgName}"
$resourceGroupName = "NetworkWatcherRG"
$networkWatcherName = "NetworkWatcher_westcentralus"
$requestBody = @"
{
    'targetResourceId': '${targetUri}',
}
"@

armclient post "https://management.azure.com/subscriptions/${subscriptionId}/ResourceGroups/${resourceGroupName}/providers/Microsoft.Network/networkWatchers/${networkWatcherName}/queryFlowLogStatus?api-version=2022-11-01" $requestBody

L'esempio seguente mostra la risposta restituita:

{
  "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{nsgName}",
  "properties": {
    "storageId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{saName}",
    "enabled": true,
   "retentionPolicy": {
      "days": 5,
      "enabled": true
    },
    "format": {
    "type": "JSON",
    "version": 2
    }
  }
}

Nota

  • L'API REST Network Watchers - Get Flow Log Status usata nell'esempio precedente richiede un'autorizzazione di lettura aggiuntiva nel gruppo di risorse di Network Watcher. Inoltre, questa API è obsoleta e potrebbe presto essere deprecata.
  • È consigliabile usare i nuovi log di flusso : ottenere l'API REST per eseguire query sui log dei flussi.

Scaricare un log di flusso

Il percorso di archiviazione di un log di flusso viene definito al momento della creazione. Uno strumento pratico per accedere ai log di flusso salvati in un account di archiviazione è Archiviazione di Microsoft Azure Explorer. Per altre informazioni, vedere Introduzione a Archiviazione Explorer.

Se viene specificato un account di archiviazione, i file di acquisizione di pacchetti vengono salvati in un account di archiviazione nel percorso seguente:

https://{storageAccountName}.blob.core.windows.net/insights-logs-networksecuritygroupflowevent/resourceId=/SUBSCRIPTIONS/{subscriptionID}/RESOURCEGROUPS/{resourceGroupName}/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/{nsgName}/y={year}/m={month}/d={day}/h={hour}/m=00/macAddress={macAddress}/PT1H.json

Passaggi successivi