使用 Azure PowerShell 管理 NSG 流日志
网络安全组流日志记录是 Azure 网络观察程序的一项功能,可用于记录有关流经网络安全组的 IP 流量的信息。 有关网络安全组流日志记录的详细信息,请参阅 NSG 流日志概述。
本文介绍如何使用 Azure PowerShell 创建、更改、禁用或删除 NSG 流日志。 你可以了解如何使用 Azure 门户、Azure CLI、REST API 或 ARM 模板管理 NSG 流日志。
先决条件
具有活动订阅的 Azure 帐户。 创建试用版订阅。
Insights 提供程序。 有关详细信息,请参阅注册 Insights 提供程序。
一个网络安全组。 如果需要创建网络安全组,请参阅创建、更改或删除网络安全组。
一个 Azure 存储帐户。 如果需要创建存储帐户,请参阅使用 PowerShell 创建存储帐户。
在本地安装了 Azure PowerShell。
- 可在本地安装 Azure PowerShell 来运行 cmdlet。 本文需要 Az PowerShell 模块。 有关详细信息,请参阅如何安装 Azure PowerShell。 要查找已安装的版本,请运行
Get-InstalledModule -Name Az
。 如果在本地运行 PowerShell,请使用 Connect-AzAccount -Environment AzureChinaCloud cmdlet 登录到 Azure。
- 可在本地安装 Azure PowerShell 来运行 cmdlet。 本文需要 Az PowerShell 模块。 有关详细信息,请参阅如何安装 Azure PowerShell。 要查找已安装的版本,请运行
注册 Insights 提供程序
必须注册 Microsoft.Insights 提供程序才能成功记录流经网络安全组的流量。 如果你不确定是否已注册 Microsoft.Insights 提供程序,请使用 Register-AzResourceProvider 来注册。
# Register Microsoft.Insights provider.
Register-AzResourceProvider -ProviderNamespace 'Microsoft.Insights'
创建流日志
分别使用 Get-AzNetworkSecurityGroup 和 Get-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 租户相关联。 用于每个订阅的帐户必须有必要的权限。
使用 New-AzNetworkWatcherFlowLog 创建流日志。 流日志是在网络观察程序默认资源组 NetworkWatcherRG 中创建的。
# Create a version 1 NSG flow log. New-AzNetworkWatcherFlowLog -Name 'myFlowLog' -Location 'chinaeast' -TargetResourceId $nsg.Id -StorageId $sa.Id -Enabled $true
创建流日志和流量分析工作区
分别使用 Get-AzNetworkSecurityGroup 和 Get-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 服务或特定虚拟网络进行网络访问。
- 如果存储帐户位于不同的订阅中,则网络安全组和存储帐户必须与同一 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 'chinaeast'
使用 New-AzNetworkWatcherFlowLog 创建流日志。 流日志是在网络观察程序默认资源组 NetworkWatcherRG 中创建的。
# Create a version 1 NSG flow log with traffic analytics. New-AzNetworkWatcherFlowLog -Name 'myFlowLog' -Location 'chinaeast' -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 'chinaeast' -TargetResourceId $nsg.Id -StorageId $sa.Id -Enabled $true -FormatVersion 2
列出区域中的所有流日志
使用 Get-AzNetworkWatcherFlowLog 列出订阅中特定区域内的所有 NSG 流日志资源。
# Get all NSG flow logs in China East region.
Get-AzNetworkWatcherFlowLog -Location 'chinaeast' | format-table Name
注意
若要将 -Location
参数与 Get-AzNetworkWatcherFlowLog
cmdlet 结合使用,需要在 NetworkWatcherRG 资源组中拥有额外的“读取者”权限。
查看流日志资源的详细信息
使用 Get-AzNetworkWatcherFlowLog 查看流日志资源的详细信息。
# Get the details of a flow log.
Get-AzNetworkWatcherFlowLog -Name 'myFlowLog' -Location 'chinaeast'
注意
若要将 -Location
参数与 Get-AzNetworkWatcherFlowLog
cmdlet 结合使用,需要在 NetworkWatcherRG 资源组中拥有额外的“读取者”权限。
下载流日志
流日志的存储位置是在创建时定义的。 若要从存储帐户访问和下载流日志,可以使用 Azure 存储资源管理器。 有关详细信息,请参阅存储资源管理器入门。
NSG 流日志文件保存到存储账户的路径为:
https://{storageAccountName}.blob.core.chinacloudapi.cn/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 流日志的日志格式。
禁用流日志
若要暂时禁用流日志而不将其删除,请结合 -Enabled $false
参数使用 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 -Enabled $false -Name 'myFlowLog' -Location 'chinaeast' -TargetResourceId $nsg.Id -StorageId $sa.Id
删除流日志
若要永久删除 NSG 流日志,请使用 Remove-AzNetworkWatcherFlowLog 命令。 删除流日志会删除其所有设置和关联。 若要再次为同一网络安全组开始流日志记录,必须为其创建新的流日志。
# Delete the flow log.
Remove-AzNetworkWatcherFlowLog -Name 'myFlowLog' -Location 'chinaeast'
备注
删除流日志不会从存储帐户中删除流日志数据。 存储帐户中存储的流日志数据遵循配置的保留策略。
相关内容
- 若要了解如何使用 Azure 内置策略来审核或部署 NSG 流日志,请参阅使用 Azure Policy 管理 NSG 流日志。
- 若要了解流量分析,请参阅流量分析。