Бөлісу құралы:


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

Внимание

30 сентября 2027 г. журналы потоков безопасности сети (NSG) будут прекращены. В рамках этого выхода на пенсию вы больше не сможете создавать новые журналы потоков NSG с 30 июня 2025 года. Мы рекомендуем перенести журналы потоков виртуальной сети, которые преодолевают ограничения журналов потоков NSG. После выхода на пенсию аналитика трафика, включенная с помощью журналов потоков NSG, больше не будет поддерживаться, а существующие ресурсы журналов потоков NSG в подписках будут удалены. Однако записи журналов потоков NSG не будут удалены и будут продолжать следовать соответствующим политикам хранения. Дополнительные сведения см. в официальном объявлении.

Ведение журнала потоков группы безопасности сети — это функция 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.Insights должен быть зарегистрирован для успешного передачи трафика журнала через группу безопасности сети. Если вы не уверены , зарегистрирован ли поставщик Microsoft.Insights , используйте поставщики — зарегистрируйте 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 Explorer. Дополнительные сведения см. в статье "Начало работы с Обозреватель службы хранилища".

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

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

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