將 Pub/Sub 與 Google SecOps 整合
本文提供指南,說明如何將 Pub/Sub 與 Google Security Operations (Google SecOps) 整合。
整合版本:1.0
事前準備
如要使用 Pub/Sub 整合服務,您需要:
服務帳戶:您可以使用現有的服務帳戶,也可以建立新的服務帳戶。 Google Cloud
如需建立服務帳戶的指引,請參閱「建立服務帳戶」。
如果您使用服務帳戶向 Google Cloud進行驗證,可以建立 JSON 格式的服務帳戶金鑰,並在設定整合參數時提供下載的 JSON 檔案內容。
注意:基於安全性考量,建議您使用工作負載身分電子郵件地址,而非服務帳戶金鑰。如要進一步瞭解工作負載身分,請參閱「工作負載的身分」。
為主體設定 IAM 角色。
Pub/Sub 使用 Identity and Access Management (IAM) 控管存取權,並要求您授予主體
Pub/Sub Viewer
角色。
整合參數
Pub/Sub 整合服務需要下列參數:
參數 | 說明 |
---|---|
Workload Identity Email |
選用 Workload Identity Federation 的用戶端電子郵件地址。 您可以設定這個參數或 如要使用 Workload Identity Federation 模擬服務帳戶,請將 |
Service Account JSON File Content |
選用 服務帳戶金鑰 JSON 檔案的內容。 您可以設定這個參數或 如要設定這個參數,請提供您建立服務帳戶時下載的服務帳戶金鑰 JSON 檔案完整內容。 如要進一步瞭解如何使用服務帳戶做為驗證方法,請參閱服務帳戶總覽。 |
Quota Project ID |
選用 您用於 Google Cloud API 和帳單的專案 ID。 Google Cloud 如要使用這個參數,您必須將 整合功能會將這個參數值附加至所有 API 要求。 如未設定這個參數的值,整合服務會從 Google Cloud 服務帳戶擷取配額專案 ID。 |
Project ID |
選用 要在整合中使用的專案 ID。 如未設定這個參數的值,整合服務會從 Google Cloud 服務帳戶擷取專案 ID。 |
Verify SSL |
必要 如果選取這個選項,整合服務會驗證連線至 Pub/Sub 的 SSL 憑證是否有效。 (此為預設選項)。 |
如需在 Google SecOps 中設定整合功能的操作說明,請參閱「設定整合功能」。
如有需要,您之後可以變更。設定整合執行個體後,您就可以在劇本中使用該執行個體。如要進一步瞭解如何設定及支援多個執行個體,請參閱「支援多個執行個體」。
動作
如要進一步瞭解動作,請參閱「回覆『你的工作台』中的待處理動作」和「執行手動動作」。
乒乓
使用 Ping 動作測試與 Pub/Sub 的連線。
這項操作不會在 Google SecOps 實體上執行。
動作輸入內容
無
動作輸出內容
「Ping」動作會提供下列輸出內容:
動作輸出類型 | 可用性 |
---|---|
案件總覽附件 | 無法使用 |
案件總覽連結 | 無法使用 |
案件訊息牆表格 | 無法使用 |
補充資訊表格 | 無法使用 |
JSON 結果 | 無法使用 |
輸出訊息 | 可用 |
指令碼結果 | 可用 |
輸出訊息
「Ping」動作可能會傳回下列輸出訊息:
輸出訊息 | 訊息說明 |
---|---|
Successfully connected to the Pub/Sub server with the
provided connection parameters! |
動作成功。 |
Failed to connect to the Pub/Sub server! Error is
ERROR_REASON |
動作失敗。 檢查伺服器的連線、輸入參數或憑證。 |
指令碼結果
下表列出使用「Ping」動作時,指令碼結果輸出的值:
指令碼結果名稱 | 值 |
---|---|
is_success |
True 或False |
連接器
如需在 Google SecOps 中設定連接器的詳細操作說明,請參閱「擷取資料 (連接器)」。
Pub/Sub - Messages 連接器
在 Google SecOps 平台中,「Pub/Sub - Messages Connector」(Pub/Sub - 訊息連接器) 稱為「PubSub - Messages Connector」(PubSub - 訊息連接器)。
使用 Pub/Sub - 訊息連接器從 Pub/Sub 擷取訊息。
JSON 嚴重程度對應
如要對應快訊嚴重程度,您需要指定 Pub/Sub - Messages Connector 用來取得 Severity Mapping JSON
參數嚴重程度值的欄位。連結器回應可以包含值類型,例如 integer
、float
和 string
。
Pub/Sub - Messages Connector 會讀取 integer
和 float
值,並根據 Google SecOps 設定對應這些值。下表顯示 integer
值與 Google SecOps 中嚴重程度的對應關係:
整數值 | 對應的嚴重性 |
---|---|
100 |
Critical |
自 80 至 100 |
High |
自 60 至 80 |
Medium |
自 40 至 60 |
Low |
小於 40 |
Informational |
如果回應包含 string
值,則 Pub/Sub - Messages Connector 需要額外設定。
一開始,預設值會顯示如下:
{
"Default": 60
}
如果對應所需的資料值位於 event_severity
JSON 鍵中,則資料值可能如下所示:
"Malicious"
"Benign"
"Unknown"
如要剖析 event_severity
JSON 金鑰值,並確保 JSON 物件格式正確,請按照下列方式設定 Severity Mapping JSON
參數:
{
"event_severity": {
"Malicious": 100,
"Unknown": 60,
"Benign": -1
},
"Default": 50
}
必須提供 "Default"
值。
如果同一個 JSON 物件有多個相符項目,Pub/Sub - Messages Connector 會優先處理第一個 JSON 物件鍵。
如要處理含有 integer
或 float
值的欄位,請在 Severity Mapping JSON
參數中設定鍵和空白字串:
{
"Default":"60",
"integer_field": "",
"float_field": ""
}
連接器輸入內容
Pub/Sub - Messages 連接器需要下列參數:
參數 | 說明 |
---|---|
Product Field Name |
必要 儲存產品名稱的欄位名稱。 預設值為 |
Event Field Name |
必要 用於判斷事件名稱 (子類型) 的欄位名稱。 預設值為 |
Environment Field Name |
選填
儲存環境名稱的欄位名稱。 如果找不到環境欄位,系統會將環境設為預設環境。 預設值為 |
Environment Regex Pattern |
選填
要在 使用預設值 如果規則運算式模式為空值或空白,或環境值為空值,最終環境結果就是預設環境。 |
Script Timeout (Seconds) |
必要 Python 處理程序執行目前指令碼的逾時限制 (以秒為單位)。 預設值為 |
Service Account JSON File Content |
選用 服務帳戶金鑰 JSON 檔案的內容。 您可以設定這個參數或 如要設定這個參數,請提供您建立服務帳戶時下載的服務帳戶金鑰 JSON 檔案完整內容。 對於 Pub/Sub - Messages 連接器,使用服務帳戶金鑰 JSON 檔案進行驗證的優先順序,高於工作負載身分聯盟。 |
Workload Identity Email |
選用 服務帳戶的用戶端電子郵件地址。 您可以設定這個參數或 如要使用 Workload Identity Federation 模擬服務帳戶,請將 |
Project ID |
選用 要在連接器中使用的專案 ID。 |
Quota Project ID |
選用 您用於 Google Cloud API 和帳單的專案 ID。 Google Cloud 如要使用這個參數,您必須將 整合功能會將這個參數值附加至所有 API 要求。 |
Subscription ID |
必要 Pub/Sub 訂閱項目 ID。 |
Case Name Template |
選用 自訂案件名稱。 設定這個參數時,連接器會在 Google SecOps 事件中新增名為 您可以提供下列格式的預留位置:
範例: 對於預留位置,連接器會使用第一個 Google SecOps 事件。連接器只會處理含有字串值的鍵。如要設定這項參數,請指定不含前置字元的事件欄位。 |
Alert Name Template |
必要 自訂快訊名稱。 您可以提供下列格式的預留位置:
範例: 對於預留位置,連接器會使用第一個 Google SecOps 事件。連接器只會處理含有字串值的鍵。如果您未提供任何值或使用無效範本,連接器會使用下列格式的回退值: |
Rule Generator Template |
必要 自訂規則產生器。 您可以提供下列格式的預留位置:
範例: 對於預留位置,連接器會使用第一個 Google SecOps 事件。連接器只會處理含有字串值的鍵。如果您未提供任何值或使用無效範本,連接器會使用下列格式的回退值: |
Timestamp Field |
必要 欄位名稱,用於定義 Google SecOps 快訊時間戳記。 如果時間戳記未使用 Unix Epoch 時間格式,請在 預設值為 |
Timestamp Format |
選用 訊息時間戳記格式。 連接器需要時間戳記才能正確處理訊息。如果時間戳記未使用 Unix Epoch 時間格式,且您未設定時間戳記格式,連線器就會失敗。 預設值為 |
Severity Mapping JSON |
必要 JSON 物件,定義連接器如何從訊息中擷取嚴重性等級。 預設值如下: { "Default": "60" } 如要進一步瞭解嚴重程度對應,請參閱 JSON 嚴重程度對應。 |
Unique ID Field |
選用 用於確認訊息是否不重複的欄位名稱。 如果未設定值,連接器會產生 SHA-256 雜湊,並將其做為訊息的 ID。 |
Max Messages To Fetch |
選用 每次連接器疊代要處理的訊息數量上限。 最多 100 個。 |
Disable Overflow |
選用 如果選取這個選項,連接器會在建立快訊時忽略 Google SecOps 溢位機制。 (此為預設選項)。 |
Verify SSL |
必要 如果選取這個選項,整合服務會驗證連線至 Pub/Sub 的 SSL 憑證是否有效。 預設為選取。 |
Proxy Server Address |
選用 要使用的 Proxy 伺服器位址。 |
Proxy Username |
選用 用於驗證的 Proxy 使用者名稱。 |
Proxy Password |
選用 用於驗證的 Proxy 密碼。 |
連接器規則
Pub/Sub - Messages 連接器支援 Proxy。
連接器事件
以下範例顯示 Pub/Sub - Messages Connector 產生的 Google SecOps 事件 JSON 輸出內容:
{
"notificationConfigName": "organizations/ORGANIZATION_ID/notificationConfigs/soar_connector_toxic_notifications_config",
"finding": {
"name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID",
"parent": "organizations/ORGANIZATION_ID/sources/SOURCE_ID",
"resourceName": "//compute.googleapis.com/projects/PROJECT_ID/global/firewalls/FIREWALL_ID",
"state": "ACTIVE",
"category": "OPEN_NETBIOS_PORT",
"externalUri": "https://console.cloud.google.com/networking/firewalls/details/default-allow-rdp?project\u003dPROJECT_ID",
"sourceProperties": {
"Recommendation": "Restrict the firewall rules at: https://console.cloud.google.com/networking/firewalls/details/default-allow-rdp?project\u003dPROJECT_ID",
"ExceptionInstructions": "Add the security mark \"allow_open_netbios_port\" to the asset with a value of \"true\" to prevent this finding from being activated again.",
"Explanation": "Firewall rules that allow connections from all IP addresses on TCP ports 137-139 or UDP ports 137-139 may expose NetBIOS services to attackers.",
"ScannerName": "FIREWALL_SCANNER",
"ResourcePath": [
"projects/PROJECT_ID/",
"folders/FOLDER_ID/",
"folders/FOLDER_ID/",
"organizations/ORGANIZATION_ID/"
],
"ExposedService": "NetBIOS",
"OpenPorts": {
"TCP": [
137.0,
138.0,
139.0
],
"UDP": [
137.0,
138.0,
139.0
]
},
"compliance_standards": {
"iso": [
{
"ids": [
"A.13.1.1"
]
}
],
"pci": [
{
"ids": [
"1.2.1"
]
}
],
"nist": [
{
"ids": [
"SC-7"
]
}
]
},
"ReactivationCount": 4.0
},
"securityMarks": {
"name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID/securityMarks",
"marks": {
"peter": "e2e1"
}
},
"eventTime": "2024-08-30T14:44:37.973090Z",
"createTime": "2024-06-24T07:08:54.777Z",
"propertyDataTypes": {
"ResourcePath": {
"listValues": {
"propertyDataTypes": [
{
"primitiveDataType": "STRING"
}
]
}
},
"ReactivationCount": {
"primitiveDataType": "NUMBER"
},
"Explanation": {
"primitiveDataType": "STRING"
},
"ExposedService": {
"primitiveDataType": "STRING"
},
"ScannerName": {
"primitiveDataType": "STRING"
}
}
}
}
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。