收集 Azure NSG 流量記錄
本文說明如何使用 Microsoft Azure Blob 儲存體 V2 設定 Google Security Operations 資訊提供,以收集 Microsoft Azure NSG 流量記錄。
事前準備
請確認您已完成下列事前準備事項:
- Google SecOps 執行個體
- 具備下列權限的 Microsoft Azure 入口網站特殊存取權:
- 建立儲存空間帳戶
- 設定網路安全性群組 (NSG)
- 設定網路監看員
- 管理存取金鑰
- Azure 訂閱項目,且已在 NSG 所在的區域啟用網路監看員
設定 Azure 儲存體帳戶
如要儲存及整理從 Azure 收集的記錄資料,請設定儲存空間帳戶,並擷取 Google SecOps 的必要連線憑證。
建立儲存空間帳戶
- 在 Azure 入口網站中,搜尋「儲存體帳戶」。
- 點選「+ 建立」。
請提供下列設定詳細資料:
設定 值 訂閱項目 選取 Azure 訂閱項目 資源群組 選取現有資料庫或建立新資料庫 儲存體帳戶名稱 輸入不重複的名稱 (例如 nsgflowlogs)區域 選取區域 (例如 East US)效能 標準 (建議) 備援功能 GRS (異地備援儲存空間) 或 LRS (本機備援儲存空間) 按一下「Review + create」。
查看帳戶總覽,然後按一下「建立」。
等待部署作業完成。
取得儲存空間帳戶憑證
- 前往您剛建立的「儲存空間帳戶」。
- 依序選取「安全性 + 網路」>「存取金鑰」。
- 按一下「顯示金鑰」。
- 複製並儲存下列項目,以供日後使用:
- 儲存體帳戶名稱:
nsgflowlogs - 金鑰 1 或金鑰 2:共用存取金鑰 (採用 Base64 編碼的 512 位元隨機字串)
- 儲存體帳戶名稱:
取得 Blob 服務端點
- 在同一個儲存空間帳戶中,選取「端點」。
- 複製並儲存「Blob service」端點網址。
- 範例:
https://nsgflowlogs.blob.core.windows.net/
- 範例:
設定網路安全群組流量記錄
- 在 Azure 入口網站中,搜尋「Network Watcher」。
- 選取「記錄」> NSG 流量記錄。
- 按一下「+ 建立」,建立新的流程記錄。
- 請提供下列設定詳細資料:
- 訂閱:選取訂閱方案。
- 網路安全性群組:選取要啟用流量記錄的 NSG。
- 「Storage Account」(儲存空間帳戶):選取您先前建立的儲存空間帳戶。
- 保留天數:選取記錄檔的保留天數 (例如 90 天)。
- 流量記錄版本:選取「版本 2」 (建議)。
- 啟用流量分析:選用,如要在 Azure 中取得額外分析資料,請啟用這項功能。
按一下「建立」,即可啟用 NSG 流量記錄。
在 Azure 入口網站中,搜尋「網路安全性群組」。
選取要設定的 NSG。
選取「監控」> 流量記錄」。
按一下「建立」,然後按照上述步驟操作。
在 Google SecOps 中設定資訊提供,以便擷取 Microsoft Azure NSG 流量記錄
設定 Azure 環境後,您必須在 Google SecOps 控制台中建立動態饋給,才能自動執行擷取程序。
設定動態饋給
- 依序前往「SIEM 設定」>「動態饋給」。
- 按一下「新增動態消息」。
- 在下一個頁面中,按一下「設定單一動態饋給」。
- 在「動態饋給名稱」欄位中輸入動態饋給名稱 (例如
Azure NSG Flow Logs)。 - 選取「Microsoft Azure Blob Storage V2」做為「來源類型」。
- 選取「Microsoft Azure NSG Flow」做為「記錄類型」。
- 點選「下一步」。
設定動態饋給參數
指定下列輸入參數的值:
Azure URI:輸入含有容器路徑的 Blob 服務端點網址:
https://<storage-account-name>.blob.core.windows.net/insights-logs-networksecuritygroupflowevent/更改下列內容:
<storage-account-name>:您的 Azure 儲存體帳戶名稱。範例:
https://nsgflowlogs.blob.core.windows.net/insights-logs-networksecuritygroupflowevent/
來源刪除選項:根據偏好設定選取刪除選項:
- 永不:轉移後一律不刪除任何檔案。
- 成功時:成功移轉後,刪除所有檔案和空白目錄。
檔案存在時間上限:輸入天數,系統會納入在該時間範圍內修改的檔案。預設值為 180 天。
共用金鑰:輸入從儲存空間帳戶擷取的共用金鑰值 (存取金鑰)。
資產命名空間:資產命名空間。
擷取標籤:套用至這個動態饋給中所有事件的標籤。
點選「下一步」。
在「Finalize」(完成) 畫面中檢查新的動態饋給設定,然後按一下「Submit」(提交)。
設定 Azure 儲存空間防火牆 (如已啟用)
如果 Azure 儲存體帳戶使用防火牆,您必須新增 Google SecOps IP 範圍。
- 在 Azure 入口網站中,前往「儲存體帳戶」。
- 依序選取「安全性 + 網路」>「網路」。
- 在「防火牆和虛擬網路」下方,選取「從所選虛擬網路和 IP 位址啟用」。
- 在「防火牆」部分的「位址範圍」下方,按一下「+ 新增 IP 範圍」。
以 CIDR 標記法新增每個 Google SecOps IP 範圍。
如要取得目前的 IP 範圍,請按照下列步驟操作:
- 請參閱 IP 許可清單說明文件
- 或使用 Feed Management API 以程式輔助方式擷取
按一下 [儲存]。
如要進一步瞭解 Google Security Operations 動態消息,請參閱 Google Security Operations 動態消息說明文件。如要瞭解各類動態饋給的規定,請參閱「依類型設定動態饋給」。
如果在建立動態饋給時遇到問題,請與 Google Security Operations 支援團隊聯絡。
UDM 對應表
| 記錄欄位 | UDM 對應 | 邏輯 |
|---|---|---|
ClientOperationId |
udm.additional.fields |
索引鍵「ClientOperationId」設為 ClientOperationId 的值。 |
CorrelationRequestId |
udm.additional.fields |
索引鍵「CorrelationRequestId」設為 CorrelationRequestId 的值。 |
GatewayManagerVersion |
udm.additional.fields |
索引鍵「GatewayManagerVersion」會設為 GatewayManagerVersion 的值。 |
flow_tuple.column9 (flowstate) |
udm.additional.fields |
如果是第 2 版記錄,當 flowstate 為「B」/「b」時,「flow_state」鍵會設為「BEGIN」;為「C」/「c」時,則設為「CONTINUE」;為「E」/「e」時,則設為「END」。 |
properties.addressfamily |
udm.additional.fields |
「Address Family」鍵設為 properties.addressfamily 的值。 |
properties.locprf |
udm.additional.fields |
「Local Pref」鍵設為 properties.locprf 的值。 |
properties.path |
udm.additional.fields |
索引鍵「Path」設為 properties.path 的值。 |
properties.peeringType |
udm.additional.fields |
「對等互連類型」鍵設為 properties.peeringType 的值。 |
properties.weight |
udm.additional.fields |
索引鍵「Weight」設為 properties.weight 的值。 |
flow_tuple.column1 |
udm.metadata.collected_timestamp |
取自 CSV flowtupleValue 的第一欄,並從 UNIX 紀元轉換而來。 |
record.time/time |
udm.metadata.event_timestamp |
從 record.time (適用於 records 陣列事件) 或 time (適用於其他事件) 取得並剖析的值。 |
udm.metadata.event_type |
如果已識別主體和目標實體,或適用於所有內部流程元組事件,請設為 NETWORK_FLOW。如果只識別出主體,請設為 STATUS_UPDATE。否則請設為 GENERIC_EVENT。 |
|
record.operationName/operationName |
udm.metadata.product_event_type |
取自 record.operationName 或 operationName 的值。 |
record.flowLogGUID |
udm.metadata.product_log_id |
取自 record.flowLogGUID 的值。 |
record.flowLogVersion / record.properties.Version / version |
udm.metadata.product_version |
取自 record.flowLogVersion、record.properties.Version (透過 version 變數) 或頂層 version 欄位的值。 |
flow_tuple.column7 (trafficFlow) |
udm.network.direction |
如果 trafficFlow 為「I」,值為 INBOUND;如果 trafficFlow 為「O」,值為 OUTBOUND。 |
flow_tuple.column6 (protocol) |
udm.network.ip_protocol |
如果 protocol 為「T」,值為 TCP;如果 protocol 為「U」,值為 UDP。 |
flow_tuple.column11/flow_tuple.column13 |
udm.network.received_bytes |
如果是第 2 版記錄,且 trafficFlow 為「I」,則值取自 bytesSentSourceToDestinationV2 (第 11 欄)。如果 trafficFlow 為「O」,則值取自 bytesSentFromDestinationToSourceV2 (第 13 欄)。 |
flow_tuple.column11/flow_tuple.column13 |
udm.network.sent_bytes |
如果是第 2 版記錄,如果 trafficFlow 為「I」,則值取自 bytesSentFromDestinationToSourceV2 (第 13 欄)。如果 trafficFlow 為「O」,則值取自 bytesSentSourceToDestinationV2 (第 11 欄)。 |
properties.deviceName |
udm.principal.asset.hostname |
取自 properties.deviceName 的值。 |
record.properties.primaryIPv4Address / properties.primaryIPv4Address / SrcIP_s_s / properties.network |
udm.principal.asset.ip |
值取自 record.properties.primaryIPv4Address、properties.primaryIPv4Address、SrcIP_s_s,或從 properties.network 擷取。 |
properties.vnetResourceGuid |
udm.principal.asset_id |
值會建構為「vnetResourceGuid: %{properties_vnetResourceGuid}」。GUID 是從 properties.vnetResourceGuid 擷取。 |
properties.deviceName |
udm.principal.hostname |
取自 properties.deviceName 的值。 |
record.properties.primaryIPv4Address / flow_tuple.column2 / properties.primaryIPv4Address / SrcIP_s_s / properties.network |
udm.principal.ip |
取自 record.properties.primaryIPv4Address、sourceIP (CSV 的第 2 欄)、properties.primaryIPv4Address、SrcIP_s_s 或從 properties.network 擷取的 Grok 值。 |
record.macAddress / record.properties.macAddress / properties.macAddress / MACAddress_s_s |
udm.principal.mac |
值取自 record.macAddress、record.properties.macAddress、properties.macAddress 或 MACAddress_s_s。破折號會替換為半形冒號。 |
flow_tuple.column4/properties.network |
udm.principal.port |
取自 sourcePort (CSV 的第 4 欄) 或從 properties.network 中以 grok 擷取的值。 |
properties.serviceKey |
udm.principal.resource.attribute.labels |
「服務金鑰」鍵設為 properties.serviceKey 的值。 |
properties.conditions.destinationPortRange |
udm.security_result.about.labels |
索引鍵「Conditions_destinationPortRange」設為 properties.conditions.destinationPortRange 的值。 |
properties.conditions.sourcePortRange |
udm.security_result.about.labels |
索引鍵「Conditions_sourcePortRange」設為 properties.conditions.sourcePortRange 的值。 |
record.properties.direction/properties.direction |
udm.security_result.about.labels |
「方向」鍵設為 record.properties.direction 或 properties.direction 的值。 |
properties.priority |
udm.security_result.about.labels |
「Priority」鍵設為 properties.priority 的值。 |
record.properties.type/properties.type |
udm.security_result.about.labels |
索引鍵「ruleType」設為 record.properties.type 或 properties.type 的值。 |
record.flowLogResourceID |
udm.security_result.about.resource.name |
取自 record.flowLogResourceID 的值。 |
flow_tuple.column8 (trafficDecision) |
udm.security_result.action |
如果 trafficDecision 為「A」,值為 ALLOW;如果 trafficDecision 為「D」,值為 BLOCK。 |
flow.aclID |
udm.security_result.detection_fields |
索引鍵 aclID[%{Index}] 會設為 flow.aclID 的值。 |
flowGroup.flowTuples |
udm.security_result.detection_fields |
索引鍵 flowTuple[%{Index}][%{Index1}][%{Index2}] 會設為流程元組字串的值。 |
flowGroup.rule |
udm.security_result.detection_fields |
索引鍵 rule[%{Index}][%{Index1}] 會設為 flowGroup.rule 的值。 |
record.properties.ruleName / flow.rule / properties.ruleName |
udm.security_result.rule_name |
值取自 record.properties.ruleName、flow.rule 或 properties.ruleName。 |
record.category/category |
udm.security_result.rule_type |
取自 record.category 或 category 的值。 |
level |
udm.security_result.severity |
如果 level 包含「Info」,則設為 INFORMATIONAL。 |
record.resourceId/resourceId |
udm.target.application |
取自 appname 欄位的值,該值是從 record.resourceId 或 resourceId 中以 Grok 擷取而來。 |
properties.nexthop/DestIP_s_s |
udm.target.asset.ip |
取自 DestIP_s_s 的值,或從 properties.nexthop 中擷取的值。 |
record.systemId/systemId |
udm.target.asset_id |
值的建構方式為「System Id: %{systemId}」。 |
udm.target.cloud.environment |
設為 MICROSOFT_AZURE。 |
|
flow_tuple.column3 / properties.nexthop / DestIP_s_s |
udm.target.ip |
取自 destinationIP (CSV 的第 3 欄)、DestIP_s_s 或從 properties.nexthop 擷取的 Grok 值。 |
flowTuple.mac |
udm.target.mac |
取自 flowTuple.mac 的值,並以半形冒號格式化。 |
flow_tuple.column5/DestPort_d_d |
udm.target.port |
取自 destinationPort (CSV 的第 5 欄) 或 DestPort_d_d 的值。 |
record.resourceId/resourceId |
udm.target.resource.attribute.labels |
「NSG Name」鍵設為 rscname 的值,這是從資源 ID 擷取的 grok。 |
record.resourceId/resourceId |
udm.target.resource.attribute.labels |
「Resource Group」鍵設為從資源 ID 擷取的 rscgrp 值。 |
record.resourceId/resourceId |
udm.target.resource.attribute.labels |
「訂閱 ID」鍵設為 subcriptionid 的值,這是從資源 ID 擷取的 grok 值。 |
record.resourceId/resourceid |
udm.target.resource.product_object_id |
取自 record.resourceId 或 resourceid 的值。 |
udm.target.resource.resource_type |
設為 STORAGE_BUCKET。 |
|
udm.metadata.product_name |
設為 Azure NSG Flow。 |
|
udm.metadata.vendor_name |
設為 Microsoft。 |
|
record.time |
event.idm.read_only_udm.metadata.event_timestamp |
從變更記錄對應 |
record.flowLogGUID |
event.idm.read_only_udm.metadata.product_log_id |
從變更記錄對應 |
record.flowLogResourceID |
event.idm.read_only_udm.security_result.about.resource.name |
從變更記錄對應 |
record.flowLogVersion |
event.idm.read_only_udm.metadata.product_version |
從變更記錄對應 |
record.macAddress |
event.idm.read_only_udm.principal.mac |
從變更記錄對應 |
record.operationName |
event.idm.read_only_udm.metadata.product_event_type |
從變更記錄對應 |
records.flowRecords.flows.aclID |
event.idm.read_only_udm.security_result.detection_fields |
從變更記錄對應 |
record.flowRecords.flows.flowGroups.rule |
event.idm.read_only_udm.security_result.detection_fields |
從變更記錄對應 |
record.flowRecords.flows.flowGroups.flowTuples |
event.idm.read_only_udm.security_result.detection_fields |
從變更記錄對應 |
properties.direction", "properties.conditions.sourcePortRange", "properties.conditions.destinationPortRange", "properties_priority" and "properties.type |
security_result.about.labels |
從變更記錄對應 |
record_resourceId |
target.resource.product_object_id |
從變更記錄對應 |
subcriptionid", "rscgrp" and "rscname |
target.resource.attribute.labels |
從變更記錄對應 |
變更記錄
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。