トラフィック分析のスキーマとデータ集計

トラフィック分析は、クラウド ネットワークでのユーザーとアプリケーションのアクティビティを可視化するクラウドベースのソリューションです。 トラフィック分析では、Azure Network Watcher のフロー ログを分析して、Azure クラウドでのトラフィック フローに関する分析情報を提供します。 トラフィック分析を使用すると、次のことが可能になります。

  • Azure サブスクリプション全体のネットワーク アクティビティを視覚化し、ホットスポットを特定する。
  • 開いているポート、インターネット にアクセスしようとしているアプリケーション、承認されていないネットワークに接続している仮想マシン (VM) などの情報を使用して、ネットワークに対するセキュリティの脅威を特定し、ネットワークをセキュリティで保護する。
  • Azure リージョン間やインターネット上でのトラフィック フロー パターンを把握して、ネットワークのデプロイをパフォーマンスと容量に最適化する。
  • ネットワークでの接続の失敗の原因となるネットワークの構成の誤りを特定する。
  • ネットワークの使用状況 (バイト数、パケット数、またはフロー数) を把握する。

データの集計

  • ネットワーク セキュリティ グループのすべてのフロー ログが、FlowIntervalStartTime_t から FlowIntervalEndTime_t まで、ストレージ アカウント内の BLOB として 1 分間隔でキャプチャされます。
  • トラフィック分析の既定の処理間隔は 60 分です。つまり、1 時間ごとに集計のため、トラフィック分析によってストレージ アカウントから BLOB が取得されます。 しかし 10 分の処理間隔が選択されている場合、トラフィック分析では代わりに、10 分ごとにストレージ アカウントからの BLOB 取得を行います。
  • Source IPDestination IPDestination portNSG nameNSG ruleFlow DirectionTransport layer protocol (TCP or UDP) が同じであるフローは、トラフィック分析によって 1 つのフローにまとめられます (注: 送信元ポートは集計から除外されます)。
  • この単一レコードは、トラフィック分析によって修飾され (詳しくは下記のセクションを参照)、Azure Monitor ログに取り込まれます。 このプロセスは最大で 1 時間かかる場合があります。
  • FlowStartTime_t フィールドは、FlowIntervalStartTime_t から FlowIntervalEndTime_t までのフロー ログ処理間隔の間に集計されたフロー (同じ 4 タプル) の、最初の発生日時を示します。
  • トラフィック分析内のリソースについては、Azure portal に示されるフロー数はネットワーク セキュリティ グループから見たフロー総数ですが、Azure Monitor ログでは、それらをまとめて 1 件のレコードとしてのみユーザーに表示されます。 すべてのフローを表示するには、blob_id フィールドを使用します。これはストレージから参照できます。 そのレコードの合計フロー数は、BLOB 内にある個々 のフローと一致します。

下記のクエリは、過去 30 日間に Azure 以外のパブリック IP と対話したすべてのサブネットを確認するのに役立ちます。

AzureNetworkAnalytics_CL
| where SubType_s == "FlowLog" and FlowStartTime_t >= ago(30d) and FlowType_s == "ExternalPublic"
| project Subnet1_s, Subnet2_s  

前記のクエリのフローに対する BLOB パスを表示するには、次のクエリを使用します。

let TableWithBlobId =
(AzureNetworkAnalytics_CL
   | where SubType_s == "Topology" and ResourceType == "NetworkSecurityGroup" and DiscoveryRegion_s == Region_s and IsFlowEnabled_b
   | extend binTime = bin(TimeProcessed_t, 6h),
            nsgId = strcat(Subscription_g, "/", Name_s),
            saNameSplit = split(FlowLogStorageAccount_s, "/")
   | extend saName = iif(arraylength(saNameSplit) == 3, saNameSplit[2], '')
   | distinct nsgId, saName, binTime)
| join kind = rightouter (
   AzureNetworkAnalytics_CL
   | where SubType_s == "FlowLog"  
   | extend binTime = bin(FlowEndTime_t, 6h)
) on binTime, $left.nsgId == $right.NSGList_s  
| extend blobTime = format_datetime(todatetime(FlowIntervalStartTime_t), "yyyy MM dd hh")
| extend nsgComponents = split(toupper(NSGList_s), "/"), dateTimeComponents = split(blobTime, " ")
| extend BlobPath = strcat("https://", saName,
                        "@insights-logs-networksecuritygroupflowevent/resoureId=/SUBSCRIPTIONS/", nsgComponents[0],
                        "/RESOURCEGROUPS/", nsgComponents[1],
                        "/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/", nsgComponents[2],
                        "/y=", dateTimeComponents[0], "/m=", dateTimeComponents[1], "/d=", dateTimeComponents[2], "/h=", dateTimeComponents[3],
                        "/m=00/macAddress=", replace(@"-", "", MACAddress_s),
                        "/PT1H.json")
| project-away nsgId, saName, binTime, blobTime, nsgComponents, dateTimeComponents;

TableWithBlobId
| where SubType_s == "FlowLog" and FlowStartTime_t >= ago(30d) and FlowType_s == "ExternalPublic"
| project Subnet_s , BlobPath

前記のクエリでは、BLOB に直接アクセスするための URL が構築されます。 プレース ホルダーを含む URL は次のようになります。

https://{storageAccountName}@insights-logs-networksecuritygroupflowevent/resoureId=/SUBSCRIPTIONS/{subscriptionId}/RESOURCEGROUPS/{resourceGroup}/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/{networkSecurityGroupName}/y={year}/m={month}/d={day}/h={hour}/m=00/macAddress={macAddress}/PT1H.json

トラフィック分析スキーマ

トラフィック分析は Azure Monitor ログを基盤として構築されています。そのため、トラフィック分析によって修飾されたデータに対して、カスタム クエリの実行やアラートの設定を行うことができます。

次の表に、スキーマ内のフィールドとネットワーク セキュリティ グループ フロー ログにおけるそれらの意味のリストを示します。

フィールド Format 説明
TableName AzureNetworkAnalytics_CL トラフィック分析データのテーブル。
SubType_s FlowLog フロー ログのサブタイプ。 FlowLog のみを使用します。SubType_s の他の値は内部で使用されます。
FASchemaVersion_s 2 スキーマ バージョン。 ネットワーク セキュリティ グループ フロー ログのバージョンは反映されません。
TimeProcessed_t 日付と時刻 (UTC) トラフィック分析でストレージ アカウントからの未加工のフロー ログを処理した時刻。
FlowIntervalStartTime_t 日付と時刻 (UTC) フロー ログ処理間隔の開始時刻 (フロー間隔の測定が開始される時刻)。
FlowIntervalEndTime_t 日付と時刻 (UTC) フロー ログ処理間隔の終了時刻。
FlowStartTime_t 日付と時刻 (UTC) FlowIntervalStartTime_t から FlowIntervalEndTime_t までのフロー ログ処理間隔の間の (集計対象の) フローのうち最初のフローが発生した日時。 このフローは、集計ロジックに基づいて集計されます。
FlowEndTime_t 日付と時刻 (UTC) FlowIntervalStartTime_t から FlowIntervalEndTime_t までのフロー ログ処理間隔の間の (集計対象の) フローのうち最後のフローが発生した日時。 フロー ログ v2 に関して言うと、このフィールドには、同じ 4 タプルを持つ最後のフローが開始された時刻が格納されます (未加工のフロー レコードでは B としてマークされます)。
FlowType_s - IntraVNet
- InterVNet
- S2S
- P2S
- AzurePublic
- ExternalPublic
- MaliciousFlow
- Unknown Private
- 不明
定義については、「メモ」を参照してください。
SrcIP_s 送信元 IP アドレス AzurePublic フローと ExternalPublic フローでは空白です。
DestIP_s 宛先 IP アドレス AzurePublic フローと ExternalPublic フローでは空白です。
VMIP_s VM の IP AzurePublic フローと ExternalPublic フローに使用されます。
DestPort_d 宛先ポート トラフィックを受信中のポート。
L4Protocol_s - T
- U
トランスポート プロトコルします。 T = TCP
U は UDP です。
L7Protocol_s プロトコル名 宛先ポートから派生されます。
FlowDirection_s - I = Inbound
- O = 送信
フローの方向: ネットワーク セキュリティ グループへの受信またはそこからの送信 (フロー ログに基づく)。
FlowStatus_s - A = 許可
- D = 拒否
フローの状態: ネットワーク セキュリティ グループによって許可または拒否されたかどうか (フロー ログに基づく)。
NSGList_s <SUBSCRIPTIONID>/<RESOURCEGROUP_NAME>/<NSG_NAME> フローに関連付けられたネットワーク セキュリティ グループ。
NSGRules_s <Index value 0>|<NSG_RULENAME>|<フローの方向>|<フローの状態>|<FlowCount ProcessedByRule> このフローを許可または拒否したネットワーク セキュリティ グループ規則。
NSGRule_s NSG_RULENAME このフローを許可または拒否したネットワーク セキュリティ グループ規則。
NSGRuleType_s - ユーザー定義
- Default
フローで使用されるネットワーク セキュリティ グループ規則の種類。
MACAddress_s MAC アドレス フローがキャプチャされた NIC の MAC アドレス。
Subscription_g このフィールドには、Azure 仮想ネットワーク、ネットワーク インターフェイス、または仮想マシンのサブスクリプションが設定されます FlowType が S2S、P2S、AzurePublic、ExternalPublic、MaliciousFlow、および UnknownPrivate の場合 (片側だけが Azure であるフローの種類) のみ適用されます。
Subscription1_g サブスクリプション ID フロー内の送信元 IP が属している仮想ネットワーク、ネットワーク インターフェイス、または仮想マシンのサブスクリプション ID。
Subscription2_g サブスクリプション ID フロー内の送信先 IP が属している仮想ネットワーク、ネットワーク インターフェイス、または仮想マシンのサブスクリプション ID。
Region_s フロー内の IP が属している仮想ネットワーク、ネットワーク インターフェイス、または仮想マシンの Azure リージョン。 FlowType が S2S、P2S、AzurePublic、ExternalPublic、MaliciousFlow、および UnknownPrivate の場合 (片側だけが Azure であるフローの種類) のみ適用されます。
Region1_s Azure リージョン フロー内の送信元 IP が属している仮想ネットワーク、ネットワーク インターフェイス、または仮想マシンの Azure リージョン。
Region2_s Azure リージョン フロー内の送信先 IP が属している仮想ネットワークの Azure リージョン。
NIC_s <resourcegroup_Name>/<NetworkInterfaceName> トラフィックを送信または受信している VM に関連付けられている NIC。
NIC1_s <resourcegroup_Name>/<NetworkInterfaceName> フロー内のソース ID に関連付けられている NIC。
NIC2_s <resourcegroup_Name>/<NetworkInterfaceName> フロー内の宛先 ID に関連付けられている NIC。
VM_s <resourcegroup_Name>/<NetworkInterfaceName> ネットワーク インターフェイス NIC_s に関連付けられている仮想マシン。
VM1_s <resourcegroup_Name>/<VirtualMachineName> フロー内のソース ID に関連付けられている仮想マシン。
VM2_s <resourcegroup_Name>/<VirtualMachineName> フロー内の宛先 ID に関連付けられている仮想マシン。
Subnet_s <ResourceGroup_Name>/<VirtualNetwork_Name>/<SubnetName> NIC_s に関連付けられているサブネット。
Subnet1_s <ResourceGroup_Name>/<VirtualNetwork_Name>/<SubnetName> フロー内のソース ID に関連付けられているサブネット。
Subnet2_s <ResourceGroup_Name>/<VirtualNetwork_Name>/<SubnetName> フロー内の宛先 ID に関連付けられているサブネット。
ApplicationGateway1_s <SubscriptionID>/<ResourceGroupName>/<ApplicationGatewayName> フロー内のソース ID に関連付けられているアプリケーション ゲートウェイ。
ApplicationGateway2_s <SubscriptionID>/<ResourceGroupName>/<ApplicationGatewayName> フロー内の宛先 ID に関連付けられているアプリケーション ゲートウェイ。
ExpressRouteCircuit1_s <SubscriptionID>/<ResourceGroupName>/<ExpressRouteCircuitName> ExpressRoute 回線 ID - ExpressRoute 経由でサイトからフローが送信される場合。
ExpressRouteCircuit2_s <SubscriptionID>/<ResourceGroupName>/<ExpressRouteCircuitName> ExpressRoute 回線 ID - ExpressRoute によってクラウドからのフローを受信する場合。
ExpressRouteCircuitPeeringType_s - AzurePrivatePeering
- AzurePublicPeering
- MicrosoftPeering
フローに関係する ExpressRoute ピアリングの種類。
LoadBalancer1_s <SubscriptionID>/<ResourceGroupName>/<LoadBalancerName> フロー内のソース ID に関連付けられているロード バランサー。
LoadBalancer2_s <SubscriptionID>/<ResourceGroupName>/<LoadBalancerName> フロー内の宛先 ID に関連付けられているロード バランサー。
LocalNetworkGateway1_s <SubscriptionID>/<ResourceGroupName>/<LocalNetworkGatewayName> フロー内のソース ID に関連付けられているローカル ネットワーク ゲートウェイ。
LocalNetworkGateway2_s <SubscriptionID>/<ResourceGroupName>/<LocalNetworkGatewayName> フロー内の宛先 ID に関連付けられているローカル ネットワーク ゲートウェイ。
ConnectionType_s - VNetPeering
- VpnGateway
- ExpressRoute
接続の種類。
ConnectionName_s <SubscriptionID>/<ResourceGroupName>/<ConnectionName> 接続の名前。 フローの種類が P2S の場合、<ゲートウェイ名>_<VPN クライアント IP> という形式です。
ConnectingVNets_s 仮想ネットワーク名のスペース区切りリスト ハブとスポークのトポロジの場合は、ハブの仮想ネットワークがここに設定されます。
Country_s 2 文字の国コード (ISO 3166-1 alpha-2) フローの種類が ExternalPublic の場合に入力されます。 PublicIPs_s フィールド内の IP アドレスはすべて、同じ国番号になります。
AzureRegion_s Azure リージョンの場所 フローの種類が AzurePublic の場合に入力されます。 PublicIPs_s フィールド内の IP アドレスはすべて、同じ Azure リージョンになります。
AllowedInFlows_d 許可された受信フローの数。これは、同じ 4 タプルを共有したフローの数を表します (フローがキャプチャされたネットワーク インターフェイスへの受信)。
DeniedInFlows_d 拒否された受信フローの数。 (フローがキャプチャされたネットワーク インターフェイスへの受信)。
AllowedOutFlows_d 許可された送信フローの数 (フローがキャプチャされたネットワーク インターフェイスへの送信)。
DeniedOutFlows_d 拒否された送信フローの数 (フローがキャプチャされたネットワーク インターフェイスへの送信)。
FlowCount_d 非推奨になりました。 同じ 4 タプルに一致したフローの合計数。 フローの種類が ExternalPublic や AzurePublic の場合、さまざまなパブリック IP アドレスからのフローもカウントに含められます。
InboundPackets_d フローの宛先からソースに送信されたパケットを表します ネットワーク セキュリティ グループ フロー ログ スキーマがバージョン 2 の場合にのみ値が設定されます。
OutboundPackets_d フローのソースから宛先に送信されたパケットを表します ネットワーク セキュリティ グループ フロー ログ スキーマがバージョン 2 の場合にのみ値が設定されます。
InboundBytes_d フローの宛先からソースに送信されたバイト数を表します ネットワーク セキュリティ グループ フロー ログ スキーマがバージョン 2 の場合にのみ値が設定されます。
OutboundBytes_d フローのソースから宛先に送信されたバイト数を表します ネットワーク セキュリティ グループ フロー ログ スキーマがバージョン 2 の場合にのみ値が設定されます。
CompletedFlows_d ネットワーク セキュリティ グループ フロー ログ スキーマがバージョン 2 の場合にのみ 0 以外の値が設定されます。
PublicIPs_s <PUBLIC_IP>|<FLOW_STARTED_COUNT>|<FLOW_ENDED_COUNT>|<OUTBOUND_PACKETS>|<INBOUND_PACKETS>|<OUTBOUND_BYTES>|<INBOUND_BYTES> バーで区切られたエントリ。
SrcPublicIPs_s <SOURCE_PUBLIC_IP>|<FLOW_STARTED_COUNT>|<FLOW_ENDED_COUNT>|<OUTBOUND_PACKETS>|<INBOUND_PACKETS>|<OUTBOUND_BYTES>|<INBOUND_BYTES> バーで区切られたエントリ。
DestPublicIPs_s <DESTINATION_PUBLIC_IP>|<FLOW_STARTED_COUNT>|<FLOW_ENDED_COUNT>|<OUTBOUND_PACKETS>|<INBOUND_PACKETS>|<OUTBOUND_BYTES>|<INBOUND_BYTES> バーで区切られたエントリ。
IsFlowCapturedAtUDRHop_b - True
- False
UDR ホップでフローがキャプチャされた場合、値は True です。

重要

トラフィック分析スキーマは 2019 年 8 月 22 日に更新されました。 新しいスキーマでは、送信元 IP と送信先 IP が別々に得られ、FlowDirection フィールドを解析する必要がないため、クエリが簡素化されます。 更新されたスキーマでは、次の点が変更されています。

  • FASchemaVersion_s が 1 から 2 に更新されました。
  • 非推奨となったフィールド: VMIP_sSubscription_gRegion_sNSGRules_sSubnet_sVM_sNIC_sPublicIPs_sFlowCount_d
  • 新しいフィールド: SrcPublicIPs_sDestPublicIPs_sNSGRule_s

パブリック IP の詳細のスキーマ

トラフィック分析を使用すると、お客様の環境内のすべてのパブリック IP について、WHOIS データと地理的な場所を取得できます。 悪意のある IP の場合は、トラフィック分析により、Microsoft セキュリティ インテリジェンス ソリューションによって識別される DNS ドメイン、脅威の種類、スレッドの説明が提供されます。 IP の詳細は Log Analytics ワークスペースに発行されるため、カスタム クエリを作成してアラートを設定できます。 トラフィック分析ダッシュボードから、事前に設定されたクエリにアクセスすることもできます。

次の表に、パブリック IP スキーマの詳細を示します。

フィールド Format 説明
TableName AzureNetworkAnalyticsIPDetails_CL トラフィック分析の IP の詳細のデータが含まれるテーブル。
SubType_s FlowLog フロー ログのサブタイプ。 "FlowLog" のみを使用します。SubType_s の他の値は製品の内部動作用です。
FASchemaVersion_s 2 スキーマ バージョン。 ネットワーク セキュリティ グループ フロー ログのバージョンは反映されません。
FlowIntervalStartTime_t 日付と時刻 (UTC) フロー ログ処理間隔の開始時刻 (フロー間隔の測定が開始される時刻)。
FlowIntervalEndTime_t 日付と時刻 (UTC) フロー ログ処理間隔の終了時刻。
FlowType_s - AzurePublic
- ExternalPublic
- MaliciousFlow
定義については、「メモ」を参照してください。
IP パブリック IP レコード内に情報が示されるパブリック IP。
場所 IP の場所 - Azure パブリック IP の場合: IP が属している仮想ネットワーク、ネットワーク インターフェイス、仮想マシンの Azure リージョン。または IP 168.63.129.16 の場合は Global。
- 外部パブリック IP と悪意のある IP の場合: IP が位置している国の 2 文字の国番号 (ISO 3166-1 alpha-2)。
PublicIPDetails IP に関する情報 -Azure パブリック IP の場合: IP を所有している Azure サービス。または 168.63.129.16 の場合は Microsoft 仮想パブリック IP。
- ExternalPublic/Malicious の IP: その IP の WhoIS 情報。
ThreatType 悪意のある IP によってもたらされる脅威 悪意のある IP の場合のみ: 現在有効な値の一覧に含まれる脅威のいずれか (次の表で説明します)。
ThreatDescription 脅威の説明 悪意のある IP のみ。 悪意のある IP によってもたらされる脅威の説明。
DNSDomain DNS ドメイン 悪意のある IP のみ。 悪意のある IP に関連付けられているドメイン名。
Url 悪意のある IP に対応する URL 悪意のある IP のみ
ポート 悪意のある IP に対応するポート 悪意のある IP のみ

脅威の種類の一覧:

説明
ボットネット ボットネット ノードまたはメンバーについて詳述するインジケーター。
C2 ボットネットのコマンド アンド コントロール ノードについて詳述するインジケーター。
CryptoMining このネットワーク アドレスと URL に関連するトラフィックは、CyrptoMining とリソースの不正使用を示します。
DarkNet Darknet ノードまたはネットワークのインジケーター。
DDos アクティブまたは今後の DDoS キャンペーンに関連するインジケーター。
MaliciousUrl マルウェアを配信している URL。
マルウェア 悪意のあるファイルを記述するインジケーター。
フィッシング フィッシング キャンペーンに関連するインジケーター。
プロキシ プロキシ サービスのインジケーター。
PUA 望ましくない可能性のあるアプリケーション。
WatchList 脅威が何であるかを正確に判断できない場合、または人による解釈を必要とする場合にインジケーターが配置される汎用バケット。 WatchList は、通常、システムにデータを送信するパートナーが使用してはいけません。

メモ

  • AzurePublic フローまたは ExternalPublic フローの場合、VMIP_s フィールドにはお客様所有の Azure 仮想マシンの IP が格納され、PublicIPs_s フィールドにはパブリック IP アドレスが格納されます。 これらの 2 種類のフローの場合、SrcIP_s フィールドと DestIP_s フィールドではなく、VMIP_sPublicIPs_s を使用する必要があります。 AzurePublic および ExternalPublic の IP アドレスの場合はさらに集計して、Log Analytics ワークスペースに取り込まれるレコードの数を最小限に抑えます。 (このフィールドは非推奨になります。仮想マシンがフローの送信元であったか宛先であったかに応じて、SrcIP_ と DestIP_s を使用してください)。
  • 一部のフィールド名には、_s または _d が追加されます。これは送信元や宛先を意味しておらず、それぞれ、データ型の stringdecimal を示します。
  • フローに関係している IP アドレスに基づいて、Microsoft ではフローを以下のフロー型に分類しています。
    • IntraVNet: フロー内の両方の IP アドレスが、同じ Azure 仮想ネットワーク内に存在しています。
    • InterVNet: フロー内の IP アドレスが、2 つの異なる Azure 仮想ネットワーク内に存在しています。
    • S2S (Site-To-Site): 一方の IP アドレスは Azure 仮想ネットワークに属していて、他方の IP アドレスは、VPN ゲートウェイまたは Express Route 経由で仮想ネットワークに接続された、お客様のネットワーク (サイト) に属しています。
    • P2S (Point-To-Site): 一方の IP アドレスは Azure 仮想ネットワークに属していて、他方の IP アドレスは、VPN ゲートウェイ経由で Azure Virtual Network に接続された、お客様のネットワーク (サイト) に属しています。
    • AzurePublic: 一方の IP アドレスは Azure 仮想ネットワークに属していて、他方の IP アドレスは Microsoft が所有する Azure パブリック IP アドレスです。 お客様が所有するパブリック IP アドレスは、このフロー型の一部ではありません。 たとえば、お客様が所有する VM が Azure のサービス (ストレージ エンドポイント) にトラフィックを送信している場合は、このフロー型に分類されます。
    • ExternalPublic: 一方の IP アドレスは Azure 仮想ネットワークに属していて、他方の IP アドレスは Azure 内にはないパブリック IP です。"FlowIntervalStartTime_t" から "FlowIntervalEndTime_t" までの処理間隔については、トラフィック分析で使用される ASC フィードにおいて悪意のある IP だと報告されません。
    • MaliciousFlow: 一方の IP アドレスは Azure 仮想ネットワークに属していて、他方の IP アドレスは Azure 内にはないパブリック IP です。"FlowIntervalStartTime_t" から "FlowIntervalEndTime_t" までの処理間隔については、トラフィック分析で使用される ASC フィードにおいて悪意のある IP として報告されます。
    • UnknownPrivate: 一方の IP アドレスは Azure 仮想ネットワークに属していて、他方の IP アドレスは、RFC 1918 で定義されたプライベート IP 範囲に属していて、トラフィック分析では、お客様が所有するサイトまたは Azure 仮想ネットワークにマップできませんでした。
    • Unknown: フロー内のどちらの IP アドレスも、Azure 内やオンプレミス (サイト) 上でのお客様のトポロジを使用してマップできません。