Zarządzanie dziennikami przepływów sieciowej grupy zabezpieczeń przy użyciu interfejsu API REST

Rejestrowanie przepływu sieciowej grupy zabezpieczeń to funkcja usługi Azure Network Watcher, która umożliwia rejestrowanie informacji o ruchu IP przepływającym przez sieciową grupę zabezpieczeń. Aby uzyskać więcej informacji na temat rejestrowania przepływu sieciowej grupy zabezpieczeń, zobacz Omówienie dzienników przepływu sieciowej grupy zabezpieczeń.

W tym artykule pokazano, jak używać interfejsu API REST do włączania, wyłączania i wysyłania zapytań do dzienników przepływu przy użyciu interfejsu API REST. Możesz dowiedzieć się, jak zarządzać dziennikiem przepływu sieciowej grupy zabezpieczeń przy użyciu witryny Azure Portal, programu PowerShell, interfejsu wiersza polecenia platformy Azure lub szablonu usługi ARM.

Z tego artykułu dowiesz się, jak wykonywać następujące działania:

  • Włączanie dzienników przepływu (wersja 2)
  • Wyłączanie dzienników przepływu
  • Stan dzienników przepływu zapytań

Wymagania wstępne

Ważne

Podczas wykonywania wywołań interfejsu API REST do usługi Network Watcher nazwa grupy zasobów w identyfikatorze URI żądania odwołuje się do grupy zasobów zawierającej usługę Network Watcher, a nie zasobów wykonywanych w ramach akcji diagnostycznych.

Logowanie przy użyciu klienta ARMClient

Zaloguj się do klienta armclient przy użyciu poświadczeń platformy Azure.

armclient login

Rejestrowanie dostawcy usługi Insights

Microsoft. Szczegółowe informacje dostawca musi być zarejestrowany w celu pomyślnego rejestrowania ruchu przepływającego przez sieciową grupę zabezpieczeń. Jeśli nie masz pewności, czy dostawca Microsoft.Szczegółowe informacje jest zarejestrowany, użyj opcji Dostawcy — zarejestruj interfejs API REST, aby go zarejestrować.

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

Włączanie dzienników przepływu sieciowej grupy zabezpieczeń

W poniższym przykładzie pokazano polecenie umożliwiające włączenie dzienników przepływu w wersji 2. W przypadku wersji 1 zastąp pole "version" ciągiem "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

Odpowiedź zwrócona z poprzedniego przykładu wygląda następująco:

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

Uwaga

Wyłączanie dzienników przepływu sieciowych grup zabezpieczeń

Użyj poniższego przykładu, aby wyłączyć dzienniki przepływu. Wywołanie jest takie samo jak włączanie dzienników przepływu, z wyjątkiem wartości false dla właściwości włączonej.

$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

Odpowiedź zwrócona z poprzedniego przykładu wygląda następująco:

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

Uwaga

Dzienniki przepływu zapytań

Następujące wywołanie REST wykonuje zapytanie dotyczące stanu dzienników przepływu w sieciowej grupie zabezpieczeń.

$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

W poniższym przykładzie przedstawiono zwróconą odpowiedź:

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

Uwaga

Pobieranie dziennika przepływu

Lokalizacja magazynu dziennika przepływu jest definiowana podczas tworzenia. Wygodne narzędzie do uzyskiwania dostępu do dzienników przepływu zapisanych na koncie magazynu jest Eksplorator usługi Microsoft Azure Storage. Aby uzyskać więcej informacji, zobacz Wprowadzenie do Eksplorator usługi Storage.

Jeśli określono konto magazynu, pliki przechwytywania pakietów są zapisywane na koncie magazynu w następującej lokalizacji:

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

Następne kroki