Share via


使用 Azure PowerShell 管理 NSG 流量記錄

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

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

必要條件

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

  • 深入解析提供者。 如需詳細資訊,請參閱 Register 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。

註冊深入解析提供者

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

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

建立流程記錄檔

  1. 取得您想要建立流量記錄的網路安全組屬性,以及您想要分別使用 Get-AzNetworkSecurityGroupGet-Az 儲存體 Account 儲存所建立流量記錄的記憶體帳戶。

    # 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-Az 儲存體 Account 儲存所建立流量記錄的記憶體帳戶。

    # 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

注意

若要搭配 -LocationGet-AzNetworkWatcherFlowLog Cmdlet 使用 參數,您需要 NetworkWatcherRG 資源群組中的其他讀取者許可權。

檢視流量記錄資源的詳細數據

使用 Get-AzNetworkWatcherFlowLog 來查看流量記錄資源的詳細數據。

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

注意

若要搭配 -LocationGet-AzNetworkWatcherFlowLog Cmdlet 使用 參數,您需要 NetworkWatcherRG 資源群組中的其他讀取者許可權。

下載流程記錄檔

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

儲存至記憶體帳戶的 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'

注意

刪除流量記錄不會從記憶體帳戶刪除流量記錄數據。 儲存在記憶體帳戶中的流量記錄數據會遵循已設定的保留原則。

下一步

  • 若要瞭解如何使用 Azure 內建原則來稽核或部署 NSG 流量記錄,請參閱使用 Azure 原則 管理 NSG 流量記錄。
  • 若要瞭解使用分析,請參閱 使用分析