快速入门:使用 Bicep 文件配置 NSG 流日志

重要

网络安全组(NSG)流日志将于 2027 年 9 月 30 日停用。 2025 年 6 月 30 日之后,将无法再创建新的 NSG 流日志。 建议迁移到虚拟网络流日志,这些日志解决了 NSG 流日志的限制。 退休日期后,将不再支持 NSG 流日志中启用的流量分析功能,订阅中的现有 NSG 流日志资源也将被删除。 但是,不会从Azure Storage中删除现有的 NSG 流日志记录,并且将继续遵循其配置的保留策略。 有关详细信息,请参阅 官方公告

在本快速指南中,您将学习如何使用 Bicep 文件启用 NSG 流日志。 有关详细信息,请参阅 NSG 流日志概述什么是 Azure Resource Manager?

Bicep是一种特定于域的语言(DSL),它使用声明性语法来部署Azure资源。 它提供简明的语法、可靠的类型安全性以及对代码重用的支持。 Bicep为Azure中的基础结构即代码解决方案提供最佳创作体验。

先决条件

查看Bicep文件

本快速入门使用来自 Azure 快速入门模板创建 NSG 流日志 的 Bicep 文件。

@description('Name of the Network Watcher attached to your subscription. Format: NetworkWatcher_<region_name>')
param networkWatcherName string = 'NetworkWatcher_${location}'

@description('Name of your Flow log resource')
param flowLogName string = 'FlowLog1'

@description('Region where you resources are located')
param location string = resourceGroup().location

@description('Resource ID of the target NSG')
param existingNSG string

@description('Retention period in days. Default is zero which stands for permanent retention. Can be any Integer from 0 to 365')
@minValue(0)
@maxValue(365)
param retentionDays int = 0

@description('FlowLogs Version. Correct values are 1 or 2 (default)')
@allowed([
  1
  2
])
param flowLogsVersion int = 2

@description('Storage Account type')
@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_ZRS'
])
param storageAccountType string = 'Standard_LRS'

var storageAccountName = 'flowlogs${uniqueString(resourceGroup().id)}'

resource storageAccount 'Microsoft.Storage/storageAccounts@2021-09-01' = {
  name: storageAccountName
  location: location
  sku: {
    name: storageAccountType
  }
  kind: 'StorageV2'
  properties: {}
}

resource networkWatcher 'Microsoft.Network/networkWatchers@2022-01-01' = {
  name: networkWatcherName
  location: location
  properties: {}
}

resource flowLog 'Microsoft.Network/networkWatchers/flowLogs@2022-01-01' = {
  name: '${networkWatcherName}/${flowLogName}'
  location: location
  properties: {
    targetResourceId: existingNSG
    storageId: storageAccount.id
    enabled: true
    retentionPolicy: {
      days: retentionDays
      enabled: true
    }
    format: {
      type: 'JSON'
      version: flowLogsVersion
    }
  }
}

Bicep文件中定义了以下资源:

前面的示例中突出显示的代码显示了 NSG 流日志资源定义。

部署Bicep文件

本快速入门假设你有一个可以启用流日志记录的网络安全组。

  1. Bicep 文件另存为 main.bicep到本地计算机。

  2. 部署Bicep文件。

    New-AzResourceGroup -Name 'exampleRG' -Location 'chinaeast'
    New-AzResourceGroupDeployment -ResourceGroupName 'exampleRG' -TemplateFile ./main.bicep
    

    系统会提示您输入现有网络安全组的资源ID。 网络安全组资源 ID 的语法为:

    "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Network/networkSecurityGroups/<network-security-group-name>"
    

部署完成后,应会看到一条指出部署成功的消息。

验证部署

可通过两个选项来查看部署是否成功:

  • 你的控制台显示 ProvisioningStateSucceeded
  • 转到 NSG 流日志门户页确认所做的更改。

如果部署出现问题,请参阅 使用 Azure Resource Manager 解决常见的 Azure 部署错误

清理资源

可以使用完整的部署模式删除Azure资源。 若要删除流日志资源,请在完整模式下指定部署,而不包含要删除的资源。 详细了解完整部署模式

还可以在Azure门户中禁用 NSG 流日志:

  1. 登录到Azure门户。

  2. 在门户顶部的搜索框中,输入网络监视工具。 从搜索结果中选择 Network Watcher

  3. 在“日志”下,选择“流日志”。

  4. 在流日志列表中,选择要禁用的流日志。

  5. 选择 “禁用”。

在本快速入门中,您学习了如何使用 Bicep 文件启用 NSG 流日志。 接下来,了解如何使用流量分析可视化 NSG 流日志数据: