仮想ネットワーク フロー ログ
仮想ネットワーク フロー ログは、Azure Network Watcher の機能です。 これらを使用して、仮想ネットワークを通過する IP トラフィックに関する情報をログに記録できます。
仮想ネットワーク フロー ログからのフロー データは、Azure Storage に送信されます。 そこからデータにアクセスし、任意の視覚化ツール、セキュリティ情報イベント管理 (SIEM) ソリューション、または侵入検出システム (IDS) にエクスポートできます。 仮想ネットワーク フロー ログは、ネットワーク セキュリティ グループ フロー ログの制限の一部を克服します。
フロー ログを使用する理由
ネットワークを保護して最適化できるように、ネットワークを監視、管理、把握することは重要です。 ネットワークの現在の状態、接続しているユーザー、ユーザーの接続先を把握することが必要な場合があります。 また、インターネットに対して開かれているポート、予想されるネットワーク動作、不規則なネットワーク動作、トラフィックが急激に増加するタイミングを把握することが必要な場合もあります。
フロー ログは、クラウド環境内のすべてのネットワーク アクティビティの信頼できるソースです。 リソースを最適化しようとしているスタートアップ企業でも、侵入を検出しようとしている大企業でも、フロー ログは役立ちます。 フロー ログは、ネットワーク フローの最適化、スループットの監視、コンプライアンスの検証、侵入の検出などに使用できます。
一般的なユース ケース
ネットワーク監視
- 不明または不要なトラフィックを特定します。
- トラフィック レベルと帯域幅の消費を監視します。
- アプリケーションの動作を把握するために、フロー ログを IP およびポートでフィルター処理します。
- 任意の分析ツールや視覚化ツールにフロー ログをエクスポートして、監視ダッシュボードを設定します。
使用状況の監視と最適化
- ネットワークのトップ トーカーを特定します。
- GeoIP データと組み合わせて、リージョン間のトラフィックを識別します。
- 容量の予測用にトラフィックの増加について把握します。
- データを使用して、過度に制限されたトラフィック規則を削除します。
コンプライアンス
- フロー データを使用して、ネットワークの分離とエンタープライズ アクセス規則への準拠を確認します。
ネットワーク フォレンジクスとセキュリティ分析
- 侵害された IP とネットワーク インターフェイスからのネットワーク フローを分析します。
- 選択した SIEM または IDS ツールにフロー ログをエクスポートします。
仮想ネットワーク フロー ログとネットワーク セキュリティ グループ フロー ログの比較
仮想ネットワーク フロー ログとネットワーク セキュリティ グループ フロー ログの両方で IP トラフィックが記録されますが、その動作と機能は異なります。
仮想ネットワーク フロー ログを使用すると、仮想ネットワークでログ記録を有効にできるため、トラフィック監視のスコープが簡略化されます。 仮想ネットワーク内でサポートされているすべてのワークロードを通過するトラフィックが記録されます。
また、仮想ネットワーク フロー ログでは、ネットワーク セキュリティ グループ フロー ログの場合のような、複数レベルのフロー ログを有効にする必要がなくなります。 ネットワーク セキュリティ グループ フロー ログでは、ネットワーク セキュリティ グループはサブネットとネットワーク インターフェイス (NIC) の両方で構成されます。
ネットワーク セキュリティ グループ規則によって許可または拒否されるトラフィックを識別するための既存のサポートに加えて、仮想ネットワーク フロー ログでは、Azure Virtual Network Manager セキュリティ管理規則によって許可または拒否されるトラフィックの識別がサポートされます。 仮想ネットワーク フロー ログでは、仮想ネットワーク暗号化を使用しているシナリオでのネットワーク トラフィックの暗号化状態の評価もサポートされています。
重要
トラフィックの重複記録や追加コストを避けるために、同じ基になるワークロードで仮想ネットワーク フロー ログを有効にする前に、ネットワーク セキュリティ グループ フロー ログを無効にすることをお勧めします。
サブネットのネットワーク セキュリティ グループでネットワーク セキュリティ グループ フロー ログを有効にした後、同じサブネットまたは親仮想ネットワークで仮想ネットワーク フロー ログを有効にすると、重複ログが発生したり、仮想ネットワーク フロー ログしか機能しないということが起こり得ます。
ログのしくみ
仮想ネットワーク フロー ログの主なプロパティは次のとおりです:
- フロー ログは、オープン システム相互接続 (OSI) モデルのレイヤー 4 で動作し、仮想ネットワークを通過するすべての IP フローを記録します。
- ログは、Azure プラットフォームを通して 1 分間隔で収集されます。 お使いの Azure リソースやネットワーク トラフィックに影響はありません。
- ログは JavaScript Object Notation (JSON) 形式で書き込まれます。
- 各ログ レコードには、フローが適用されるネットワーク インターフェイス、5 タプル情報、トラフィックの方向、フローの状態、暗号化状態、およびスループット情報が含まれています。
- ネットワーク内のすべてのトラフィック フローは、該当するネットワーク セキュリティ グループ規則または Azure Virtual Network Manager セキュリティ管理規則を通じて評価されます。
ログ形式
仮想ネットワーク フロー ログには、次のプロパティがあります。
time
: イベントがログに記録された時刻 (UTC)。flowLogVersion
: フロー ログのバージョン。flowLogGUID
:FlowLog
リソースの リソース GUID。macAddress
: イベントがキャプチャされたネットワーク インターフェイスの MAC アドレス。category
: イベントのカテゴリ。 カテゴリは常にFlowLogFlowEvent
となります。flowLogResourceID
:FlowLog
リソースのリソース ID。targetResourceID
:FlowLog
リソースに関連付けられたターゲット リソースのリソース ID。operationName
: 常にFlowLogFlowEvent
となります。flowRecords
: フロー レコードのコレクション。flows
: フローのコレクション。 このプロパティには、アクセス制御リスト (ACL) に対する複数のエントリがあります。aclID
: トラフィックを評価するリソース (ネットワーク セキュリティ グループまたは Virtual Network Manager) の識別子。 暗号化のために拒否されたトラフィックの場合、この値はunspecified
です。flowGroups
: ルール レベルでのフロー レコードのコレクション:rule
: トラフィックを許可または拒否したルールの名前。 暗号化のために拒否されたトラフィックの場合、この値はunspecified
です。flowTuples
: コンマ区切り形式のフローの組に対する複数のプロパティを含む文字列。Time Stamp
: フローが発生した際のタイム スタンプ (UNIX エポック形式 )。Source IP
: 送信元 IP アドレス。Destination IP
: 宛先 IP アドレス。Source port
: 送信元ポート。Destination port
: 宛先ポート。Protocol
: IANA 割り当て値で表されるフローのレイヤー 4 プロトコル。Flow direction
: トラフィックの方向。 有効な値は受信のI
と送信のO
です。Flow state
: フローの状態。 次の状態があります。B
: 開始。フローが作成された時点。 統計は提供されません。C
: 継続中。フローが進行中。 統計が 5 分間隔で提供されます。E
: 終了。フローが終了した時点。 統計が提供されます。D
: フローが拒否された場合 (Deny)。
Flow encryption
: フローの暗号化の状態。 このリストの後の表で、使用可能な値について説明されています。Packets sent
: 最後の更新以降に送信元から宛先に送信されたパケット数の合計。Bytes sent
: 最後の更新以降に送信元から宛先に送信されたパケットのバイト数の合計。 パケットのバイト数には、パケット ヘッダーとペイロードが含まれます。Packets received
: 最後の更新以降に宛先から送信元に送信されたパケット数の合計。Bytes received
: 最後の更新以降に宛先から送信元に送信されたパケットのバイト数の合計。 パケットのバイト数には、パケット ヘッダーとペイロードが含まれます。
Flow encryption
には、次の暗号化状態があり得ます。
暗号化の状態 | 説明 |
---|---|
X |
接続は暗号化されています。 暗号化が構成され、プラットフォームによって接続が暗号化されています。 |
NX |
接続は暗号化されていません。 このイベントは、次の 2 つのシナリオでログされます。 - 暗号化が構成されていない場合。 - 暗号化された仮想マシンが、暗号化がないエンドポイント (インターネット エンドポイントなど) と通信する場合。 |
NX_HW_NOT_SUPPORTED |
ハードウェアはサポートされていません。 暗号化は構成されていますが、暗号化をサポートしていないホストで仮想マシンが実行されています。 通常、この問題は、フィールド プログラマブル ゲート アレイ (FPGA) がホストに接続されていないか、障害が発生しているため、発生します。 調査のため、この問題を Microsoft に報告してください。 |
NX_SW_NOT_READY |
ソフトウェアの準備ができていません。 暗号化は構成されていますが、ホスト ネットワーク スタック内のソフトウェア コンポーネント (GFT) が、暗号化された接続を処理する準備ができていません。 この問題は、仮想マシンが初めて起動するとき、再起動中、または再デプロイされるときに発生する可能性があります。 また、仮想マシンが実行されているホスト上のネットワーク コンポーネントが更新される場合にも発生する可能性があります。 これらすべてのシナリオで、パケットが破棄されます。 問題は一時的なものです。 仮想マシンが完全に起動して稼働するか、ホスト上のソフトウェア更新プログラムが完了すると、暗号化が機能し始めます。 問題が長期間続く場合は、調査のために Microsoft に報告してください。 |
NX_NOT_ACCEPTED |
暗号化されていないために削除。 暗号化は送信元と宛先のエンドポイントの両方で構成されており、非暗号化を削除するポリシーが設定されています。 トラフィックの暗号化に失敗した場合、パケットは破棄されます。 |
NX_NOT_SUPPORTED |
検出はサポートされていません。 暗号化は構成されていますが、ホスト ネットワーク スタックで検出がサポートされていないため、暗号化セッションは確立されませんでした。 この場合、パケットは削除されます。 この問題が発生した場合は、調査のために Microsoft に報告してください。 |
NX_LOCAL_DST |
宛先は同じホスト上にあります。 暗号化は構成されていますが、送信元と宛先の仮想マシンは同じ Azure ホスト上で実行されています。 この場合、接続は仕様上暗号化されません。 |
NX_FALLBACK |
暗号化なしにフォールバックします。 送信元と宛先のエンドポイントの両方で、非暗号化を許可するポリシーを使用して暗号化が構成されています。 暗号化が試みられましたが、問題が発生しました。 この場合、接続は許可されますが、暗号化されません。 たとえば、仮想マシンが当初は暗号化をサポートするノードで稼動していたが、後でこのサポートが削除された場合などです。 |
仮想ネットワーク内のトラフィックは、既定では暗号化されていません (NX
)。 暗号化されたトラフィックの場合は、「仮想ネットワーク暗号化」を参照してください。
サンプル ログ レコード
次の仮想ネットワーク フロー ログの例では、前に説明したプロパティ リストの後に複数のレコードが続きます。
{
"records": [
{
"time": "2022-09-14T09:00:52.5625085Z",
"flowLogVersion": 4,
"flowLogGUID": "66aa66aa-bb77-cc88-dd99-00ee00ee00ee",
"macAddress": "112233445566",
"category": "FlowLogFlowEvent",
"flowLogResourceID": "/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/RESOURCEGROUPS/NETWORKWATCHERRG/PROVIDERS/MICROSOFT.NETWORK/NETWORKWATCHERS/NETWORKWATCHER_EASTUS2EUAP/FLOWLOGS/VNETFLOWLOG",
"targetResourceID": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNet",
"operationName": "FlowLogFlowEvent",
"flowRecords": {
"flows": [
{
"aclID": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"flowGroups": [
{
"rule": "DefaultRule_AllowInternetOutBound",
"flowTuples": [
"1663146003599,10.0.0.6,192.0.2.180,23956,443,6,O,B,NX,0,0,0,0",
"1663146003606,10.0.0.6,192.0.2.180,23956,443,6,O,E,NX,3,767,2,1580",
"1663146003637,10.0.0.6,203.0.113.17,22730,443,6,O,B,NX,0,0,0,0",
"1663146003640,10.0.0.6,203.0.113.17,22730,443,6,O,E,NX,3,705,4,4569",
"1663146004251,10.0.0.6,203.0.113.17,22732,443,6,O,B,NX,0,0,0,0",
"1663146004251,10.0.0.6,203.0.113.17,22732,443,6,O,E,NX,3,705,4,4569",
"1663146004622,10.0.0.6,203.0.113.17,22734,443,6,O,B,NX,0,0,0,0",
"1663146004622,10.0.0.6,203.0.113.17,22734,443,6,O,E,NX,2,134,1,108",
"1663146017343,10.0.0.6,198.51.100.84,36776,443,6,O,B,NX,0,0,0,0",
"1663146022793,10.0.0.6,198.51.100.84,36776,443,6,O,E,NX,22,2217,33,32466"
]
}
]
},
{
"aclID": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"flowGroups": [
{
"rule": "BlockHighRiskTCPPortsFromInternet",
"flowTuples": [
"1663145998065,101.33.218.153,10.0.0.6,55188,22,6,I,D,NX,0,0,0,0",
"1663146005503,192.241.200.164,10.0.0.6,35276,119,6,I,D,NX,0,0,0,0"
]
},
{
"rule": "Internet",
"flowTuples": [
"1663145989563,192.0.2.10,10.0.0.6,50557,44357,6,I,D,NX,0,0,0,0",
"1663145989679,203.0.113.81,10.0.0.6,62797,35945,6,I,D,NX,0,0,0,0",
"1663145989709,203.0.113.5,10.0.0.6,51961,65515,6,I,D,NX,0,0,0,0",
"1663145990049,198.51.100.51,10.0.0.6,40497,40129,6,I,D,NX,0,0,0,0",
"1663145990145,203.0.113.81,10.0.0.6,62797,30472,6,I,D,NX,0,0,0,0",
"1663145990175,203.0.113.5,10.0.0.6,51961,28184,6,I,D,NX,0,0,0,0",
"1663146015545,192.0.2.10,10.0.0.6,50557,31244,6,I,D,NX,0,0,0,0"
]
}
]
}
]
}
}
]
}
ログの組と帯域幅の計算
203.0.113.105:35370
と 10.0.0.5:23
の間の TCP 通信のフローのタプルの帯域幅計算の例を次に示します。
1708978215,203.0.113.105,10.0.0.5,35370,23,6,I,B,NX,,,,
1708978215,203.0.113.105,10.0.0.5,35370,23,6,I,C,NX,1021,588096,8005,4610880
1708978215,203.0.113.105,10.0.0.5,35370,23,6,I,E,NX,52,29952,47,27072
継続 (C
) と終了 (E
) のフロー状態では、バイト数とパケット数は、前のフローの組のレコードの時点から集計した数です。 この通信の例では、転送されたパケットの合計は 1,021 + 52 + 8,005 + 47 = 9,125 です。 転送された合計バイト数は 588,096 + 29,952 + 4,610,880 + 27,072 = 5,256,000 です。
仮想ネットワーク フロー ログのストレージ アカウントに関する考慮事項
- 場所: ストレージ アカウントは、仮想ネットワークと同じリージョンに存在する必要があります。
- サブスクリプション: ストレージ アカウントは、仮想ネットワークと同じサブスクリプション内または仮想ネットワークのサブスクリプションと同じ Microsoft Entra テナントに関連付けられているサブスクリプション内にある必要があります。
- パフォーマンス レベル: ストレージ アカウントは Standard である必要があります。 Premium ストレージ アカウントはサポートされていません。
- 自己管理型のキーのローテーション: ストレージ アカウントへのアクセス キーを変更/ローテーションすると、仮想ネットワーク フロー ログの動作が停止します。 この問題を修正するには、仮想ネットワーク フロー ログを無効にしてからもう一度有効にする必要があります。
価格
仮想ネットワーク フロー ログは、収集されるネットワーク フロー ログ (ギガバイト単位) ごとに課金され、1 つのサブスクリプションにつき 1 か月あたり 5 GB までは無料になります。
仮想ネットワーク フロー ログでトラフィック分析が有効である場合、トラフィック分析の価格はギガバイト単位の処理レートで適用されます。 トラフィック分析は、無料では提供されません。 詳細については、「Network Watcher の価格」を参照してください。
ログのストレージは個別に課金されます。 詳細については、「Azure Blob Storage の価格」を参照してください。
サポートされるシナリオ
次の表は、フロー ログのサポート範囲の概要を示しています。
範囲 | ネットワーク セキュリティ グループ フロー ログ | 仮想ネットワーク フロー ログ |
---|---|---|
ステートレス フロー内のバイトとパケット | サポートされていません | サポートされています |
仮想ネットワーク暗号化の識別 | サポートされていません | サポートされています |
Azure API 管理 | サポートされていません | サポートされています |
Azure Application Gateway | サポートされていません | サポートされています |
Azure Virtual Network Manager | サポートされていません | サポートされています |
ExpressRoute ゲートウェイ | サポートされていません | サポートされています |
仮想マシン スケール セット | サポートされています | サポートされています |
VPN Gateway | サポートされていません | サポートされています |
可用性
仮想ネットワーク フロー ログは、すべての Azure パブリック リージョンで一般提供されており、現在 Azure Government でプレビュー段階です。
関連するコンテンツ
- 仮想ネットワーク フロー ログを作成、変更、有効化、無効化、または削除する方法については、Azure portal、PowerShell、または Azure CLI のガイドを参照してください。
- トラフィック分析の詳細については、「Traffic Analytics の概要」と「Azure Network Watcher トラフィック分析のスキーマとデータの集計」を参照してください。
- Azure 組み込みポリシーを使用してトラフィック分析を監査または有効にする方法については、「Azure Policy を使用してトラフィック分析を管理する」を参照してください。