Verwalten von NSG-Datenflussprotokollen mithilfe von REST API

Die Datenflussprotokollierung für Netzwerksicherheitsgruppen ist ein Feature von Azure Network Watcher, mit dem Sie Informationen zu IP-Datenverkehr protokollieren können, der eine Netzwerksicherheitsgruppe durchläuft. Weitere Informationen zur Datenflussprotokollierung für Netzwerksicherheitsgruppen finden Sie unter Übersicht über NSG-Datenflussprotokolle.

In diesem Artikel erfahren Sie, wie Sie die REST-API verwenden, um Flussprotokolle mithilfe der REST-API zu aktivieren, zu deaktivieren und abzufragen. Sie erfahren, wie Sie ein NSG-Flussprotokoll mithilfe von Azure-Portal, PowerShell, Azure CLI oder ARM-Vorlage verwalten.

In diesem Artikel werden folgende Vorgehensweisen behandelt:

  • Aktivieren von Flowprotokollen (Version 2)
  • Deaktivieren von Flowprotokollen
  • Abfragen des Flowprotokollstatus

Voraussetzungen

  • Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.
  • ARMClient. ARMClient ist ein einfaches Befehlszeilentool zum Aufrufen der Azure Resource Manager-API. Informationen zum Installieren des Tools finden Sie unter ARMClient. Ausführliche Spezifikationen der REST-API für NSG-Flussprotokolle finden Sie unter Datenflussprotokolle – REST-API

Wichtig

Für REST-API-Aufrufe an Network Watcher ist der Ressourcengruppenname im Anforderungs-URI die Ressourcengruppe, die Network Watcher und nicht die Ressourcen, für die Sie die Diagnoseaktionen ausführen, enthält.

Anmelden mit ARMClient

Melden Sie sich mit Ihren Azure-Anmeldeinformationen bei armclient an.

armclient login

Registrieren von Insights-Anbietern

Der Microsoft.Insights-Anbieter muss registriert sein, um den Datenverkehr, der eine Netzwerksicherheitsgruppe durchläuft, erfolgreich protokollieren zu können. Wenn Sie nicht sicher sind, ob der Microsoft.Insights-Anbieter registriert ist, verwenden Sie Anbieter – Registrieren REST-API, um ihn zu registrieren.

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

Aktivieren von NSG-Datenflussprotokollen

Der Befehl zum Aktivieren von Flowprotokollen der Version 2 wird im folgenden Beispiel gezeigt. Ersetzen Sie für Version 1 den Wert des Felds „version“ durch „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

Das vorherige Beispiel gibt folgende Antwort zurück:

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

Hinweis

Deaktivieren von NSG-Flussprotokollen

Verwenden Sie das folgende Beispiel, um Flowprotokolle zu deaktivieren. Der Aufruf entspricht dem Aktivieren von Flowprotokollen – abgesehen davon, dass false für die Enabled-Eigenschaft festgelegt wird.

$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

Das vorherige Beispiel gibt folgende Antwort zurück:

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

Hinweis

Abfragen von Flowprotokollen

Der folgende REST-Aufruf fragt den Status von Datenflussprotokollen in einer Netzwerksicherheitsgruppe ab.

$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

Das folgende Beispiel zeigt die zurückgegebene Antwort:

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

Hinweis

Herunterladen eines Flowprotokolls

Bei der Erstellung wird der Speicherort eines Flowprotokolls definiert. Ein nützliches Tool für den Zugriff auf diese in einem Speicherkonto gespeicherten Datenflussprotokolle ist der Microsoft Azure Storage-Explorer. Weitere Informationen finden Sie unter Erste Schritte mit Storage-Explorer.

Wenn ein Speicherkonto angegeben wird, werden Paketerfassungsdateien in einem Speicherkonto am folgenden Speicherort gespeichert:

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

Nächste Schritte