Guia de início rápido: configurar logs de fluxo do NSG usando um modelo do Azure Resource Manager (ARM)

Importante

Em 30 de setembro de 2027, os registos de fluxo do grupo de segurança de rede (NSG) serão retirados. Como parte dessa desativação, você não poderá mais criar novos logs de fluxo do NSG a partir de 30 de junho de 2025. Recomendamos a migração para registos de fluxo de rede virtual, que ultrapassam as limitações dos registos de fluxo NSG. Após a data de retirada, a análise de tráfego habilitada com registos de fluxo NSG não será mais suportada e os recursos existentes de registos de fluxo NSG nas suas assinaturas serão excluídos. No entanto, os registos de fluxos do NSG não serão excluídos e continuarão a seguir as suas respetivas políticas de retenção. Para obter mais informações, veja o anúncio oficial.

Neste guia de início rápido, você aprenderá a habilitar os logs de fluxo do NSG usando um modelo do Azure Resource Manager (ARM) e o Azure PowerShell. Para obter mais informações, consulte O que é o Azure Resource Manager? e Visão geral dos logs de fluxo do NSG.

Um modelo do Azure Resource Manager é um arquivo JSON (JavaScript Object Notation) que define a infraestrutura e a configuração do seu projeto. O modelo usa sintaxe declarativa. Você descreve a implantação pretendida sem escrever a sequência de comandos de programação para criar a implantação.

Começamos com uma visão geral das propriedades do objeto de log de fluxo do NSG. Nós fornecemos modelos de exemplo. Em seguida, usamos uma instância local do Azure PowerShell para implantar o modelo.

Se o seu ambiente cumpre os pré-requisitos e se está familiarizado com a utilização de modelos ARM, selecione o botão Implementar no Azure. O modelo abre-se no portal do Azure.

Botão para implantar o modelo do Gerenciador de Recursos no Azure.

Pré-requisitos

Uma conta do Azure com uma assinatura ativa. Se você não tiver uma, crie uma conta gratuita antes de começar.

Rever o modelo

O modelo que usamos neste início rápido é dos Modelos de Início Rápido do Azure.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.46.1.21595",
      "templateHash": "17695204249265756820"
    }
  },
  "parameters": {
    "networkWatcherName": {
      "type": "string",
      "defaultValue": "[format('NetworkWatcher_{0}', parameters('location'))]",
      "metadata": {
        "description": "Name of the Network Watcher attached to your subscription. Format: NetworkWatcher_<region_name>"
      }
    },
    "flowLogName": {
      "type": "string",
      "defaultValue": "VNetFlowLog1",
      "metadata": {
        "description": "Name of your flow log resource"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Region where your resources are located"
      }
    },
    "existingVNet": {
      "type": "string",
      "metadata": {
        "description": "Resource ID of the target virtual network"
      }
    },
    "retentionDays": {
      "type": "int",
      "defaultValue": 0,
      "minValue": 0,
      "maxValue": 365,
      "metadata": {
        "description": "Retention period in days. Default is zero which stands for permanent retention. Can be any Integer from 0 to 365"
      }
    },
    "flowLogsVersion": {
      "type": "int",
      "defaultValue": 2,
      "allowedValues": [
        1,
        2
      ],
      "metadata": {
        "description": "FlowLogs Version. Correct values are 1 or 2 (default)"
      }
    },
    "storageAccountType": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_ZRS"
      ],
      "metadata": {
        "description": "Storage Account type"
      }
    }
  },
  "variables": {
    "storageAccountName": "[format('flowlogs{0}', uniqueString(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-09-01",
      "name": "[variables('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageAccountType')]"
      },
      "kind": "StorageV2",
      "properties": {}
    },
    {
      "type": "Microsoft.Network/networkWatchers",
      "apiVersion": "2024-10-01",
      "name": "[parameters('networkWatcherName')]",
      "location": "[parameters('location')]",
      "properties": {}
    },
    {
      "type": "Microsoft.Network/networkWatchers/flowLogs",
      "apiVersion": "2024-10-01",
      "name": "[format('{0}/{1}', parameters('networkWatcherName'), parameters('flowLogName'))]",
      "location": "[parameters('location')]",
      "properties": {
        "targetResourceId": "[parameters('existingVNet')]",
        "storageId": "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]",
        "enabled": true,
        "retentionPolicy": {
          "days": "[parameters('retentionDays')]",
          "enabled": true
        },
        "format": {
          "type": "JSON",
          "version": "[parameters('flowLogsVersion')]"
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.Network/networkWatchers', parameters('networkWatcherName'))]",
        "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]"
      ]
    }
  ],

Os seguintes recursos são definidos no modelo:

O código realçado no exemplo anterior mostra uma definição de recurso de logs de fluxo NSG.

Implementar o modelo

Este tutorial parte do princípio de que tem um grupo de recursos existente e um NSG onde pode habilitar o registo de fluxo.

Você pode salvar qualquer um dos modelos de exemplo mostrados neste artigo localmente como azuredeploy.json. Atualize os valores de propriedade para que eles apontem para recursos válidos em sua assinatura.

Para implantar o modelo, execute o seguinte comando no Azure PowerShell:

$context = Get-AzSubscription -SubscriptionId <subscription Id>
Set-AzContext $context
New-AzResourceGroupDeployment -Name EnableFlowLog -ResourceGroupName NetworkWatcherRG `
    -TemplateFile "C:\MyTemplates\azuredeploy.json"

Note

Esses comandos implantam um recurso no grupo de recursos NetworkWatcherRG e não no grupo de recursos que contém o grupo de segurança de rede.

Validar a implementação

Você tem duas opções para ver se sua implantação foi bem-sucedida:

  • O seu console do PowerShell mostra ProvisioningState como Succeeded.
  • Vá para a página do portal de logs de fluxo NSG para confirmar as suas alterações.

Se houve problemas com a implantação, consulte Solucionar erros comuns de implantação do Azure com o Azure Resource Manager.

Limpeza de recursos

Você pode excluir recursos do Azure usando o modo de implantação completo. Para excluir um recurso de log de fluxo, especifique uma implantação no modo completo sem incluir o recurso que você deseja excluir. Leia mais sobre o modo de implantação completo.

Você também pode desabilitar ou excluir um log de fluxo no portal do Azure:

  1. Na caixa de pesquisa na parte superior do portal, digite observador de rede. Selecione Observador de Rede nos resultados da pesquisa.

  2. Em Logs, selecione Logs de fluxo.

  3. No Observador de Rede | Logs de fluxo, marque a caixa de seleção do log de fluxo que você deseja excluir.

  4. Selecione Desativar ou Excluir. Para obter mais informações, consulte Desabilitar um log de fluxo ou Excluir um log de fluxo.

Neste guia de início rápido, você aprendeu como habilitar logs de fluxo NSG usando um modelo ARM. Em seguida, saiba como visualizar seus dados de fluxo NSG usando a análise de tráfego: