使用 Azure 资源管理器模板管理 NSG 流日志

网络安全组流日志记录是 Azure 网络观察程序的一项功能,可用于记录有关流经网络安全组的 IP 流量的信息。 有关网络安全组流日志记录的详细信息,请参阅 NSG 流日志概述

本文介绍如何使用 Azure 资源管理器模板和 Azure PowerShell 以编程方式管理 NSG 流日志。 你可以了解如何使用 Azure 门户PowerShellAzure CLIAzure CLIREST CLI 管理 NSG 流日志。

Azure 资源管理器模板是使用声明性语法定义项目基础结构和配置的 JavaScript 对象表示法 (JSON) 文件。

先决条件

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 可通过“完整”部署模式删除资源。 若要删除流日志资源,请在“完整”模式下指定部署,而不包含要删除的资源。 有关详细信息,请参阅完整部署模式

后续步骤