Управление журналами потоков NSG с помощью REST API

Ведение журнала потоков группы безопасности сети — это функция Azure Наблюдатель за сетями, которая позволяет записывать сведения о IP-трафике, проходящим через группу безопасности сети. Дополнительные сведения о ведении журнала потоков группы безопасности сети см. в обзоре журналов потоков NSG.

В этой статье показано, как использовать REST API для включения, отключения и выполнения запросов журналов потоков с помощью REST API. Вы можете узнать, как управлять журналом потоков NSG с помощью шаблона портал Azure, PowerShell, Azure CLI или ARM.

В этой статье вы узнаете, как:

  • включить журналы потоков (версии 2)
  • отключить журналы потоков;
  • запросить состояние журналов потоков.

Необходимые компоненты

Внимание

При вызове REST API к Наблюдатель за сетями имя группы ресурсов в URI запроса ссылается на группу ресурсов, содержащую Наблюдатель за сетями, а не ресурсы, с которыми вы выполняете диагностические действия.

Выполните вход с помощью ARMClient

Войдите в armclient с помощью учетных данных Azure.

armclient login

Регистрация поставщика Microsoft Insights

Microsoft. Аналитика поставщик должен быть зарегистрирован для успешного прохождения трафика журнала через группу безопасности сети. Если вы не уверены, зарегистрирован ли поставщик Microsoft.Аналитика, используйте поставщики — зарегистрируйте REST API, чтобы зарегистрировать его.

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

Включить журналы потоков NSG

Команда для включения журналов потоков версии 2 показана в следующем примере. Для версии 1 замените поле "версия" на "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

Ответ, возвращенный из предыдущего примера, выглядит следующим образом:

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

Примечание.

Отключение журналов потоков NSG

Чтобы отключить журналы потоков, используйте приведенный ниже пример кода. Команда для включения и отключения журналов потоков совпадает, но в этом случае для свойства enabled необходимо задать значение false.

$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

Ответ, возвращенный из предыдущего примера, выглядит следующим образом:

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

Примечание.

Запрос журналов потоков

Следующий вызов REST запрашивает состояние журналов потоков в группе безопасности сети.

$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

В следующем примере показан возвращаемый ответ:

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

Примечание.

  • Для Наблюдатель за сетями — REST API состояния журнала потока, используемого в предыдущем примере, требуется дополнительное разрешение чтения в группе ресурсов наблюдателя за сетями. Кроме того, этот API является старым и вскоре может быть нерекомендуем.
  • Рекомендуется использовать новые журналы потоков — получение REST API для журналов потоков запросов.

Скачивание журнала потоков

Место хранения журнала потоков определяется при его создании. Удобный инструмент для доступа к журналам потоков, сохраненным в учетной записи хранения, служба хранилища Microsoft Azure Обозреватель. Дополнительные сведения см. в статье "Начало работы с Обозреватель службы хранилища".

При указании учетной записи хранения файлы записи пакетов сохраняются в ней по следующему адресу:

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

Следующие шаги