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

重要

2027 年 9 月 30 日,网络安全组(NSG)流日志将停用。 作为此停用的一部分,从 2025 年 6 月 30 日起,您将无法再创建新的 NSG 流日志。 建议迁移到虚拟网络流日志,从而克服 NSG 流日志的限制。 停用日期后,将不再支持使用 NSG 流日志启用的流量分析,并且订阅中的现有 NSG 流日志资源将被删除。 但是,不会删除 NSG 流日志记录,并且将继续遵循其各自的保留策略。 有关详细信息,请查看官方公告

本快速入门介绍如何使用 Bicep 文件启用 NSG 流日志。 有关详细信息,请参阅 NSG 流日志概述什么是 Azure 资源管理器?

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 资源管理器时的常见 Azure 部署错误

清理资源

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

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

  1. 登录到 Azure 门户。

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

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

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

  5. 选择禁用

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