虛擬網路流量記錄
虛擬網路流程記錄是 Azure 網路監看員的一項功能。 您可以使用此功能來記錄流過虛擬網路的 IP 流量相關資訊。
來自虛擬網路流程記錄的流程資料會傳送至 Azure 儲存體。 您可以從該處存取資料,並將其匯出至任何視覺效果工具、安全性資訊與事件管理 (SIEM) 解決方案,或入侵偵測系統 (IDS)。 虛擬網路流程記錄可以克服 網路安全性群組流程記錄 的一些限制。
為何要使用流量記錄?
監視、管理及了解您的網路,對於網路的保護和最佳化來說是很重要的。 您可能需要知道網路目前的狀態、連線的人員,以及使用者是從何處連線。 您也可能需要知道哪些連接埠對網際網路開放、預期網路行為為何、有哪些網路行為是異常的,以及流量突然上升的時機。
流量記錄是雲端環境中所有網路活動的事實來源。 無論是嘗試將資源最佳化的新創公司,或是嘗試偵測入侵的大型企業,流量記錄都可以提供協助。 流量記錄可用於將網路流量最佳化、監視輸送量、驗證合規性、偵測入侵等等。
常見使用案例
網路監視
- 識別未知或不需要的流量。
- 監視流量層級和頻寬耗用量。
- 依 IP 和連接埠篩選流量記錄,以了解應用程式行為。
- 將流程記錄匯出至您選擇的分析和視覺化工具,以設定監視儀表板。
使用情況監視和最佳化
- 識別您網路中的發言最多者。
- 結合 GeoIP 資料來識別跨區域的流量。
- 了解流量成長來預測容量。
- 使用資料來移除太嚴格的流量規則。
法規遵循
- 使用流量資料來確認網路隔離和符合企業存取規則。
網路鑑識和安全性分析
- 分析來自遭入侵 IP 和網路介面的網路流量。
- 將流量記錄匯出至您選擇的任何 SIEM 或 IDS 工具。
虛擬網路流程記錄與網路安全性群組流程記錄相比
虛擬網路流程記錄和 網路安全性群組流程記錄 會記錄 IP 流量,但它們的行為和功能不同。
虛擬網路流程記錄可簡化流量監視的範圍,因為您可以在 虛擬網路 上啟用記錄。 系統會記錄虛擬網路內流經所有支援的工作負載的流量。
虛擬網路流程記錄也避免需要啟用多層級流程記錄,例如 網路安全性群組流程記錄。 在網路安全性群組流程記錄中,網路安全性群組會在子網路和網路介面 (NIC) 上設定。
除了識別 網路安全性群組規則 允許或拒絕流量的現有支援之外,虛擬網路流程記錄還支持識別 Azure Virtual Network Manager 安全性系統管理員規則 允許或拒絕的流量。 虛擬網路流程記錄也支援在您使用 虛擬網路加密 的情況下評估網路流量的加密狀態。
重要
建議您先停用網路安全性群組流程記錄,再啟用相同基礎工作負載上的虛擬網路流程記錄,以避免重複的流程記錄和額外的成本。
如果您在子網的網路安全組上啟用網路安全組流量記錄,則您可以在相同的子網或父虛擬網路上啟用虛擬網路流量記錄,您可能會取得重複的記錄,或只取得虛擬網路流量記錄。
記錄的運作方式
虛擬網路流程記錄的主要屬性包括:
- 流量記錄會在開放系統互相連線 (OSI) 模型的第 4 層運作,並記錄流經虛擬網路的所有 IP 流量。
- 記錄會透過 Azure 平台以一分鐘間隔收集。 其不會影響您的 Azure 資源或網路流量。
- 記錄會以 JavaScript 物件標記法 (JSON) 格式撰寫。
- 每個記錄檔記錄都包含流量應用的網路介面、5 元組資訊、流量方向、流量狀態、加密狀態,以及輸送量資訊。
- 會透過適用網路安全性群組規則或 Azure Virtual Network Manager 安全性管理規則 (部分機器翻譯) 評估網路中的所有流量。
記錄格式
虛擬網路流程記錄具有下列屬性:
time
:記錄事件的時間 (UTC)。flowLogVersion
:流量記錄的版本。flowLogGUID
:FlowLog
資源的資源 GUID。macAddress
:擷取到事件之網路介面的 MAC 位址。category
:事件的類別。 類別一律是FlowLogFlowEvent
。flowLogResourceID
:FlowLog
資源的資源識別碼。targetResourceID
:與FlowLog
資源相關聯之目標資源的資源識別碼。operationName
:一律是FlowLogFlowEvent
。flowRecords
:流量記錄的集合。flows
:流量的集合。 此屬性針對存取控制清單 (ACL) 具有多個項目:aclID
:評估流量之資源的識別碼,其可以是網路安全性群組或虛擬網路管理員。 針對因為加密而遭到拒絕的流量,此值是unspecified
。flowGroups
:規則層級的流量記錄集合:rule
:允許或拒絕流量的規則名稱。 針對因為加密而遭到拒絕的流量,此值是unspecified
。flowTuples
:包含流量元組之多個屬性 (以逗號分隔的格式列出) 的字串:Time Stamp
:流量發生時的時間戳記,格式為 UNIX epoch。Source IP
:來源 IP 位址。Destination IP
:目的地 IP 位址。Source port
:來源連接埠。Destination port
:目的地連接埠。Protocol
:流量的第 4 層通訊協定,以 IANA 指派的值表示。Flow direction
:流量的方向。 有效值為I
(針對輸入) 和O
(針對輸出)。Flow state
:流量的狀態。 可能的狀態為:B
:開始,當流量建立時。 未提供任何統計資料。C
:繼續進行中的流量。 統計資料是以五分鐘的間隔提供。E
:結束,當流量終止時。 提供統計資料。D
:拒絕,當拒絕流量時。
Flow encryption
:流量的加密狀態。 此清單之後的表格描述可能的值。Packets sent
:上次更新之後從來源傳送到目的地的封包總數。Bytes sent
:上次更新之後從來源傳送到目的地的封包位元組總數。 封包位元組包括封包標頭與承載。Packets received
:上次更新之後從目的地傳送到來源的封包總數。Bytes received
:上次更新之後從目的地傳送到來源的封包位元組總數。 封包位元組包括封包標頭與承載。
Flow encryption
具有下列可能的加密狀態:
加密狀態 | 描述 |
---|---|
X |
連線已加密。 已設定加密,且平台已將連線加密。 |
NX |
連線未加密。 系統會在兩個案例中記錄此事件: - 未設定加密時。 - 當加密的虛擬機器與缺少加密的端點 (例如網際網路端點) 通訊時。 |
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 租用戶相關聯的訂用帳戶中。
- 效能層級:儲存體帳戶必須是標準的。 不支援進階儲存體帳戶。
- 自我管理金鑰輪替:如果您變更或輪替儲存體帳戶的存取密鑰,虛擬網路流程記錄會停止運作。 若要修正此問題,您必須停用然後重新啟用虛擬網路流程記錄。
私人端點流量
流量無法記錄在私人端點本身。 您可以在來源 VM 上擷取私人端點的流量。 流量會以 VM 的來源 IP 位址和私人端點的目的地 IP 位址來記錄。 您可以使用 PrivateEndpointResourceId
欄位來識別流向私人端點的流量。 如需詳細資訊,請參閱 使用分析架構。
定價
虛擬網路流程記錄會依據每 GB 收集的網路流程記錄 收費,並隨附每個訂用帳戶每月有 5 GB的免費層。
如果使用虛擬網路流程記錄啟用流量分析,則流量分析價格適用每 GB 的處理費率。 流量分析不提供免費定價層。 如需詳細資訊,請參閱網路監看員定價。
記錄的儲存體是個別收費。 如需詳細資訊,請參閱 Azure Blob 儲存體定價。
支援的案例
下表概述流量記錄的支援範圍。
範圍 | 網路安全性群組流量記錄 | 虛擬網路流量記錄 |
---|---|---|
在無狀態流程中的位元組和封包 | 不支援 | 支援 |
識別虛擬網路加密 | 不支援 | 支援 |
Azure API 管理 | 不支援 | 支援 |
Azure 應用程式閘道 | 不支援 | 支援 |
Azure Virtual Network Manager | 不支援 | 支援 |
ExpressRoute 閘道 | 不支援 | 支援 |
虛擬機器擴展集 | 支援 | 支援 |
VPN 閘道 | 不支援 | 支援 |
可用性
虛擬網路流量記錄已在所有 Azure 公用區域中正式推出,目前在 Azure Government 中處於預覽狀態。
相關內容
- 若要瞭解如何建立、變更、啟用、停用或刪除虛擬網路流程記錄,請參閱 Azure 入口網站、PowerShell 或 Azure CLI 指南。
- 若要了解流量分析,請參閱流量分析概觀 (部分機器翻譯) 和 Azure 網路監看員流量分析中的結構描述和資料彙總 (部分機器翻譯)。
- 若要了解如何使用 Azure 內建原則來稽核或啟用流量分析,請參閱使用 Azure 原則管理流量分析。