共用方式為


使用 REST API 管理 NSG 流量記錄

重要

2027 年 9 月 30 日,網路安全組 (NSG) 流量記錄將會淘汰。 由於這項淘汰計畫,自 2025 年 6 月 30 日起,您將無法再建立新的 NSG 流量記錄。 建議您 移轉至 虛擬網路流量記錄,以克服 NSG 流量記錄的限制。 淘汰日期之後,將不再支援由 NSG 流量記錄啟用的流量分析,而且會刪除訂用帳戶中的現有 NSG 流量記錄資源。 不過,不會刪除 NSG 流量記錄記錄,而且會繼續遵循其各自的保留原則。 如需詳細資訊,請參閱官方公告

網路安全組流量記錄是 Azure 網路監看員的一項功能,可讓您記錄流經網路安全組的 IP 流量相關信息。 如需網路安全組流量記錄的詳細資訊,請參閱 NSG 流量記錄概觀

本文說明如何使用 REST API,以使用 REST API 來啟用、停用和查詢流程記錄。 您可以瞭解如何使用 azure 入口網站PowerShellAzure CLIARM 範本來管理 NSG 流量記錄。

在這篇文章中,您將學習如何:

  • 開啟流量記錄 (第 2 版)
  • 停用流量記錄
  • 查詢流程記錄狀態

先決條件

  • 具有有效訂閱的 Azure 帳戶。 免費建立帳戶
  • ARMClient。 ARMClient 是用來叫用 Azure Resource Manager API 的簡單命令行工具。 若要安裝此工具,請參閱 ARMClient。 如需 NSG 流量記錄 REST API 的詳細規格,請參閱 流量記錄 - REST API

重要

當您對網路監看員進行 REST API 呼叫時,要求 URI 中的資源組名會參考包含網路監看員的資源群組,而不是您正在執行診斷動作的資源。

使用ARMClient登入

使用您的 Azure 認證登入 armclient。

armclient login

註冊數據洞察提供商

Microsoft.Insights 提供者必須註冊,才能成功記錄流經網路安全組的流量。 如果您不確定 Microsoft.Insights 提供者是否已註冊,可以使用 Providers - Register REST API 來進行註冊。

$subscriptionId = "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
armclient post "https://management.azure.com//subscriptions/${subscriptionId}/providers/Microsoft.Insights/register?api-version=2021-04-01"

啟用 NSG 流量記錄

啟用流量記錄第 2 版的命令會顯示在下列範例中。 針對第 1 版,將 'version' 字段取代為 '1':

$subscriptionId = "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
$targetUri = "" # example /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/{resourceGroupName/providers/Microsoft.Network/networkSecurityGroups/{nsgName}"
$storageId = "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/{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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{nsgName}",
  "properties": {
    "storageId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{saName}",
    "enabled": true,
    "retentionPolicy": {
      "days": 5,
      "enabled": true
    },
    "format": {
    "type": "JSON",
    "version": 2
    }
  }
}

停用 NSG 流量記錄

使用下列範例來停用流量記錄。 呼叫與啟用流量記錄相同,但需要將已啟用屬性設為 false

$subscriptionId = "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
$targetUri = "" # example /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/{resourceGroupName/providers/Microsoft.Network/networkSecurityGroups/{nsgName}"
$storageId = "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/{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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{nsgName}",
  "properties": {
    "storageId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{saName}",
    "enabled": false,
    "retentionPolicy": {
      "days": 5,
      "enabled": true
    },
    "format": {
    "type": "JSON",
    "version": 2
    }
  }
}

注意

查詢流程記錄

下列 REST 呼叫會查詢網路安全組上的流量記錄狀態。

$subscriptionId = "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
$targetUri = "" # example /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{nsgName}",
  "properties": {
    "storageId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{saName}",
    "enabled": true,
   "retentionPolicy": {
      "days": 5,
      "enabled": true
    },
    "format": {
    "type": "JSON",
    "version": 2
    }
  }
}

注意

下載流程記錄檔

流程記錄的儲存位置定義於建立時。 存取儲存至儲存帳戶的流量記錄的便利工具是 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

後續步驟

  • 若要瞭解如何使用 Azure 內建原則來稽核或部署 NSG 流量記錄,請參閱 使用 Azure 原則管理 NSG 流量記錄。
  • 若要瞭解流量分析,請參閱 流量分析