使用 Azure PowerShell 管理 NSG 流量記錄

重要

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

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

在本文中,您將了解如何使用 Azure PowerShell 建立、變更、停用或刪除 NSG 流量記錄。 您可了解如何使用 Azure 入口網站Azure CLIREST APIARM 範本來管理 NSG 流量記錄。

必要條件

  • 具有有效訂用帳戶的 Azure 帳戶。 免費建立帳戶

  • 深入解析提供者。 如需詳細資訊,請參閱註冊 Insights 提供者

  • 網路安全性群組。 如果您必須建立網路安全性群組,請參閱建立、變更或刪除網路安全性群組

  • 一個 Azure 儲存體帳戶。 如果您必須建立儲存體帳戶,請參閱使用 PowerShell 建立儲存體帳戶

  • 已在本機安裝 Azure Cloud Shell 或 Azure PowerShell。

    • 本文中的步驟會在 Azure Cloud Shell 中以互動方式執行 Azure PowerShell Cmdlet。 若要在 Cloud Shell 中執行命令,請選取程式碼區塊右上角的 [開啟 Cloud Shell]。 選取 [複製] 以複製程式碼,然後將其貼入 Cloud Shell 以執行。 您也可以從 Azure 入口網站內執行 Cloud Shell。

    • 您也可以在本機安裝 Azure PowerShell 來執行 Cmdlet。 本文需要 Az PowerShell 模組。 如需詳細資訊,請參閱安裝 Azure PowerShell (部分機器翻譯)。 若要尋找已安裝的版本,請執行 Get-InstalledModule -Name Az。 如果您在本機執行 PowerShell,請使用 Connect-AzAccount Cmdlet 登入 Azure。

註冊 Insights 提供者

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

# Register Microsoft.Insights provider.
Register-AzResourceProvider -ProviderNamespace 'Microsoft.Insights'

建立流量記錄

  1. 個別使用 Get-AzNetworkSecurityGroupGet-AzStorageAccount 取得所要建立流量記錄的網路安全性群組屬性及所要用於儲存建立流量記錄的儲存體帳戶。

    # Place the network security group properties into a variable.
    $nsg = Get-AzNetworkSecurityGroup -Name 'myNSG' -ResourceGroupName 'myResourceGroup'
    
    # Place the storage account properties into a variable.
    $sa = Get-AzStorageAccount -Name 'myStorageAccount' -ResourceGroupName 'myResourceGroup'
    

    注意

    • 如果儲存體帳戶位於不同的訂用帳戶,網路安全性群組和儲存體群組必須與相同的 Azure Active Directory 租用戶相關聯。 為每個訂用帳戶所使用的帳戶必須具有必要的權限
  2. 使用 New-AzNetworkWatcherFlowLog 以建立流量記錄。 網路監看員預設資源群組 NetworkWatcherRG 中會建立流量記錄。

    # Create a version 1 NSG flow log.
    New-AzNetworkWatcherFlowLog -Name 'myFlowLog' -Location 'eastus' -TargetResourceId $nsg.Id -StorageId $sa.Id -Enabled $true
    

建立流量記錄和流量分析工作區

  1. 個別使用 Get-AzNetworkSecurityGroupGet-AzStorageAccount 取得所要建立流量記錄的網路安全性群組屬性及所要用於儲存建立流量記錄的儲存體帳戶。

    # Place the network security group properties into a variable.
    $nsg = Get-AzNetworkSecurityGroup -Name 'myNSG' -ResourceGroupName 'myResourceGroup'
    
    # Place the storage account properties into a variable.
    $sa = Get-AzStorageAccount -Name 'myStorageAccount' -ResourceGroupName 'myResourceGroup'
    

    注意

    • 儲存體帳戶無法有網路規則以將網路存取僅限制為 Microsoft 服務或特定虛擬網路。
    • 如果儲存體帳戶位於不同的訂用帳戶,網路安全性群組和儲存體群組必須與相同的 Azure Active Directory 租用戶相關聯。 為每個訂用帳戶所使用的帳戶必須具有必要的權限
  2. 使用 New-AzOperationalInsightsWorkspace 以建立流量分析工作區。

    # Create a traffic analytics workspace and place its properties into a variable.
    $workspace = New-AzOperationalInsightsWorkspace -Name 'myWorkspace' -ResourceGroupName 'myResourceGroup' -Location 'eastus'
    
  3. 使用 New-AzNetworkWatcherFlowLog 以建立流量記錄。 網路監看員預設資源群組 NetworkWatcherRG 中會建立流量記錄。

    # Create a version 1 NSG flow log with traffic analytics.
    New-AzNetworkWatcherFlowLog -Name 'myFlowLog' -Location 'eastus' -TargetResourceId $nsg.Id -StorageId $sa.Id -Enabled $true -EnableTrafficAnalytics -TrafficAnalyticsWorkspaceId $workspace.ResourceId
    

變更流量記錄

您可使用 Set-AzNetworkWatcherFlowLog 以變更流量記錄的屬性。 例如,您可變更流量記錄版本或停用流量分析。

# Place the network security group properties into a variable.
$nsg = Get-AzNetworkSecurityGroup -Name 'myNSG' -ResourceGroupName 'myResourceGroup'

# Place the storage account properties into a variable.
$sa = Get-AzStorageAccount -Name 'myStorageAccount' -ResourceGroupName 'myResourceGroup'

# Update the NSG flow log.
Set-AzNetworkWatcherFlowLog -Name 'myFlowLog' -Location 'eastus' -TargetResourceId $nsg.Id -StorageId $sa.Id -Enabled $true -FormatVersion 2 

列出區域中的所有流量記錄

使用 Get-AzNetworkWatcherFlowLog 以列出您訂用帳戶中特定區域中的所有 NSG 流量記錄資源。

# Get all NSG flow logs in East US region.
Get-AzNetworkWatcherFlowLog -Location 'eastus' | format-table Name

注意

若要使用 -Location 參數與 Get-AzNetworkWatcherFlowLog Cmdlet,則需要 NetworkWatcherRG 資源群組的額外讀者權限。

檢視流量記錄資源的詳細資料

使用 Get-AzNetworkWatcherFlowLog 以查看流量記錄資源的詳細資料。

# Get the details of a flow log.
Get-AzNetworkWatcherFlowLog -Name 'myFlowLog' -Location 'eastus'

注意

若要使用 -Location 參數與 Get-AzNetworkWatcherFlowLog Cmdlet,則需要 NetworkWatcherRG 資源群組的額外讀者權限。

下載流量記錄

流量記錄的儲存位置會在建立時定義。 若要從儲存體帳戶存取和下載流量記錄,您可以使用 Azure 儲存體總管。 如需詳細資訊,請參閱開始使用儲存體總管

儲存至儲存體帳戶的 NSG 流量記錄檔遵循以下路徑:

https://{storageAccountName}.blob.core.windows.net/insights-logs-networksecuritygroupflowevent/resourceId=/SUBSCRIPTIONS/{subscriptionID}/RESOURCEGROUPS/{resourceGroupName}/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/{NetworkSecurityGroupName}/y={year}/m={month}/d={day}/h={hour}/m=00/macAddress={macAddress}/PT1H.json

如需關於流量記錄結構的資訊,請參閱 NSG 流量記錄的記錄格式

停用流量記錄

若要在未刪除時暫時停用停用,請使用 Set-AzNetworkWatcherFlowLog-Enabled $false 參數。 停用流量記錄會停止相關網路安全性群組的流量記錄。 然而,流量記錄資源會保留其所有設定和關聯。 您可隨時重新啟用以繼續所設定網路安全性群組的流量記錄。

注意

如果已針對流量記錄啟用流量分析,則必須先停用流量分析,才能停用流量記錄。

# Place the network security group properties into a variable.
$nsg = Get-AzNetworkSecurityGroup -Name 'myNSG' -ResourceGroupName 'myResourceGroup'

# Place the storage account properties into a variable.
$sa = Get-AzStorageAccount -Name 'myStorageAccount' -ResourceGroupName 'myResourceGroup'

# Update the NSG flow log.
Set-AzNetworkWatcherFlowLog -Enabled $false -Name 'myFlowLog' -Location 'eastus' -TargetResourceId $nsg.Id -StorageId $sa.Id

刪除流量記錄

若要永久刪除 NSG 流量記錄,請使用 Remove-AzNetworkWatcherFlowLog 命令。 刪除流量記錄也會刪除其所有設定和關聯。 若要再次開始進行相同網路安全性群組的流量記錄,您必須為其建立新的流量記錄。

# Delete the flow log.
Remove-AzNetworkWatcherFlowLog -Name 'myFlowLog' -Location 'eastus'

注意

刪除流量記錄不會從儲存體帳戶刪除流量記錄資料。 儲存在儲存體帳戶的流量記錄資料會遵循所設定的保留原則。