收集虛擬私有雲流量記錄
本文件說明如何使用 Google Cloud將 VPC 流量記錄匯出至 Google Security Operations。剖析器會將記錄從內建 JSON 格式轉換為 Google Security Operations UDM。這項工具會擷取相關欄位 (例如來源和目的地 IP、連接埠、通訊協定和傳送的位元組),然後將這些欄位對應至相應的 UDM 欄位,並考量網路方向和特殊情況,以便在 Google SecOps 中正確呈現。
事前準備
請確認您已完成下列事前準備:
- Google SecOps 執行個體。
- 在 Google Cloud 環境中設定並啟用 VPC Flow。
- Google Cloud的特殊存取權。
建立 Google Cloud Storage 值區
- 登入 Google Cloud 控制台。
前往「Cloud Storage Buckets」(Cloud Storage 值區) 頁面。
按一下 [建立]。
在「Create a bucket」(建立值區) 頁面中輸入值區資訊。完成下列每個步驟後,請按一下「繼續」繼續下一步:
在「開始使用」部分執行下列操作:
- 輸入符合值區名稱規定的不重複名稱,例如 vpcflow-logs。
如要啟用階層命名空間,請按一下展開箭頭,展開「為檔案導向和資料密集型工作負載進行最佳化」部分,然後選取「為這個值區啟用階層命名空間」。
如要新增分類標籤,請按一下展開箭頭,展開「Labels」部分。
按一下「新增標籤」,然後指定標籤的鍵和值。
在「Choose where to store your data」(選擇資料的儲存位置) 專區中執行下列操作:
- 選取「位置類型」。
使用位置類型選單選取位置,指定要永久儲存值區內物件資料的位置。
如要設定跨值區複製作業,請展開「設定跨值區複製作業」部分。
在「Choose a storage class for your data」專區中,為值區選取預設儲存空間級別,或選取「Autoclass」,讓系統自動管理值區的資料儲存空間級別。
在「選取如何控制物件的存取權」專區中,選取「否」來強制執行公開存取防護,然後為值區物件選取存取權控管模型。
在「Choose how to protect object data」(選擇保護物件資料的方式) 專區中,執行下列操作:
- 選取要為儲存桶設定的「資料保護」下方的任一選項。
- 如要選擇物件資料的加密方式,請按一下標示為「資料加密」的展開箭頭,然後選取「資料加密方法」。
按一下 [建立]。
在 Google Cloud 虛擬私有雲流程中設定記錄匯出功能
- 使用特權帳戶登入 Google Cloud 帳戶。
- 在「歡迎使用」頁面中,按一下「VPC 網路」。
- 按一下「預設」,系統就會顯示子網路頁面。
- 選取「所有記錄」。
- 依序點選「流程記錄」>「設定」。
- 選取「匯總時間間隔」,例如「30 秒」。
- 提供「取樣率」,例如 50%。
- 點選「儲存」。
- 在搜尋列中搜尋「Logging」,然後按下 Enter 鍵。
- 在「Log Explorer」中,在「Log Name」中選擇「VPC_flows」,然後點選「Apply」即可篩選記錄。
- 按一下「更多動作」。
- 按一下「建立接收器」。
- 提供下列設定:
- 接收器詳細資料:輸入名稱和說明。
- 點選「下一步」。
- Sink Destination:選取「Cloud Storage Bucket」。
- Cloud Storage 值區:選取先前建立的值區或建立新值區。
- 點選「下一步」。
- 選擇要納入接收器的記錄檔:在 Cloud Storage 值區中選取選項後,系統會填入預設記錄檔。
- 點選「下一步」。
- 選用步驟:選擇要從接收器排除的記錄:選取不想接收的記錄。
- 按一下「建立接收器」。
設定動態饋給
在 Google SecOps 平台中,有兩個不同的入口可用來設定動態消息:
- SIEM 設定 > 動態饋給
- 內容中心 > 內容包
依序前往「SIEM 設定」>「動態饋給」,設定動態饋給
如要設定動態饋給,請按照下列步驟操作:
- 依序前往「SIEM 設定」>「動態」。
- 按一下「新增動態消息」。
- 在下一頁中,按一下「設定單一動態饋給」。
- 在「動態饋給名稱」欄位中輸入動態饋給的名稱,例如「VPC 流量記錄」。
- 選取「Google Cloud Storage」做為「來源類型」。
- 選取「GCP VPC Flow」做為「記錄類型」。
- 按一下「取得服務帳戶」,做為「Chronicle 服務帳戶」。
- 點選「下一步」。
指定下列輸入參數的值:
- Storage Bucket URI: Google Cloud 以
gs://my-bucket/<value>
格式表示的儲存空間值區網址。 - URI 是:選取「Directory which includes subdirectories」。
來源刪除選項:根據偏好選取刪除選項。
- Storage Bucket URI: Google Cloud 以
點選「下一步」。
在「完成」畫面中查看新的動態饋給設定,然後按一下「提交」。
支援的虛擬私有雲流量記錄記錄格式
虛擬私有雲端流程記錄剖析器支援 JSON 格式的記錄。
支援的虛擬私有雲流量記錄檔範例
JSON
{ "insertId": "1wjp1y9f8vc6y6", "jsonPayload": { "bytes_sent": "0", "connection": { "dest_ip": "198.51.100.0", "dest_port": 32846, "protocol": 6, "src_ip": "198.51.100.1", "src_port": 443 }, "dest_instance": { "project_id": "logging-259109", "region": "us-west2", "vm_name": "demisto-01", "zone": "us-west2-a" }, "dest_vpc": { "project_id": "logging-259109", "subnetwork_name": "default", "vpc_name": "default" }, "end_time": "2020-03-28T10:44:41.896734136Z", "packets_sent": "2", "reporter": "DEST", "start_time": "2020-03-28T10:44:41.896734136Z" }, "logName": "projects/logging-259109/logs/compute.googleapis.com%2Fvpc_flows", "receiveTimestamp": "2020-03-28T10:44:50.112903743Z", "resource": { "labels": { "location": "us-west2-a", "project_id": "dummy_project_id", "subnetwork_id": "subnetwork_id", "subnetwork_name": "default" }, "type": "gce_subnetwork" }, "timestamp": "2020-03-28T10:44:50.112903743Z" }
UDM 對應表
記錄欄位 | UDM 對應 | 邏輯 |
---|---|---|
connection.dest_ip | target.asset.ip target.ip |
當 network.direction 為 OUTBOUND 時,直接對應。 當 network.direction 為 INBOUND 時,會從 principal.ip 對應。 |
connection.dest_port | target.port | 如果大於 -1,則會轉換為整數。 |
connection.protocol | network.ip_protocol | 轉換為字串,然後對應至整數。 根據整數值,對應至 IP 通訊協定名稱 (例如TCP、UDP、ICMP)。 |
connection.src_ip | principal.ip | 直接對應。 |
connection.src_port | principal.port | 已轉換為整數。 |
dest_instance.region | target.location.name | 直接對應。 |
dest_instance.vm_name | target.asset.hostname | 直接對應。 |
dest_location.city | target.location.city | 直接對應。 |
dest_location.country | target.location.country_or_region | 直接對應。 |
dest_location.region | target.location.state | 直接對應。 |
dest_vpc.project_id | target.namespace | 與 dest_vpc.vpc_name 搭配使用,以組成 target.namespace。 |
dest_vpc.vpc_name | target.namespace | 與 dest_vpc.project_id 搭配使用,以組成 target.namespace。 |
insertId | metadata.product_log_id | 直接對應。 |
jsonPayload.bytes_sent | network.sent_bytes | 已重新命名為 network.sent_bytes,並轉換為 uinteger。 |
jsonPayload.packets_sent | network.sent_packets | 已轉換為整數。 |
labels.tunnel_id | additional.fields | 使用鍵 Tunnel Id 和類型 string_value 合併至 additional.fields。 |
logName | security_result.category_details | 直接對應。 |
resource.labels.project_id | target.resource.name | 用於以 //cloudresourcemanager.googleapis.com/projects/{resource.labels.project_id} 格式建構 target.resource.name。 |
resource.labels.region | target.location.country_or_region | 直接對應。 |
resource.labels.subnetwork_id | target.user.attribute.labels | 已合併至 target.user.attribute.labels,鍵為 subnetwork_id 。 |
resource.type | metadata.product_event_type | 直接對應。 |
嚴重性 | security_result.severity | 如果值為 DEBUG ,則會對應至 LOW 。 |
src_gke_details.cluster.cluster_location | principal.resource.attribute.labels | 已合併至 principal.resource.attribute.labels,鍵為 cluster_location 。 |
src_gke_details.cluster.cluster_name | principal.resource.attribute.labels | 已合併至 principal.resource.attribute.labels,鍵為 cluster_name 。 |
src_gke_details.pod.pod_name | principal.resource.attribute.labels | 已合併至 principal.resource.attribute.labels,並使用 pod_name 做為鍵。 |
src_gke_details.pod.pod_namespace | principal.resource.attribute.labels | 已合併至 principal.resource.attribute.labels,並使用 pod_namespace 做為鍵。 |
src_instance.region | principal.location.name | 直接對應。 |
src_instance.vm_name | principal.asset.hostname | 直接對應。 |
src_location.city | principal.location.city | 直接對應。 |
src_location.country | principal.location.country_or_region | 直接對應。 |
src_location.region | principal.location.state | 直接對應。 |
src_vpc.project_id | principal.namespace | 與 src_vpc.vpc_name 搭配使用,以形成 principal.namespace。 |
src_vpc.vpc_name | principal.namespace | 與 src_vpc.project_id 搭配使用,以組成 principal.namespace。 |
textPayload | additional.fields | 使用鍵 Textpayload 和類型 string_value 合併至 additional.fields。 |
時間戳記 | metadata.event_timestamp | 如果 jsonPayload.end_time 為空白,則用於填入 event_timestamp。 |
metadata.description | 系統會根據「reporter」欄位,產生網路流量的說明,包括回報者 (SRC 或 DEST) 和方向 (INBOUND 或 OUTBOUND)。 | |
metadata.event_type | 如果是虛擬私有雲流量記錄,請設為 NETWORK_CONNECTION ;如果是其他記錄類型,請設為 USER_RESOURCE_ACCESS 。 |
|
metadata.log_type | 設為 GCP_VPC_FLOW 。 |
|
metadata.product_name | 設為 GCP VPC Flow Logs 。 |
|
metadata.product_version | 設為 1.0 。 |
|
metadata.vendor_name | 設為 Google Cloud 。 |
|
network.direction | 根據 target.port 決定。如果是已知或保留的連接埠,則視為 INBOUND;否則視為 OUTBOUND。 | |
security_result.severity | 預設為 LOW 。 |
|
target.resource.attribute.cloud.environment | 設為 GOOGLE_CLOUD_PLATFORM 。 |
|
target.resource.resource_type | 設為 CLOUD_PROJECT 。 |
異動
2024-10-24
改善項目:
- 分別將
principal.ip
、principal.port
與target.ip
和target.port
互換對應。
2024-03-15
改善項目:
- 將
jsonPayload.src_gke_details.pod.pod_namespace
、jsonPayload.src_gke_details.pod.pod_name
、jsonPayload.src_gke_details.cluster.cluster_name
、jsonPayload.src_gke_details.cluster.cluster_location
對應至principal.resource.attribute.labels
。 - 將
jsonPayload.dest_gke_details.pod.pod_namespace
、jsonPayload.dest_gke_details.pod.pod_name
、jsonPayload.dest_gke_details.cluster.cluster_name
、jsonPayload.dest_gke_details.cluster.cluster_location
對應至target.resource.attribute.labels
。
2023-05-23
改善項目:
- 當欄位「logName」不含「vpc_flows」時,將「metadata.event_type」對應至「USER_RESOURCE_ACCESS」。
- 將「時間戳記」對應至「events.timestamp」。
- 將「textPayload」和「labels.tunnel_id」對應至「additional.fields」。
- 將「resource.labels.region」對應至「target.location.country_or_region」。
- 針對各種欄位新增空值檢查 (視需要)。
2023-04-10
改善項目:
- 將
target.resource.attribute.cloud.environment
設為GOOGLE_CLOUD_PLATFORM
。 - 將
target.resource.name
設為完整資源名稱值。
2022-07-22
改善項目:
- 已將
resource.labels.location
對應至principal.location.name
。 - 已將
resource.labels.subnetwork_id
對應至target.user.attribute.labels
。 - 已將
logName
對應至security_result.category_details
。
還有其他問題嗎?向社群成員和 Google SecOps 專家尋求解答。