共用方式為


使用 REST API 管理 NSG 流量記錄

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

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

在本文中,uou 會瞭解如何:

  • 開啟流量記錄 (第 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 提供者,請使用 提供者 - 註冊 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 版,將 'version' 字段取代為 '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
    }
  }
}

注意

下載流程記錄檔

流程記錄的儲存位置定義於建立時。 存取儲存至記憶體帳戶之流量記錄的便利工具 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 流量記錄。
  • 若要瞭解使用分析,請參閱 使用分析