你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 Azure CLI 管理 NSG 流日志
重要
2027 年 9 月 30 日,网络安全组 (NSG) 流日志将停用。 在此停用过程中,从 2025 年 6 月 30 日起,你将无法再创建新的 NSG 流日志。 建议迁移到虚拟网络流日志,从而克服 NSG 流日志的限制。 自停用日期之后,将不再支持使用 NSG 流日志启用的流量分析,并且订阅中的现有 NSG 流日志资源将被删除。 但是,不会删除 NSG 流日志记录,并将继续遵循其各自的保留策略。 有关详细信息,请查看官方公告。
网络安全组流日志记录是 Azure 网络观察程序的一项功能,可用于记录有关流经网络安全组的 IP 流量的信息。 有关网络安全组流日志记录的详细信息,请参阅 NSG 流日志概述。
本文介绍如何使用 Azure CLI 创建、更改、禁用或删除 NSG 流日志。 你可以了解如何使用 Azure 门户、PowerShell、REST API 或 ARM 模板管理 NSG 流日志。
先决条件
具有活动订阅的 Azure 帐户。 免费创建帐户。
Insights 提供程序。 有关详细信息,请参阅注册 Insights 提供程序。
一个网络安全组。 如果需要创建网络安全组,请参阅创建、更改或删除网络安全组。
一个 Azure 存储帐户。 如果需要创建存储帐户,请参阅使用 PowerShell 创建存储帐户。
本地安装的 Azure Cloud Shell 或 Azure CLI。
本文中的步骤在 Azure Cloud Shell 中以交互方式运行 Azure CLI 命令。 要在 Cloud Shell 中运行命令,请选择代码块右上角的“打开 Cloud Shell”。 选择“复制”以复制代码,并将其粘贴到 Cloud Shell 以运行。 也可以从 Azure 门户中运行 Cloud Shell。
还可以 在本地安装 Azure CLI 以运行命令。 如果在本地运行 Azure CLI,请使用 az login 命令登录到 Azure。
注册 Insights 提供程序
必须注册 Microsoft.Insights 提供程序才能成功记录流经网络安全组的流量。 如果不确定是否已注册 Microsoft.Insights 提供程序,请使用 az provider register 进行注册。
# Register Microsoft.Insights provider.
az provider register --namespace 'Microsoft.Insights'
创建流日志
使用 az network watcher flow-log create 创建流日志。 流日志是在网络观察程序默认资源组 NetworkWatcherRG 中创建的。
# Create a version 1 NSG flow log.
az network watcher flow-log create --name 'myFlowLog' --nsg 'myNSG' --resource-group 'myResourceGroup' --storage-account 'myStorageAccount'
注意
- 如果存储帐户位于不同的订阅中,则网络安全组和存储帐户必须与同一 Azure Active Directory 租户相关联。 用于每个订阅的帐户必须有必要的权限。
- 如果存储帐户位于不同的资源组或订阅中,则必须指定存储帐户的完整 ID,而非其名称。 例如,如果 myStorageAccount 存储帐户位于名为 StorageRG 的资源组中,而网络安全组位于资源组 myResourceGroup 中,则必须使用
--storage-account
参数的/subscriptions/{SubscriptionID}/resourceGroups/RG-Storage/providers/Microsoft.Storage/storageAccounts/myStorageAccount
代替myStorageAccount
。
# Place the storage account resource ID into a variable.
sa=$(az storage account show --name 'myStorageAccount' --query 'id' --output 'tsv')
# Create a version 1 NSG flow log (the storage account is in a different resource group).
az network watcher flow-log create --name 'myFlowLog' --nsg 'myNSG' --resource-group 'myResourceGroup' --storage-account $sa
创建流日志和流量分析工作区
使用 az monitor log-analytics workspace create 创建 Log Analytics 工作区。
# Create a Log Analytics workspace. az monitor log-analytics workspace create --name 'myWorkspace' --resource-group 'myResourceGroup'
使用 az network watcher flow-log create 创建流日志。 流日志是在网络观察程序默认资源组 NetworkWatcherRG 中创建的。
# Create a version 1 NSG flow log and enable traffic analytics for it. az network watcher flow-log create --name 'myFlowLog' --nsg 'myNSG' --resource-group 'myResourceGroup' --storage-account 'myStorageAccount' --traffic-analytics 'true' --workspace 'myWorkspace'
注意
- 存储帐户不能有任何网络规则仅限 Microsoft 服务或特定虚拟网络进行网络访问。
- 如果存储帐户位于不同的订阅中,则网络安全组和存储帐户必须与同一 Azure Active Directory 租户相关联。 用于每个订阅的帐户必须有必要的权限。
- 如果存储帐户位于其他资源组或订阅中,则必须使用存储帐户的完整 ID。 例如,如果 myStorageAccount 存储帐户位于名为 StorageRG 的资源组中,而网络安全组位于资源组 myResourceGroup 中,则必须使用
--storage-account
参数的/subscriptions/{SubscriptionID}/resourceGroups/RG-Storage/providers/Microsoft.Storage/storageAccounts/myStorageAccount
代替myStorageAccount
。
# Place the storage account resource ID into a variable.
sa=$(az storage account show --name 'myStorageAccount' --query 'id' --output 'tsv')
# Create a Log Analytics workspace.
az monitor log-analytics workspace create --name 'myWorkspace' --resource-group 'myResourceGroup'
# Create a version 1 NSG flow log and enable traffic analytics for it (the storage account is in a different resource group).
az network watcher flow-log create --name 'myFlowLog' --nsg 'myNSG' --resource-group 'myResourceGroup' --storage-account $sa --traffic-analytics 'true' --workspace 'myWorkspace'
更改流日志
可以使用 az network watcher flow-log update 更改流日志的属性。 例如,可以更改流日志版本或禁用流量分析。
# Update the flow log.
az network watcher flow-log update --name 'myFlowLog' --nsg 'myNSG' --resource-group 'myResourceGroup' --storage-account 'myStorageAccount' --traffic-analytics 'false' --log-version '2'
列出区域中的所有流日志
使用 az network watcher flow-log list 列出订阅中特定区域内的所有 NSG 流日志资源。
# Get all NSG flow logs in East US region.
az network watcher flow-log list --location 'eastus' --out table
查看流日志资源的详细信息
使用 az network watcher flow-log show 查看流日志资源的详细信息。
# Get the details of a flow log.
az network watcher flow-log show --name 'myFlowLog' --resource-group 'NetworkWatcherRG' --location 'eastus'
下载流日志
流日志的存储位置是在创建时定义的。 若要从存储帐户访问和下载流日志,可以使用 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 流日志的日志格式。
禁用流日志
若要暂时禁用流日志而不将其删除,请使用 az network watcher flow-log update 命令。 禁用流日志会停止关联网络安全组的流日志记录。 但是,流日志资源会保留其所有设置和关联。 可以随时重新启用它,以恢复对配置的网络安全组进行流日志记录。
备注
如果为流日志启用了流量分析,则必须先禁用流量分析,然后才能禁用流日志。
# Disable traffic analytics log if it's enabled.
az network watcher flow-log update --name 'myFlowLog' --nsg 'myNSG' --resource-group 'myResourceGroup' --storage-account 'myStorageAccount' --traffic-analytics 'false' --workspace 'myWorkspace'
# Disable the flow log.
az network watcher flow-log update --name 'myFlowLog' --nsg 'myNSG' --resource-group 'myResourceGroup' --storage-account 'myStorageAccount' --enabled 'false'
删除流日志
若要永久删除流日志,请使用 az network watcher flow-log delete 命令。 删除流日志会删除其所有设置和关联。 若要再次为同一网络安全组开始流日志记录,必须为其创建新的流日志。
# Delete the flow log.
az network watcher flow-log delete --name 'myFlowLog' --location 'eastus' --no-wait 'true'
备注
删除流日志不会从存储帐户中删除流日志数据。 存储帐户中存储的流日志数据遵循配置的保留策略。
相关内容
- 若要了解如何使用 Azure 内置策略来审核或部署 NSG 流日志,请参阅使用 Azure Policy 管理 NSG 流日志。
- 若要了解流量分析,请参阅流量分析。