將 Pub/Sub 與 Google SecOps 整合

本文提供指南,說明如何將 Pub/Sub 與 Google Security Operations (Google SecOps) 整合。

整合版本:1.0

事前準備

如要使用 Pub/Sub 整合服務,您需要:

整合參數

Pub/Sub 整合服務需要下列參數:

參數 說明
Workload Identity Email 選用

Workload Identity Federation 的用戶端電子郵件地址。

您可以設定這個參數或 Service Account JSON File Content 參數。

如要使用 Workload Identity Federation 模擬服務帳戶,請將 Service Account Token Creator 角色授予服務帳戶。如要進一步瞭解工作負載身分和使用方式,請參閱「工作負載的身分」。

Service Account JSON File Content 選用

服務帳戶金鑰 JSON 檔案的內容。

您可以設定這個參數或 Workload Identity Email 參數。

如要設定這個參數,請提供您建立服務帳戶時下載的服務帳戶金鑰 JSON 檔案完整內容。

如要進一步瞭解如何使用服務帳戶做為驗證方法,請參閱服務帳戶總覽

Quota Project ID 選用

您用於 Google Cloud API 和帳單的專案 ID。 Google Cloud 如要使用這個參數,您必須將 Service Usage Consumer 角色授予服務帳戶。如要進一步瞭解 IAM 角色,請參閱「使用身分與存取權管理功能控管存取權」一文。

整合功能會將這個參數值附加至所有 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 TrueFalse

連接器

如需在 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 參數嚴重程度值的欄位。連結器回應可以包含值類型,例如 integerfloatstring

Pub/Sub - Messages Connector 會讀取 integerfloat 值,並根據 Google SecOps 設定對應這些值。下表顯示 integer 值與 Google SecOps 中嚴重程度的對應關係:

整數值 對應的嚴重性
100 Critical
80100 High
6080 Medium
4060 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 物件鍵。

如要處理含有 integerfloat 值的欄位,請在 Severity Mapping JSON 參數中設定鍵和空白字串:

{
  "Default":"60",
  "integer_field": "",
  "float_field": ""
}

連接器輸入內容

Pub/Sub - Messages 連接器需要下列參數:

參數 說明
Product Field Name 必要

儲存產品名稱的欄位名稱。

預設值為 Product Name

Event Field Name 必要

用於判斷事件名稱 (子類型) 的欄位名稱。

預設值為 event_type

Environment Field Name 選填

儲存環境名稱的欄位名稱。

如果找不到環境欄位,系統會將環境設為預設環境。

預設值為 ""

Environment Regex Pattern 選填

要在 Environment Field Name 欄位中找到的值上執行的規則運算式模式。這個參數可讓您使用規則運算式邏輯,操控環境欄位。

使用預設值 .* 擷取必要的原始 Environment Field Name 值。

如果規則運算式模式為空值或空白,或環境值為空值,最終環境結果就是預設環境。

Script Timeout (Seconds) 必要

Python 處理程序執行目前指令碼的逾時限制 (以秒為單位)。

預設值為 300 seconds

Service Account JSON File Content 選用

服務帳戶金鑰 JSON 檔案的內容。

您可以設定這個參數或 Workload Identity Email 參數。

如要設定這個參數,請提供您建立服務帳戶時下載的服務帳戶金鑰 JSON 檔案完整內容。

對於 Pub/Sub - Messages 連接器,使用服務帳戶金鑰 JSON 檔案進行驗證的優先順序,高於工作負載身分聯盟。

Workload Identity Email 選用

服務帳戶的用戶端電子郵件地址。

您可以設定這個參數或 Service Account JSON File Content 參數。

如要使用 Workload Identity Federation 模擬服務帳戶,請將 Service Account Token Creator 角色授予服務帳戶。

Project ID 選用

要在連接器中使用的專案 ID。

Quota Project ID 選用

您用於 Google Cloud API 和帳單的專案 ID。 Google Cloud 如要使用這個參數,您必須將 Service Usage Consumer 角色授予服務帳戶。如要進一步瞭解 IAM 角色,請參閱「使用身分與存取權管理功能控管存取權」一文。

整合功能會將這個參數值附加至所有 API 要求。

Subscription ID 必要

Pub/Sub 訂閱項目 ID。

Case Name Template 選用

自訂案件名稱。

設定這個參數時,連接器會在 Google SecOps 事件中新增名為 custom_case_name 的鍵。

您可以提供下列格式的預留位置: [name of the field]

範例:Phishing - [event_mailbox]

對於預留位置,連接器會使用第一個 Google SecOps 事件。連接器只會處理含有字串值的鍵。如要設定這項參數,請指定不含前置字元的事件欄位。

Alert Name Template 必要

自訂快訊名稱。

您可以提供下列格式的預留位置: [name of the field]

範例:Phishing - [event_mailbox]

對於預留位置,連接器會使用第一個 Google SecOps 事件。連接器只會處理含有字串值的鍵。如果您未提供任何值或使用無效範本,連接器會使用下列格式的回退值:CONNECTOR_NAME - Alert。如要設定這項參數,請指定不含前置字元的事件欄位。

Rule Generator Template 必要

自訂規則產生器。

您可以提供下列格式的預留位置: [name of the field]

範例:Phishing - [event_mailbox]

對於預留位置,連接器會使用第一個 Google SecOps 事件。連接器只會處理含有字串值的鍵。如果您未提供任何值或使用無效範本,連接器會使用下列格式的回退值:CONNECTOR_NAME - Rule Generator。如要設定這個參數,請指定不含前置字元的事件欄位。

Timestamp Field 必要

欄位名稱,用於定義 Google SecOps 快訊時間戳記。

如果時間戳記未使用 Unix Epoch 時間格式,請在 Timestamp Format 參數中定義時間戳記格式。

預設值為 message_publishTime

Timestamp Format 選用

訊息時間戳記格式。

連接器需要時間戳記才能正確處理訊息。如果時間戳記未使用 Unix Epoch 時間格式,且您未設定時間戳記格式,連線器就會失敗。

預設值為 %Y-%m-%dT%H:%M:%S.%fZ

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 專業人員尋求答案。