【Azure/Network Watcher】NSGフローログの使い方(ネットワークトラフィックを分析する)

こんにちは、Aireです。

今回はAzure Network Watcherに含まれるNSGフローログの使い方を紹介します。

NSGフローログを使用することで、NSGを通過するフローがログとしてAzureリソースに記録され、ログを可視化・分析することができます。

目次

前提条件

NSGフローログを作成する上で必要なリソースを記載します。

  1. NSG:NSGフローログでは、指定したNSGを通過するネットワークトラフィックをログとして記録します。
  2. Insightsプロバイダ:NSGフローログを記録するためには、サブスクリプションにMicrosoft.insightsが登録されている必要があります。(デフォルトの設定はRegistered(登録済み)ですが、もしNSGフローログの記録が行われない場合は、対象のサブスクリプションに移動し、[設定]-[リソースプロバイダー]で本設定を確認してください)
  3. Network Watcherリソースグループ:作成したNSGフローログは、本リソースグループに割り当てられます。
  4. ストレージアカウント:NSGフローログのデータを格納します。
    • 場所:NSGと同じリージョンに存在する必要があります。
    • パフォーマンス:Standardのみサポートされています。
    • アクセスキー:アクセスキーをストレージアカウントに変更すると、NSGフローログの動作が停止します。(その場合はNSGフローログを一旦無効にして、再度有効にしてください)

NSGフローログを作成する

サービス検索欄で「Network Watcher」を検索・選択後、[NSGフローログ]に移動し、[作成]をクリックします。

NSGフローログの作成画面に移動したら、[基本]タブで以下の設定を行います。

項目説明
NSGの選択選択したNSGを介して、IPトラフィックの情報を収集します。
ストレージアカウントデータの送信先となるストレージアカウントを選択します。(NSGフローログの作成後に変更可能)
リテンション期間(日数)データの保持期間(0〜365)を指定します。0を指定した場合は、データを永続的に保持します。(NSGフローログの作成後に変更可能)

[構成]タブで以下の設定を行います。

項目説明
フローログのバージョンバージョン1と2があります。バージョン間で保持する情報に若干の差異があります。バージョン2はバージョン1を拡張したものなので基本的にはバージョン2で良いです。(NSGフローログの作成後に変更可能)
Traffic Analyticsを有効にするNSGフローログおよびAzureリソースのデータを基に分析と視覚化を行います。追加の従量課金が発生します。(NSGフローログの作成後に変更可能)

設定値を確認し、[作成]をクリックします。

NSGフローログを可視化する

NSGフローログを作成したらデータを分析し、可視化を行います。Microsoft LearnのNSGフローのログ記録の概要では、以下の方法が紹介されています。

  • Azure Traffic Analytics:NSGフローログを分析・可視化するAzureのネイティブサービスです。
  • Power BI:Microsoft社が提供するBIツールです。
  • Elastic Stack:Elastic社が提供する、データの収集や加工、集計、分析を行えるツール群です。
  • Grafana:データベースの可視化やアラートの設定を行えるOSSです。
  • Graylog:ログの収集や管理、可視化が可能なOSSです。

Azure Traffic Analytics以外の方法は上記ページにチュートリアルが掲載されているので、ここではAzure Traffic Analyticsを活用してデータを視覚化する手順を記載します。

  1. NSGフローログを作成する際、または作成した後のフローログ設定画面で以下の設定を行います。
項目説明
Traffic Analyticsを有効にするAzure Traffic Analyticsを使用するのでチェックを入れます。
トラフィック分析の処理間隔Traffic Analyticsによって、1時間ごとまたは10分ごとに、ストレージアカウントからNSGフローログを収集、処理します。
Log AnalyticsワークスペースTraffic Analyticsは未加工のNSGフローログにアクセスします。分析で使用される集計済みのインデックス付きデータをLog Analyticsワークスペースに格納します。

Traffic Analyticsは、指定した処理間隔ごとにストレージアカウントからBLOBを取得します。ソースIP、宛先IP、宛先ポート、NSG、NSGルール、フロー方向(受信/送信)、プロトコル(TCP/UDP)が同じフローは、1つのフローとして集約されます(同じフローは「フローカウント」欄にカウント数として記載され、ログの容量を削減します)。

  1. Network Watcherの画面に戻り、[トラフィック分析]を選択すると分析結果が表示されます。

[トラフィック分析]を選択し、「選択したワークスペースに関して存在するのはリソース データ(トポロジ)のみで、フローの情報はない可能性があります。」と表示される場合、リソース間の通信フローがなくデータが表示されていない可能性があります。その場合、しばらく待ってから再度トラフィック分析を確認してください。データが可視化されるまでに最大で30分程度かかります。

Traffic Analyticsで可視化したNSGフローログを確認する

Traffic Analyticsを有効にすることで可視化されたNSGフローログの情報を記載します。

トラフィックの可視化

指定期間に該当する受信/送信フローの総数が表示されます。図中のフローをクリックすると、ログの検索画面に移動し、特定のログを確認できます。

環境

リージョンや仮想ネットワーク、サブネット、NSGの概要が表示されます。具体的には、Traffic Analyticsが有効なNSGやリージョンの数、アクティブなフローログがある仮想ネットワークやサブネットの数が分かります。それぞれの[表示]ボタンをクリックすると、該当するNSGや仮想ネットワークなど詳細情報を確認できます。

トラフィックの分布

フロー数の多い上位20件のIP(仮想マシン)やサブネット、VNet、VMSS(仮想マシンスケールセット)が表示されます。[すべて表示]をクリックすると、詳細情報を確認できます。

NSGヒット

NSGおよびNSGルールの分析結果として、トラフィックの多いNSGやルールを確認できます。[すべて表示]をクリックすると、詳細情報を確認できます。例えば、インターネットへのアウトバウンド通信を許可した回数(=トラフィックがNSGのAllowInternetOutBoundルールにヒットした回数)などが分かります。

アプリケーションポート

フロー数の多い上位のポート/プロトコルが表示されます。[すべて表示]をクリックすると、詳細情報を確認できます。例えば、許可または悪意のあるものとしてブロックされたtelnet(宛先ポート:23)のフロー数などが分かります。

ネットワークアプリケーションリソース

フロー数の多い上位のゲートウェイやロードバランサーが表示されます。[すべて表示]をクリックすると、詳細情報を確認できます。

補足

Traffic Analyticsで使用するデータの保有期間を長くする

NSGフローログを可視化するためにTraffic Analyticsを使用する場合、分析用のデータはLog Analyticsワークスペースに保管されますが、Log Analyticsワークスペース上のデータの保有期間は、デフォルトでは30日です。

データをより長い期間保有したい場合は、Log Analyticsワークスペースのデータ保有期間を変更してください。

なお、Traffic Analyticsを有効にするとLog Analyticsワークスペース内に「AzureNetworkAnalytics_CL」テーブルが作成されるので、Log Analyticsワークスペース内の全てのデータではなく、Traffic Analytics用のデータの保有期間のみを設定したい場合は、当該テーブルのデータ保有期間を設定するようにしてください。

Log Analyticsワークスペースのデータ保有期間の設定方法は、以下の記事を参考にしてください。

エンドポイントを使用してNSGフローログのセキュリティを強化する

NSGフローログはストレージアカウントに格納されるため、エンドポイントの使用によるセキュリティ強化はシステム設計時の1つの観点になります。以下の2パターンがあります。

  • サービスエンドポイント(およびサービスエンドポイントポリシー)を使用する
  • プライベートエンドポイントを使用する

以下、それぞれの手順を記載します。

サービスエンドポイント(およびサービスエンドポイントポリシー)を使用する

はじめにサービスエンドポイントポリシーを作成します。

  1. サービス検索欄で「サービスエンドポイントポリシー」を検索・選択後、[作成]をクリックします。
  2. [基本]タブで以下の設定を行います。
項目説明
リソースグループサービスエンドポイントポリシーを管理するリソースグループを選択します。
名前サービスエンドポイントポリシーの名前を入力します。
場所NSGフローログを記録する仮想ネットワークと同じリージョンを選択します。
  1. [ポリシー定義]タブで[リソースを追加する]をクリックし、以下の設定を行います。
項目説明
サービスMicrosoft.Storageのみ選択可能です。
スコープ[サブスクリプションのすべてのアカウント]、[リソースグループのすべてのアカウント]、[単一のアカウント]のいずれかを選択します。
サブスクリプションサブスクリプションを指定します。
リソースグループ[リソースグループのすべてのアカウント]または[単一のアカウント]を選択した場合にリソースを指定します。
リソース[単一のアカウント]を選択した場合にリソースを指定します。

次にサービスエンドポイントをサブネットに追加します。

  1. サービスエンドポイントを追加するサブネットのある仮想ネットワークに移動し、[設定]-[サブネット]を選択します。
  2. サービスエンドポイントを追加するサブネットをクリックし、以下の設定を行います。
項目説明
サービスMicrosoft.Storageを選択します。
サービスエンドポイントポリシー作成したサービスエンドポイントポリシーを選択します。

プライベートエンドポイントを使用する

  1. NSGフローログを記録するストレージアカウントに移動し、[セキュリティとネットワーク]-[ネットワーク]を選択します。
  2. [プライベートエンドポイント接続]タブより、[プライベートエンドポイント]をクリックします。
  1. プライベートエンドポイントの作成画面に移動します。[基本]タブで以下の設定を行います。
項目説明
リソースグループプライベートエンドポイントを管理するリソースグループを選択します。
名前プライベートエンドポイントの名前を入力します。
ネットワークインターフェイス名プライベートエンドポイントとしてのネットワークインターフェイスの名前を入力します。(プライベートエンドポイントは仮想ネットワークのプライベートIPアドレスを使用するネットワークインターフェイスです)
  1. [リソース]タブで以下の設定を行います。
項目説明
対象サブリソース接続先となるリソースの種類を選択します。
  1. [仮想ネットワーク]タブで以下の設定を行います。
項目説明
仮想ネットワークプライベートエンドポイントを追加するサブネットのある仮想ネットワークを選択します。
サブネットプライベートエンドポイントを追加するサブネットを選択します。
プライベートIP構成IPアドレスを動的に割り当てるか、静的に割り当てるか選択します。
メンバー名IPアドレスを静的に割り当てる場合、IPアドレスの名前と値を入力します。
  1. [DNS]タブで以下の設定を行い、プライベートエンドポイントを作成します。
項目説明
プライベートDNSゾーンと統合するAzureの推奨設定に従い、「はい」を選択します。
リソースグループプライベートDNSゾーンを使用するリソースグループを選択します。

プライベートエンドポイントを使用する場合、プライベートエンドポイントのネットワークポリシーを有効化することで、NSGを使用してプライベートエンドポイントへのトラフィックを制御することができますが、2022年11月時点では、NSGフローログはサポートされていないようです。最新の情報はプライベートエンドポイントとは – Azure Private Linkの制限事項を確認してください。

以上、ここまで。

この記事を書いた人

目次