使用 Azure CLI 管理 NSG 流日志
网络安全组流日志记录是 Azure 网络观察程序的一项功能,可用于记录有关流经网络安全组的 IP 流量的信息。 有关网络安全组流日志记录的详细信息,请参阅 NSG 流日志概述。
本文介绍如何使用 Azure CLI 创建、更改、禁用或删除 NSG 流日志。 你可以了解如何使用 Azure 门户、PowerShell、REST API 或 ARM 模板管理 NSG 流日志。
先决条件
具有活动订阅的 Azure 帐户。 创建试用版订阅。
Insights 提供程序。 有关详细信息,请参阅注册 Insights 提供程序。
一个网络安全组。 如果需要创建网络安全组,请参阅创建、更改或删除网络安全组。
一个 Azure 存储帐户。 如果需要创建存储帐户,请参阅使用 PowerShell 创建存储帐户。
在本地安装了 Azure CLI。
- 可以在本地安装 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'
注意
- 存储帐户不能有任何网络规则仅限 Azure 服务或特定虚拟网络进行网络访问。
- 如果存储帐户位于不同的订阅中,则网络安全组和存储帐户必须与同一 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 China East region.
az network watcher flow-log list --location 'chinaeast' --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 'chinaeast'
下载流日志
流日志的存储位置是在创建时定义的。 若要从存储帐户访问和下载流日志,可以使用 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 流日志的日志格式。
禁用流日志
若要暂时禁用流日志而不将其删除,请使用 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 'chinaeast' --no-wait 'true'
备注
删除流日志不会从存储帐户中删除流日志数据。 存储帐户中存储的流日志数据遵循配置的保留策略。
相关内容
- 若要了解如何使用 Azure 内置策略来审核或部署 NSG 流日志,请参阅使用 Azure Policy 管理 NSG 流日志。
- 若要了解流量分析,请参阅流量分析。