使用 Azure PowerShell 管理 NSG 流量記錄
網路安全組流量記錄是 Azure 網路監看員 的一項功能,可讓您記錄流經網路安全組的 IP 流量相關信息。 如需網路安全組流量記錄的詳細資訊,請參閱 NSG 流量記錄概觀。
在本文中,您將瞭解如何使用 Azure PowerShell 建立、變更、停用或刪除 NSG 流量記錄。 您可以瞭解如何使用 Azure 入口網站、Azure CLI、REST API 或 ARM 範本來管理 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'
建立流程記錄檔
取得您想要建立流量記錄的網路安全組屬性,以及您想要分別使用 Get-AzNetworkSecurityGroup 和 Get-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 租使用者相關聯。 您用於每個訂用帳戶的 帳戶必須具有必要的許可權。
使用 New-AzNetworkWatcherFlowLog 建立流程記錄。 流程記錄會在 網路監看員 默認資源群組 NetworkWatcherRG 中建立。
# Create a version 1 NSG flow log. New-AzNetworkWatcherFlowLog -Name 'myFlowLog' -Location 'eastus' -TargetResourceId $nsg.Id -StorageId $sa.Id -Enabled $true
建立流程記錄和使用分析工作區
取得您想要建立流量記錄的網路安全組屬性,以及您想要分別使用 Get-AzNetworkSecurityGroup 和 Get-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 租使用者相關聯。 您用於每個訂用帳戶的 帳戶必須具有必要的許可權。
使用 New-AzOperationalInsightsWorkspace 建立使用分析工作區。
# Create a traffic analytics workspace and place its properties into a variable. $workspace = New-AzOperationalInsightsWorkspace -Name 'myWorkspace' -ResourceGroupName 'myResourceGroup' -Location 'eastus'
使用 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 儲存體 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 流量記錄。
- 若要瞭解使用分析,請參閱 使用分析。