网络安全组的资源日志记录
网络安全组 (NSG) 包含的规则可以用来允许或拒绝发往虚拟网络子网和/或网络接口的流量。
为 NSG 启用日志记录时,可以收集以下类型的资源日志信息:
- 事件:根据 MAC 地址记录将哪些 NSG 规则应用于虚拟机的条目。
- 规则计数器:包含应用每个 NSG 规则以拒绝或允许流量的次数的条目。 每隔 300 秒收集一次这些规则的状态。
资源日志仅适用于通过 Azure 资源管理器部署模型部署的 NSG。 对于通过经典部署模型部署的 NSG,无法启用资源日志记录。 有关详细信息,请参阅了解部署模型。
分别为要收集其诊断数据的每个 NSG 启用资源日志记录。 相反,如果对活动或操作日志感兴趣,则请参阅 Azure 平台日志概述。 如果对通过 NSG 的 IP 流量感兴趣,请参阅网络安全组的流日志。
启用日志记录
可使用 Azure 门户、Azure PowerShell 或 Azure CLI 来启用资源日志记录。
Azure 门户
登录 Azure 门户。
在 Azure 门户顶部的搜索框中,输入“网络安全组”。 在搜索结果中选择“网络安全组”。
选择要为其启用日志记录的 NSG。
在“监视”下面选择“诊断设置”,然后选择“添加诊断设置”:
在“诊断设置”中,输入名称,例如 myNsgDiagnostic。
对于“日志”,请选择“allLogs”或选择单个日志类别。 有关每个类别的详细信息,请参阅日志类别。
在“目标详细信息”下,选择一个或多个目标:
- 发送到 Log Analytics 工作区
- 存档到存储帐户
- 流式传输到事件中心
有关详细信息,请参阅日志目标。
选择“保存”。
查看和分析日志。 有关详细信息,请参阅查看和分析日志。
Azure PowerShell
注意
建议使用 Azure Az PowerShell 模块与 Azure 交互。 请参阅安装 Azure PowerShell 以开始使用。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az。
你需要 Azure PowerShell 模块 1.0.0 或更高版本。 运行 Get-Module -ListAvailable Az
查找已安装的版本。 如果需要进行升级,请参阅 Install Azure PowerShell module(安装 Azure PowerShell 模块)。 如果在本地运行 PowerShell,则还需要运行 Connect-AzAccount -Environment AzureChinaCloud cmdlet,以使用具有所需权限的帐户登录到 Azure。
若要启用资源日志记录,需要现有 NSG 的 ID。 如果没有现成的 NSG,可使用 New-AzNetworkSecurityGroup cmdlet 创建一个 NSG。
可使用 Get-AzNetworkSecurityGroup cmdlet 获取要为之启用资源日志记录的网络安全组。 将 NSG 存储在变量中以供稍后使用。 例如,若要在名为 myResourceGroup 的资源组中检索现有的名为 myNsg 的 NSG,请输入以下命令:
$Nsg=Get-AzNetworkSecurityGroup `
-Name myNsg `
-ResourceGroupName myResourceGroup
可以将资源日志写入不同的目标类型。 有关详细信息,请参阅日志目标。 在本文中,日志将会发送到 Log Analytics 工作区目标。 如果没有现成的工作区,则可使用 New-AzOperationalInsightsWorkspace cmdlet 创建一个。
使用 Get-AzOperationalInsightsWorkspace cmdlet 检索现有的 Log Analytics 工作区。 例如,要在名为 myWorkspaces 的资源组中获取和存储名为 myWorkspace 的现有工作区,可输入以下命令:
$Oms=Get-AzOperationalInsightsWorkspace `
-ResourceGroupName myWorkspaces `
-Name myWorkspace
可以启用两种类别的日志记录。 有关详细信息,请参阅日志类别。 使用 Set-AzDiagnosticSetting cmdlet 为 NSG 启用资源日志记录。 以下示例同时将事件和计数器类别数据记录到 NSG 的工作区中。 它使用了通过上述命令获取的 NSG 和工作区的 ID:
New-AzDiagnosticSetting `
-Name myDiagnosticSetting `
-ResourceId $Nsg.Id `
-WorkspaceId $Oms.ResourceId
要记录到 Log Analytics 工作区之外的目标,请在命令中使用相应的参数。 有关详细信息,请参阅 Azure 资源日志。
有关设置的详细信息,请参阅 New-AzDiagnosticSetting。
查看和分析日志。 有关详细信息,请参阅查看和分析日志。
Azure CLI
需要 2.0.38 或更高版本。 在计算机上运行 az --version
,找到已安装的版本。 如果需要进行升级,请参阅安装 Azure CLI。 如果在本地运行 CLI,则还需要运行 az login
,以使用具有所需权限的帐户登录到 Azure。
若要启用资源日志记录,需要现有 NSG 的 ID。 如果没有现成的 NSG,则可使用 az network nsg create 创建一个。
使用 az network nsg show 获取和存储要为其启用资源日志记录的网络安全组。 例如,若要在名为 myResourceGroup 的资源组中检索现有的名为 myNsg 的 NSG,请输入以下命令:
nsgId=$(az network nsg show \
--name myNsg \
--resource-group myResourceGroup \
--query id \
--output tsv)
可以将资源日志写入不同的目标类型。 有关详细信息,请参阅日志目标。 例如在本文中,日志将会发送到 Log Analytics 工作区目标。 有关详细信息,请参阅日志类别。
使用 az monitor diagnostic-settings create 为 NSG 启用资源日志记录。 以下示例会将事件和计数器类别数据同时记录到名为 myWorkspace 的现有工作区,该工作区位于名为 myWorkspaces 的资源组中。 它使用了通过上一个命令保存的 NSG 的 ID。
az monitor diagnostic-settings create \
--name myNsgDiagnostics \
--resource $nsgId \
--logs '[ { "category": "NetworkSecurityGroupEvent", "enabled": true, "retentionPolicy": { "days": 30, "enabled": true } }, { "category": "NetworkSecurityGroupRuleCounter", "enabled": true, "retentionPolicy": { "days": 30, "enabled": true } } ]' \
--workspace myWorkspace \
--resource-group myWorkspaces
如果没有现成的工作区,则可以使用 Azure 门户或 Azure PowerShell 创建一个。 可以为两种类别的日志记录启用日志。
如果只想记录一种类别或另一种类别的数据,请在上一个命令中删除不想记录其数据的类别。 如果要记录到 Log Analytics 工作区之外的目标,请使用相应的参数。 有关详细信息,请参阅 Azure 资源日志。
查看和分析日志。 有关详细信息,请参阅查看和分析日志。
日志目标
可以将诊断数据发送到以下选项:
日志类别
将为以下日志类别写入 JSON 格式的数据:事件和规则计数器。
事件
此事件日志包含有关根据 MAC 地址将哪些 NSG 规则应用于虚拟机的信息。 对每个事件记录以下数据。 在以下示例中,对 IP 地址为 192.168.1.4 和 MAC 地址为 00-0D-3A-92-6A-7C 的虚拟机记录了数据:
{
"time": "[DATE-TIME]",
"systemId": "[ID]",
"category": "NetworkSecurityGroupEvent",
"resourceId": "/SUBSCRIPTIONS/[SUBSCRIPTION-ID]/RESOURCEGROUPS/[RESOURCE-GROUP-NAME]/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/[NSG-NAME]",
"operationName": "NetworkSecurityGroupEvents",
"properties": {
"vnetResourceGuid":"[ID]",
"subnetPrefix":"192.168.1.0/24",
"macAddress":"00-0D-3A-92-6A-7C",
"primaryIPv4Address":"192.168.1.4",
"ruleName":"[SECURITY-RULE-NAME]",
"direction":"[DIRECTION-SPECIFIED-IN-RULE]",
"priority":"[PRIORITY-SPECIFIED-IN-RULE]",
"type":"[ALLOW-OR-DENY-AS-SPECIFIED-IN-RULE]",
"conditions":{
"protocols":"[PROTOCOLS-SPECIFIED-IN-RULE]",
"destinationPortRange":"[PORT-RANGE-SPECIFIED-IN-RULE]",
"sourcePortRange":"[PORT-RANGE-SPECIFIED-IN-RULE]",
"sourceIP":"[SOURCE-IP-OR-RANGE-SPECIFIED-IN-RULE]",
"destinationIP":"[DESTINATION-IP-OR-RANGE-SPECIFIED-IN-RULE]"
}
}
}
规则计数器
此规则计数器日志记录了应用到资源的每个规则。 每次应用规则时会记录以下示例数据。 在以下示例中,对 IP 地址为 192.168.1.4 和 MAC 地址为 00-0D-3A-92-6A-7C 的虚拟机记录了数据:
{
"time": "[DATE-TIME]",
"systemId": "[ID]",
"category": "NetworkSecurityGroupRuleCounter",
"resourceId": "/SUBSCRIPTIONS/[SUBSCRIPTION ID]/RESOURCEGROUPS/[RESOURCE-GROUP-NAME]/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/[NSG-NAME]",
"operationName": "NetworkSecurityGroupCounters",
"properties": {
"vnetResourceGuid":"[ID]",
"subnetPrefix":"192.168.1.0/24",
"macAddress":"00-0D-3A-92-6A-7C",
"primaryIPv4Address":"192.168.1.4",
"ruleName":"[SECURITY-RULE-NAME]",
"direction":"[DIRECTION-SPECIFIED-IN-RULE]",
"type":"[ALLOW-OR-DENY-AS-SPECIFIED-IN-RULE]",
"matchedConnections":125
}
}
注意
通信的源 IP 地址不记录。 可以为 NSG 启用 NSG 流日志记录,以便记录所有规则计数器信息以及启动通信的源 IP 地址。 NSG 流日志数据写入 Azure 存储帐户。 可以使用 Azure 网络观察程序的流量分析功能来分析数据。
查看和分析日志
如果将诊断数据发送到:
Azure 存储帐户:数据会写入到 PT1H.json 文件。 可以找到:
- 位于以下路径中的事件日志:insights-logs-networksecuritygroupevent/resourceId=/SUBSCRIPTIONS/[ID]/RESOURCEGROUPS/[RESOURCE-GROUP-NAME-FOR-NSG]/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/[NSG NAME]/y=[YEAR]/m=[MONTH/d=[DAY]/h=[HOUR]/m=[MINUTE]
- 位于以下路径中的规则计数器日志:insights-logs-networksecuritygrouprulecounter/resourceId=/SUBSCRIPTIONS/[ID]/RESOURCEGROUPS/[RESOURCE-GROUP-NAME-FOR-NSG]/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/[NSG NAME]/y=[YEAR]/m=[MONTH/d=[DAY]/h=[HOUR]/m=[MINUTE]
若要了解如何查看资源日志数据,请参阅 Azure 平台日志概述。
后续步骤
有关活动日志记录的详细信息,请参阅 Azure 平台日志概述。
默认情况下,对通过任一 Azure 部署模型创建的 NSG 启用活动日志记录。 若要在活动日志中确定完成了哪些 NSG 相关操作,请查看含有以下资源类型的条目:
- Microsoft.ClassicNetwork/networkSecurityGroups
- Microsoft.ClassicNetwork/networkSecurityGroups/securityRules
- Microsoft.Network/networkSecurityGroups
- Microsoft.Network/networkSecurityGroups/securityRules
要了解如何记录诊断信息,请参阅使用 Azure 门户记录传入和传出虚拟机的网络流量。