使用 Azure 资源管理器模板管理 NSG 流日志
网络安全组流日志记录是 Azure 网络观察程序的一项功能,可用于记录有关流经网络安全组的 IP 流量的信息。 有关网络安全组流日志记录的详细信息,请参阅 NSG 流日志概述。
本文介绍如何使用 Azure 资源管理器模板和 Azure PowerShell 以编程方式管理 NSG 流日志。 你可以了解如何使用 Azure 门户、PowerShellAzure CLI、Azure CLI 或 REST CLI 管理 NSG 流日志。
Azure 资源管理器模板是使用声明性语法定义项目基础结构和配置的 JavaScript 对象表示法 (JSON) 文件。
先决条件
- 具有活动订阅的 Azure 帐户。 创建试用版订阅。
NSG 流日志对象
以下示例显示了包含所有参数的 NSG 流日志对象。 有关对象属性的完整概述,请参阅 NSG 流日志模板参考。
{
"name": "string",
"type": "Microsoft.Network/networkWatchers/flowLogs",
"location": "string",
"apiVersion": "2022-07-01",
"properties": {
"targetResourceId": "string",
"storageId": "string",
"enabled": "boolean",
"flowAnalyticsConfiguration": {
"networkWatcherFlowAnalyticsConfiguration": {
"enabled": "boolean",
"workspaceResourceId": "string",
"trafficAnalyticsInterval": "integer"
},
"retentionPolicy": {
"days": "integer",
"enabled": "boolean"
},
"format": {
"type": "string",
"version": "integer"
}
}
}
}
若要创建 Microsoft.Network/networkWatchers/flowLogs 资源,请将以上 JSON 添加到模板的资源部分。
创建模板
若要详细了解如何使用 Azure 资源管理器模板,请参阅:
以下示例演示了用于启用 NSG 流日志的完整模板。
示例 1
示例 1 使用 ARM 模板的最简单版本,其中传递了最少的参数。 以下模板在目标网络安全组上启用了 NSG 流日志,并将它们存储在给定的存储帐户中。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"apiProfile": "2019-09-01",
"resources": [
{
"name": "myNSG-myresourcegroup-flowlog",
"type": "Microsoft.Network/networkWatchers/FlowLogs/",
"location": "chinaeast",
"apiVersion": "2022-11-01",
"properties": {
"targetResourceId": "/subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myNSG",
"storageId": "/subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/myResourceGroup/providers/Microsoft.Storage/storageAccounts/myStorageAccount",
"enabled": true,
"flowAnalyticsConfiguration": {},
"retentionPolicy": {},
"format": {}
}
}
]
}
注意
targetResourceId
是目标网络安全组的资源 ID。storageId
是目标存储帐户的资源 ID。
示例 2
示例 2 使用以下模板启用 NSG 流日志(版本 2),保留期为 5 天,流量分析的处理间隔为 10 分钟。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"apiProfile": "2019-09-01",
"resources": [
{
"name": "myNSG-myresourcegroup-flowlog",
"type": "Microsoft.Network/networkWatchers/FlowLogs/",
"location": "chinaeast",
"apiVersion": "2022-11-01",
"properties": {
"targetResourceId": "/subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myNSG",
"storageId": "/subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/myResourceGroup/providers/Microsoft.Storage/storageAccounts/myStorageAccount",
"enabled": true,
"flowAnalyticsConfiguration": {
"networkWatcherFlowAnalyticsConfiguration": {
"enabled": true,
"workspaceResourceId": "/subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/defaultresourcegroup-eus/providers/Microsoft.OperationalInsights/workspaces/DefaultWorkspace-abcdef01-2345-6789-0abc-def012345678-EUS",
"trafficAnalyticsInterval": 10
}
},
"retentionPolicy": {
"days": 5,
"enabled": true
},
"format": {
"type": "JSON",
"version": 2
}
}
}
]
}
注意
targetResourceId
是目标网络安全组的资源 ID。storageId
是目标存储帐户的资源 ID。workspaceResourceId
是流量分析工作区的资源 ID。
部署 Azure 资源管理器模板
本教程假定你已有一个资源组和一个可以启用流登录的网络安全组。
可以在本地将上述任何示例模板保存为 azuredeploy.json
。 更新属性值,使其指向订阅中的有效资源。
若要部署模板,请在 PowerShell 中运行以下命令。
$context = Get-AzSubscription -SubscriptionId <SubscriptionId>
Set-AzContext $context
New-AzResourceGroupDeployment -Name EnableFlowLog -ResourceGroupName NetworkWatcherRG `
-TemplateFile "C:\MyTemplates\azuredeploy.json"
注意
上述命令会将资源部署到“NetworkWatcherRG”资源组,而不是包含网络安全组的资源组。
验证部署
可以通过多种方法来检查部署是否成功。 PowerShell 控制台应将“ProvisioningState”显示为“Succeeded”。 此外,还可以访问流日志门户页面来确认所做的更改。 如果部署出现问题,请参阅排查使用 Azure 资源管理器时的常见 Azure 部署错误。
删除资源
Azure 可通过“完整”部署模式删除资源。 若要删除流日志资源,请在“完整”模式下指定部署,而不包含要删除的资源。 有关详细信息,请参阅完整部署模式。
后续步骤
- 若要了解如何使用 Azure 内置策略来审核或部署 NSG 流日志,请参阅使用 Azure Policy 管理 NSG 流日志。
- 若要了解流量分析,请参阅流量分析。