クイック スタート: Azure Resource Manager (ARM) テンプレートを使用して Azure Network Watcher NSG フロー ログを構成する

このクイックスタートでは、Azure Resource Manager (ARM) テンプレートと Azure PowerShell を使用して NSG フロー ログを有効にする方法について説明します。 詳細については、「Azure Resource Manager とは」と NSG フロー ログの概要に関するページをご覧ください。

Azure Resource Manager テンプレートは JavaScript Object Notation (JSON) ファイルであり、プロジェクトのインフラストラクチャと構成が定義されています。 このテンプレートでは、宣言型の構文が使用されています。 デプロイしようとしているものを、デプロイを作成する一連のプログラミング コマンドを記述しなくても記述できます。

まず、NSG フロー ログ オブジェクトのプロパティの概要を説明します。 サンプル テンプレートが用意されています。 このテンプレートを、ローカルの Azure PowerShell インスタンスを使用してデプロイします。

環境が前提条件を満たしていて、ARM テンプレートの使用に慣れている場合は、 [Azure へのデプロイ] ボタンを選択します。 テンプレートが Azure portal で開きます。

Resource Manager テンプレートを Azure に配置するボタン。

前提条件

アクティブなサブスクリプションが含まれる Azure アカウント。 お持ちでない場合は、開始する前に無料アカウントを作成してください。

テンプレートを確認する

このクイックスタートで使用するテンプレートは、Azure クイックスタート テンプレートからのものです。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.9.1.41621",
      "templateHash": "14580725600461536175"
    }
  },
  "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": "FlowLog1",
      "metadata": {
        "description": "Name of your Flow log resource"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Region where you resources are located"
      }
    },
    "existingNSG": {
      "type": "string",
      "metadata": {
        "description": "Resource ID of the target NSG"
      }
    },
    "retentionDays": {
      "type": "int",
      "defaultValue": 0,
      "maxValue": 365,
      "minValue": 0,
      "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": "2022-01-01",
      "name": "[parameters('networkWatcherName')]",
      "location": "[parameters('location')]",
      "properties": {}
    },
    {
      "type": "Microsoft.Network/networkWatchers/flowLogs",
      "apiVersion": "2022-01-01",
      "name": "[format('{0}/{1}', parameters('networkWatcherName'), parameters('flowLogName'))]",
      "location": "[parameters('location')]",
      "properties": {
        "targetResourceId": "[parameters('existingNSG')]",
        "storageId": "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]",
        "enabled": true,
        "retentionPolicy": {
          "days": "[parameters('retentionDays')]",
          "enabled": true
        },
        "format": {
          "type": "JSON",
          "version": "[parameters('flowLogsVersion')]"
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]"
      ]
    }
  ]
}

このテンプレートでは、次のリソースが定義されています。

前のサンプルで強調表示されているコードは、NSG フロー ログ のリソース定義を示しています。

テンプレートのデプロイ

このチュートリアルでは、既存のリソース グループと、フローのログ記録を有効にできる NSG があることを前提としています。

この記事に記載されているサンプル テンプレートは、すべて azuredeploy.json としてローカルに保存できます。 プロパティ値を更新して、お使いのサブスクリプション内の有効なリソースを参照するようにします。

テンプレートをデプロイするには、Azure PowerShell で次のコマンドを実行します。

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

Note

これらのコマンドを使用すると、ネットワーク セキュリティ グループを含むリソース グループではなく、NetworkWatcherRG リソース グループにリソースがデプロイされます。

デプロイの検証

デプロイが成功したかどうかを確認するには、次の 2 つのオプションがあります。

デプロイに問題がある場合は、「Azure Resource Manager を使用した Azure へのデプロイで発生する一般的なエラーのトラブルシューティング」を参照してください。

リソースをクリーンアップする

完全デプロイ モードを使用して Azure リソースを削除することができます。 フロー ログ リソースを削除するには、削除するリソースを含めずに、完全モードでデプロイを指定します。 完全デプロイ モードの詳細をお読みください。

Azure portal でフロー ログを無効にするか削除することもできます。

  1. ポータルの上部にある検索ボックスに、「network watcher」と入力します。 検索結果で [Network Watcher] を選択します。

  2. [ログ] の下の [フロー ログ] を選択します。

  3. [Network Watcher | フロー ログ] で、削除するフロー ログのチェックボックスをオンにします。

  4. [無効] または [削除] を選択します。 詳細については、「フロー ログを無効にする」または「フロー ログを削除する」を参照してください。

このクイックスタートでは、ARM テンプレートを使用して NSG フロー ログを有効にする方法について学習しました。 次に、トラフィック分析を使用して、NSG フロー データを視覚化する方法について学習しましょう。