使用 REST API 管理 NSG 流量記錄
重要
2027 年 9 月 30 日,網路安全組 (NSG) 流量記錄將會淘汰。 由於這項淘汰計畫,自 2025 年 6 月 30 日起,您將無法再建立新的 NSG 流量記錄。 建議您 將 移轉至 虛擬網路流量記錄,以克服 NSG 流量記錄的限制。 淘汰日期之後,將不再支援由 NSG 流量記錄啟用的流量分析,而且會刪除訂用帳戶中的現有 NSG 流量記錄資源。 不過,不會刪除 NSG 流量記錄記錄,而且會繼續遵循其各自的保留原則。 如需詳細資訊,請參閱官方公告 。
網路安全組流量記錄是 Azure 網路監看員的一項功能,可讓您記錄流經網路安全組的 IP 流量相關信息。 如需網路安全組流量記錄的詳細資訊,請參閱 NSG 流量記錄概觀。
本文說明如何使用 REST API,以使用 REST API 來啟用、停用和查詢流程記錄。 您可以瞭解如何使用 azure 入口網站、PowerShell、Azure CLI或 ARM 範本來管理 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
}
}
}
註
- 網路監看員 - 設定先前範例中使用的 REST API 流量記錄組態,已過時且可能很快就會被取代。
- 建議使用新的 流量記錄 - 建立或更新 REST API 來建立或更新流程記錄。
停用 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 API 流量記錄組態,已過時且可能很快就會被取代。
- 建議使用新的 流量記錄 - 建立或更新 REST API 來停用流量記錄和 流量記錄 - 刪除 REST API 來刪除流量記錄資源。
查詢流程記錄
下列 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
}
}
}
注意
- 網路監看員 - 取得流量記錄狀態 上一個範例中使用的 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
後續步驟
- 若要瞭解如何使用 Azure 內建原則來稽核或部署 NSG 流量記錄,請參閱 使用 Azure 原則管理 NSG 流量記錄。
- 若要瞭解流量分析,請參閱 流量分析。