チュートリアル:Azure portal を使用して仮想マシンへの送受信ネットワーク トラフィックをログに記録する

ネットワーク セキュリティ グループ (NSG) により、仮想マシン (VM) への着信トラフィックと 送信トラフィックをフィルターできます。 Network Watcher の NSG フロー ログ機能により、NSG を通過するネットワーク トラフィックをログに記録できます。

このチュートリアルでは、以下の内容を学習します。

  • ネットワーク セキュリティ グループで VM 作成する
  • Network Watcher を有効にして、Microsoft.Insights プロバイダーを登録する
  • Network Watcher の NSG フロー ログ機能を使用して、NSG のトラフィック フローのログを有効にする
  • ログに記録されたデータをダウンロードする
  • ログに記録されたデータを表示する

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

前提条件

  • アクティブなサブスクリプションが含まれる Azure アカウント。

Azure へのサインイン

Azure portal にサインインします。

仮想マシンの作成

  1. ポータルの上部にある検索ボックスに、「仮想マシン」と入力します。 [仮想マシン] を選択します。

  2. [仮想マシン][+ 作成][+ Azure 仮想マシン] の順に選択します。

  3. [仮想マシンの作成] で、次の情報を入力するか選択します。

    設定
    プロジェクトの詳細
    サブスクリプション サブスクリプションを選択します。
    リソース グループ [新規作成] を選択します。
    [名前] に「myResourceGroup」と入力します。
    [OK] を選択します。
    インスタンスの詳細
    仮想マシン名 myVM」と入力します。
    リージョン [(米国) 米国東部] を選択します。
    可用性のオプション [インフラストラクチャ冗長は必要ありません] を選択します。
    セキュリティの種類 規定値である [標準] のままにします。
    Image [Windows Server 2022 Datacenter: Azure Edition - Gen2] を選択します。
    Azure Spot インスタンス 既定値のままにします。
    サイズ サイズを選択します。
    管理者アカウント
    ユーザー名 ユーザー名を入力します。
    Password パスワードを入力します。
    パスワードの確認 パスワードを確認します。
    受信ポートの規則
    パブリック受信ポート 既定の [選択したポートを許可する] のままにします。
    受信ポートの選択 既定値の [RDP (3389)] のままにします。
  4. [確認と作成] を選択します。

  5. [作成] を選択します

仮想マシンの作成には、数分かかります。 VM の作成が完了するまで、残りの手順を続行しないでください。 ポータルで仮想マシンが作成される際に、myVM-nsg という名前のネットワーク セキュリティ グループも作成され、それが VM のネットワーク インターフェイスに関連付けられます。

Network Watcher を有効にする

米国東部リージョンで既に Network Watcher を有効にしている場合は、「Insights プロバイダーの登録」に進んでください。

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

  2. [Network Watcher][概要] ページで、[+ 追加] を選択します。

    ポータルで Network Watcher を有効にする方法を示すスクリーンショット。

  3. [Network Watcher の追加] で、お使いのサブスクリプションを選択します。 [リージョン][(米国) 米国東部] を選択します。

  4. [追加] を選択します。

Insights プロバイダーの登録

NSG フローのログ記録には、Microsoft.Insights プロバイダーが必要です。 このプロバイダーを登録するには、次の手順を実行します。

  1. ポータルの上部にある検索ボックスに、「サブスクリプション」と入力します。 検索結果で [サブスクリプション] を選択します。

  2. [サブスクリプション] で、プロバイダーを有効にするサブスクリプションを選択します。

  3. サブスクリプションの [設定] で、[リソース プロバイダー] を選択します。

  4. フィルター ボックスに「Microsoft.Insights」と入力します。

  5. 表示されるプロバイダーの状態が [登録済み] になっていることを確認します。 状態が [登録解除] になっている場合は、そのプロバイダーを選択してから [登録] を選択します。

    microsoft insights プロバイダーの登録のスクリーンショット。

NSG フロー ログの有効化

NSG フロー ログ データは Azure Storage アカウントに書き込まれます。 ログ データ用のストレージ アカウントを作成するには、次の手順を実行します。

  1. ポータルの上部にある検索ボックスに、「ストレージ アカウント」と入力します。 検索結果で [ストレージ アカウント] を選択します。

  2. [ストレージ アカウント] で、[+ 作成] を選択します。

  3. [ストレージ アカウントの作成] で、次の情報を入力するか選択します。

    設定
    プロジェクトの詳細
    サブスクリプション サブスクリプションを選択します。
    Resource group [myResourceGroup] を選択します。
    インスタンスの詳細
    ストレージ アカウント名 ストレージ アカウントの名前を入力します。
    3 から 24 文字の長さで、小文字と数字のみを含めることができます。また、Azure Storage 全体で一意である必要があります。
    リージョン [(米国) 米国東部] を選択します。
    パフォーマンス 規定値である [標準] のままにします。
    冗長性 既定値の [geo 冗長ストレージ (GRS)] のままにします。
  4. [レビュー] を選択します。

  5. [作成] を選択します

ストレージ アカウントの作成には、しばらくかかる場合があります。 ストレージ アカウントが作成されるまで、残りの手順を続行しないでください。 どのような場合でも、ストレージ アカウントは、NSG と同じリージョンに存在する必要があります。

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

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

  3. [Network Watcher | NSG flow logs](Network Watcher | NSG フロー ログ) で、[+ 作成] を選択します。

    ネットワーク セキュリティ グループ フロー ログの作成方法を示すスクリーンショット。

  4. [フロー ログの作成] で、次の情報を入力するか選択します。

    設定
    プロジェクトの詳細
    サブスクリプション サブスクリプションを選択します。
    ネットワーク セキュリティ グループ [myVM-nsg] を選択します。
    フロー ログ名 既定値の [myVM-nsg-myResourceGroup-flowlog] のままにします。
    インスタンスの詳細
    ストレージ アカウントを選択する
    サブスクリプション サブスクリプションを選択します。
    ストレージ アカウント 前の手順で作成したストレージ アカウントを選択します。
    保有期間 (日) ログの保有期間を入力します。
  5. [確認と作成] を選択します。

  6. [作成] を選択します

フロー ログのダウンロード

  1. ポータルの上部にある検索ボックスに、「ストレージ アカウント」と入力します。 検索結果で [ストレージ アカウント] を選択します。

  2. 前の手順で作成したストレージ アカウントを選択します。

  3. [データ ストレージ] で、[コンテナー] を選択します。

  4. [insights-logs-networksecuritygroupflowevent] コンテナーを選択します。

  5. このコンテナーで、PT1H.json ファイルに到達するまでフォルダー階層を移動します。 ログ ファイルは、次の名前付け規則に従うフォルダー階層に書き込まれます。

    https://{ストレージ アカウント名}.blob.core.windows.net/insights-logs-networksecuritygroupflowevent/resourceId=/SUBSCRIPTIONS/{サブスクリプション ID}/RESOURCEGROUPS/{リソース グループ名}/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/{NSG 名}/y={年}/m={月}/d={日}/h={時}/m=00/macAddress={Mac アドレス}/PT1H.json

  6. PT1H.json ファイルの右側にある [...] を選択し、[ダウンロード] を選択します。

    ネットワーク セキュリティ グループ フロー ログのダウンロード方法を示すスクリーンショット。

フロー ログの表示

次の JSON の例には、ログに記録されるフローごとに PT1H.json ファイルに表示されるデータが示されています。

バージョン 1 のフロー ログ イベント

{
    "time": "2018-05-01T15:00:02.1713710Z",
    "systemId": "<Id>",
    "category": "NetworkSecurityGroupFlowEvent",
    "resourceId": "/SUBSCRIPTIONS/<subscriptionId>/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/MYVM-NSG",
    "operationName": "NetworkSecurityGroupFlowEvents",
    "properties": {
        "Version": 1,
        "flows": [
            {
                "rule": "UserRule_default-allow-rdp",
                "flows": [
                    {
                        "mac": "<macAddress>",
                        "flowTuples": [
                            "1525186745,192.168.1.4,10.0.0.4,55960,3389,T,I,A"
                        ]
                    }
                ]
            }
        ]
    }
}

バージョン 2 のフロー ログ イベント

{
    "time": "2018-11-13T12:00:35.3899262Z",
    "systemId": "<Id>",
    "category": "NetworkSecurityGroupFlowEvent",
    "resourceId": "/SUBSCRIPTIONS/<subscriptionId>/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/MYVM-NSG",
    "operationName": "NetworkSecurityGroupFlowEvents",
    "properties": {
        "Version": 2,
        "flows": [
            {
                "rule": "DefaultRule_DenyAllInBound",
                "flows": [
                    {
                        "mac": "<macAddress>",
                        "flowTuples": [
                            "1542110402,94.102.49.190,10.5.16.4,28746,443,U,I,D,B,,,,",
                            "1542110424,176.119.4.10,10.5.16.4,56509,59336,T,I,D,B,,,,",
                            "1542110432,167.99.86.8,10.5.16.4,48495,8088,T,I,D,B,,,,"
                        ]
                    }
                ]
            },
            {
                "rule": "DefaultRule_AllowInternetOutBound",
                "flows": [
                    {
                        "mac": "<macAddress>",
                        "flowTuples": [
                            "1542110377,10.5.16.4,13.67.143.118,59831,443,T,O,A,B,,,,",
                            "1542110379,10.5.16.4,13.67.143.117,59932,443,T,O,A,E,1,66,1,66",
                            "1542110379,10.5.16.4,13.67.143.115,44931,443,T,O,A,C,30,16978,24,14008",
                            "1542110406,10.5.16.4,40.71.12.225,59929,443,T,O,A,E,15,8489,12,7054"
                        ]
                    }
                ]
            }
        ]
    }
}

前の出力の mac の値は、VM の作成時に作成されたネットワーク インターフェイスの MAC アドレスです。 flowTuples のコンマで区切られた情報を次に示します。

サンプル データ データが表す内容 説明
1542110377 タイム スタンプ UNIX EPOCH 形式でフローが発生した際のタイム スタンプ。 前の例では、日付は 2018 年 5 月 1 日午後 2:59:05 GMT に変換されます。
10.0.0.4 送信元 IP アドレス フローが発生したソース IP アドレス。 10.0.0.4 は、「仮想マシンの作成」で作成した仮想マシンのプライベート IP アドレスです。
13.67.143.118 宛先 IP アドレス フローが送信された宛先 IP アドレス。
44931 発信元ポート フローが発生したソース ポート。
443 宛先ポート フローが送信された宛先ポート。 トラフィックの送信先はポート 443 であったため、ログ ファイルの UserRule_default-allow-rdp という規則によって、フローが処理されました。
T Protocol フローのプロトコルが TCP (T) かまたは UDP (U) か。
O Direction トラフィックが受信 (I) かまたは送信 (O) か。
A アクション トラフィックが許可された (A) かまたは拒否された (D) か。
C フロー状態 (バージョン 2 のみ) フローの状態をキャプチャします。 次の状態があります。B:開始。フローが作成された時点です。 統計は提供されません。 C: 継続中。フローが進行中です。 5 分間隔で統計が提供されます。 E: 終了。フローが終了した時点です。 統計が提供されます。
30 送信済みパケット数 - 送信元から宛先 (バージョン 2 のみ) 最後の更新以降に送信元から宛先に送信された TCP または UDP パケットの総数。
16978 送信済みバイト数 - 送信元から宛先 (バージョン 2 のみ) 最後の更新以降に送信元から宛先に送信された TCP または UDP パケットのバイト数の合計。 パケットのバイト数には、パケット ヘッダーとペイロードが含まれます。
24 送信済みパケット数 - 宛先から送信元 (バージョン 2 のみ) 最後の更新以降に宛先から送信元に送信された TCP または UDP パケットの総数。
14008 送信済みバイト数 - 宛先から送信元 (バージョン 2 のみ) 最後の更新以降に宛先から送信元に送信された TCP および UDP パケットのバイト数の合計。 パケットのバイト数には、パケット ヘッダーとペイロードが含まれます。

次のステップ

このチュートリアルでは、次の作業を行う方法を学びました。

  • NSG の NSG フロー ログを有効にする
  • ファイルに記録されたデータをダウンロードして確認する。

JSON ファイル内の生データは解釈が難しい場合があります。 フロー ログのデータを視覚化する際は、Azure Traffic AnalyticsMicrosoft Power BI を使用できます。

NSG フロー ログを有効にする別の方法については、PowerShellAzure CLIREST APIResource Manager テンプレートを参照してください。

2 つの仮想マシン間のネットワーク通信を監視する方法については、次の記事に進んでください。