使用 REST API 管理 NSG 流量記錄
重要
網路安全性群組 (NSG) 流量記錄將於 2027 年 9 月 30 日淘汰。 經此淘汰後,自 2025 年 6 月 30 日起您將無法再建立新的 NSG 流量記錄。 建議您移轉 (部分機器翻譯) 至虛擬網路流量記錄,以因應 NSG 流量記錄的限制。 過了淘汰日期之後,將不再支援啟用了 NSG 流量記錄的流量分析,且將會刪除您的訂用帳戶中現有的 NSG 流量記錄資源。 不過,NSG 流量記錄將不會刪除,且將繼續遵循其各自的保留原則。 如需詳細資訊,請參閱官方公告。
網路安全性群組流量記錄是 Azure 網路監看員的一項功能,可讓您記錄流經網路安全性群組的 IP 流量相關資訊。 如需網路安全性群組流量記錄的詳細資訊,請參閱 NSG 流量記錄概觀。
本文示範如何使用 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
註冊 Insights 提供者
您必須註冊 Microsoft.Insights 提供者,才能成功記錄流經網路安全性群組的流量。 如果您不確定是否已註冊 Microsoft.Insights 提供者,請利用提供者 - 註冊 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 版,以 '1' 取代 'version' 欄位:
$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 流量記錄。
- 若要了解流量分析,請參閱流量分析。