JavaScriptを有効にしてください

Vnet フローログを試し隊

 ·   4 分で読めます  ·   Kento

先日 Public Preview が発表された Vnet フローログを試してみます
Public preview: Azure VNet flow logs | Azure updates | Microsoft Azure

Vnet フローログとは

Vnet フローログは Azure の仮想ネットワークを通るトラフィックをログとして ストレージ アカウントにエクスポートする機能です
エクスポートしたログはそのままだと見ずらいので、Azure Network Watcher の1つの機能にあたる Traffic Analytics と連携して分析をしたりします

NSG フローログとの比較

機能面

Vnet フローログと似たサービスで従来から提供している NSG フローログというものがあります
名前の通り NSG を通るトラフィックをストレージアカウントにエクスポートする機能になります
以下のような課題があります

一方で Vnet フローログの場合は Vnet 単位で有効化するので 1つ目の構成ミスは発生確率が下がると思います
2つ目の取れないログについてはプレビュー中でまだ情報がすべてでていませんが、Azure Virtual Network Manager の Security Admin や、Vnet 暗号化など NSG フローログでは取得できなかったログが取れるそうです

ネットワーク セキュリティ グループ規則によって許可または拒否されたトラフィックを識別するための既存のサポートに加えて、VNet フロー ログでは、Azure Virtual Network Manager セキュリティ管理規則によって許可または拒否されたトラフィックの識別がサポートされます。 VNet フロー ログでは、仮想ネットワーク暗号化が有効になっているシナリオでのネットワーク トラフィックの暗号化状態の評価もサポートされています。

VNet フロー ログ (プレビュー) - Azure Network Watcher | Microsoft Learn

ログの形式

細かいところは公開情報を見てもらうとして、以下の違いがありそうです

項目 説明 NSG フローログ VNet フローログ
Traffic decision トラフィックが許可されたか、拒否されたか ×
Flow state フローの状態 (開始、継続、終了、拒否) ○ (拒否の状態の記載はない)
Flow encryption フローの暗号化の状態 ×

Vnet フローログは Traffic decision が、Flow State に統合されているように見えます
Flow encryption はシンプルに Vnet フローログだけに実装されているようです

ざっくり手順

  1. プレビューの申請
  2. Insights プロバイダーの登録
  3. VNet フロー ログを有効
  4. ログのエクスポート状況を確認

執筆時点では、PowerShell と CLI を使った方法が提供されています
今回は PowerShell を使って作業を行います

1. プレビューの申請

この記事の執筆時点だとサブスクリプションを申請しないと利用できないので申請をします

パブリック プレビューへのアクセス権を取得するためにサインアップするには、VNet フロー ログ - パブリック プレビューサインアップのページを参照してください。

VNet フロー ログ (プレビュー) - Azure Network Watcher | Microsoft Learn

2. Insights プロバイダーの登録

もし Microsoft.Insights プロバイダーが登録されていなければ登録作業を行います

1
2
# Register Microsoft.Insights provider.
Register-AzResourceProvider -ProviderNamespace Microsoft.Insights

3. VNet フロー ログを有効

ストレージアカウントや仮想ネットワークなどは既存のものを利用します
以下のコマンドを参考に実行します

1
2
3
4
5
6
7
# Place the virtual network configuration into a variable.
$vnet = Get-AzVirtualNetwork -Name myVNet -ResourceGroupName myResourceGroup
# Place the storage account configuration into a variable.
$storageAccount = Get-AzStorageAccount -Name myStorageAccount -ResourceGroupName myResourceGroup

# Create a VNet flow log.
New-AzNetworkWatcherFlowLog -Enabled $true -Name myVNetFlowLog -NetworkWatcherName NetworkWatcher_eastus -ResourceGroupName NetworkWatcherRG -StorageId $storageAccount.Id -TargetResourceId $vnet.Id

構成が完了すると Azure Portal の Network Watcher のページから確認ができました

portal01
Network Watcher のフローログページ:

4. ログのエクスポート状況を確認

しばらくすると設定したストレージアカウントにログがたまりました
ダウンロードして、一部を抜粋してみました
flowLogVersion が 4になっていることがわかります
また、targetResourceID が仮想ネットワークになっています
Vnet フローログが取れていそうですが、
Azure Virtual Network Manager のログが取れると思っていたのが足りていない気がしたり、Traffic Analytics がうまく有効化できなかったりと、プレビュー中で動作が不安定なのかもしれません

VNet フロー ログ (プレビュー) - Azure Network Watcher | Microsoft Learn

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
{
            "time": "2023-08-28T07:55:46.3950221Z",
            "flowLogVersion": 4,
            "flowLogGUID": "b90f31d5-040b-4124-bf95-1f4bc09befdd",
            "macAddress": "000D3A9A63A0",
            "category": "FlowLogFlowEvent",
            "flowLogResourceID": "/SUBSCRIPTIONS/XXXXXXXXXXXXXXXXXXXX/RESOURCEGROUPS/NETWORKWATCHERRG/PROVIDERS/MICROSOFT.NETWORK/NETWORKWATCHERS/NETWORKWATCHER_EASTUS/FLOWLOGS/MYVNETFLOWLOG",
            "targetResourceID": "/subscriptions/XXXXXXXXXXXXXXXXXXXX/resourceGroups/vnetflowlog-rg/providers/Microsoft.Network/virtualNetworks/vnet-flow-vnet01",
            "operationName": "FlowLogFlowEvent",
            "flowRecords": {
                "flows": [
                    {
                        "aclID": "/subscriptions/XXXXXXXXXXXXXXXXXXXX/resourceGroups/vnetflowlog-rg/providers/Microsoft.Network/networkSecurityGroups/vnetflow-vm01-nsg",
                        "flowGroups": [
                            {
                                "rule": "UserRule_SSH",
                                "flowTuples": [
                                    /// 省略 ///
                                ]
                            },
                            {
                                "rule": "DefaultRule_DenyAllInBound",
                                "flowTuples": [
                                    /// 省略 ///
                                ]
                            }
                        ]
                    }
                ]
            }
        },

まとめ

Vnet フローログを試してみました
NSG フローログよりも優れていそうな気配を感じるので早く GA してほしいです

参考

共有

Kento
著者
Kento
2020年に新卒で IT 企業に入社. インフラエンジニア(主にクラウド)として活動中