使用 REST API 管理 NSG 流量記錄
網路安全組流量記錄是 Azure 網路監看員 的一項功能,可讓您記錄流經網路安全組的 IP 流量相關信息。 如需網路安全組流量記錄的詳細資訊,請參閱 NSG 流量記錄概觀。
本文說明如何使用 REST API,以使用 REST API 來啟用、停用和查詢流程記錄。 您可以瞭解如何使用 Azure 入口網站、PowerShell、Azure CLI 或 ARM 範本來管理 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
}
}
}
注意
- 網路監看員 - 設定上一個範例中使用的流程記錄設定 REST API 已過時,而且可能很快就會被取代。
- 建議使用新的 流量記錄 - 建立或更新 REST API 來建立或更新流程記錄。
停用 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 API 已過時,且可能很快就會淘汰。
- 建議使用新的 流量記錄 - 建立或更新 REST API 來停用流量記錄和 流程記錄 - 刪除 REST API 以刪除 流量記錄資源。
查詢流程記錄
下列 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 儲存體總管。 如需詳細資訊,請參閱開始使用 儲存體總管。
如果指定記憶體帳戶,封包擷取檔案會儲存到位於下列位置的記憶體帳戶:
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 流量記錄。
- 若要瞭解使用分析,請參閱 使用分析。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應