將 OpenSearch 與 Google SecOps 整合

本文說明如何將 OpenSearch 與 Google Security Operations 整合。

用途

OpenSearch 整合功能可滿足下列安全性自動化調度管理和調查用途:

  • 自動化威脅搜尋:使用 Lucene 和 DSL 查詢,定期在所有 OpenSearch 索引中搜尋特定入侵指標 (IoC) 或可疑模式。

  • 集中擷取警示:將 OpenSearch 的文件擷取為可做為行動依據的警示,並傳送至 Google SecOps,確保資料湖泊中的安全性事件會優先處理及調查。

  • 擷取情境資料:自動從 OpenSearch 提取相關記錄或歷來資料,充實既有的資安案件,為分析師提供更深入的調查背景資訊。

  • 彈性資料對應:動態將 OpenSearch 文件的嚴重性等級和環境標記對應至 Google SecOps 標準,確保不同記錄來源的一致性。

事前準備

在 Google SecOps 平台中設定整合功能前,請確認您具備下列項目:

  • CA 憑證檔案:有效的憑證授權單位檔案,用於保護連線。

  • 最新整合版本:請確認您使用的是最新版 OpenSearch 整合。

  • Base64 編碼憑證:設定前,必須先將 CA 憑證檔案內容轉換為 Base64 字串。

如要使用 CA 憑證設定整合,請完成下列步驟:

  1. 開啟整合設定參數頁面。
  2. 將 Base64 編碼字串貼到「CA 憑證檔案」欄位。
  3. 勾選「Verify SSL」核取方塊。
  4. 按一下「測試」,確認整合設定成功。

整合參數

OpenSearch 整合需要下列參數:

參數 說明
Server Address

這是必填欄位。

OpenSearch 執行個體的端點網址,包括通訊協定和通訊埠 (例如 https://10.0.0.1:9200)。

Username

選填。

用於向 OpenSearch 執行個體驗證的使用者名稱。

Password

選填。

與指定使用者名稱相關聯的密碼。

API Token

選填。

用於驗證的 API 權杖,可替代使用者名稱和密碼。

Authenticate

選填。

如果選取,整合功能會使用提供的憑證,驗證與 OpenSearch 伺服器的連線。

Verify SSL

選填。

如果選取,整合功能會在連線至 OpenSearch 伺服器時驗證 SSL 憑證。

CA Certificate File

選填。

PEM 格式的憑證授權單位 (CA) 憑證檔案內容,用於驗證伺服器的 SSL 憑證。

如要瞭解如何在 Google SecOps 中設定整合功能,請參閱「設定整合功能」。

如有需要,您可以在後續階段進行變更。設定整合執行個體後,即可在應對手冊中使用。如要進一步瞭解如何設定及支援多個執行個體,請參閱「支援多個執行個體」。

動作

如要進一步瞭解動作,請參閱「 在工作區回應待處理動作」和「在案件中執行手動動作」。

使用「Advanced ES Search」動作,在 OpenSearch 伺服器上執行預先設定的搜尋查詢,並以字典格式擷取結果。

這項動作不會在 Google SecOps 實體上執行。

動作輸入內容

Advanced ES Search 動作需要下列參數:

參數 說明
Index

選填。

OpenSearch 索引的搜尋模式 (例如 smp_playbooks-2019.06.13)。您可以使用萬用字元搜尋多個索引 (例如 smp_playbooks-*)。

預設值為 *。

Query

選填。

使用 Lucene 語法執行的搜尋查詢 (例如 level:error OR level:warning)。

預設值為 *。

Limit

選填。

要傳回的文件數量上限。如不設限,請將這個值設為 0。

預設值為 100。

Display Field

選填。

以半形逗號分隔的清單,列出要傳回的特定欄位。

預設值為 *,會傳回所有欄位。

Search Field

選填。

Query 不含目標欄位名稱時,要搜尋的特定欄位。這是自由文字查詢的預設搜尋目標。

預設值為 _all,會搜尋所有已建立索引的欄位。

Timestamp Field

選填。

用於依時間篩選的欄位名稱。

如果 Earliest Date 和 Oldest Date 皆空白,動作就不會執行時間篩選。

預設值為 @timestamp。

Oldest Date

選填。

搜尋的開始日期。這項動作會傳回在這個時間戳記當天或之後發生的記錄。

您可以提供確切的世界標準時間時間戳記 (YYYY-MM-DDTHH:MM:SSZ) 或相對日期運算 (例如 now-1d)。

預設值為 now-1d。

Earliest Date

選填。

搜尋的結束日期。這項動作會傳回在這個時間戳記當天或之前發生的記錄。

您可以提供確切的世界標準時間時間戳記 (YYYY-MM-DDTHH:MM:SSZ) 或相對日期運算 (例如 now)。

預設值為 now。

動作輸出內容

「Advanced ES Search」動作會提供下列輸出內容:

動作輸出類型 可用性
案件總覽附件 無法使用
案件總覽連結 無法使用
案件總覽表格 無法使用
補充資訊表格 無法使用
JSON 結果 無法使用
輸出訊息 可用
指令碼執行結果 可用
指令碼執行結果

下表列出使用「Advanced ES Search」動作時,指令碼結果輸出的值:

指令碼結果名稱 值
results RESULTS

使用「DSL Search」動作,全面搜尋所有 OpenSearch 索引,並以字典格式擷取結果。

這項動作不會在 Google SecOps 實體上執行。

動作輸入內容

DSL 搜尋動作需要下列參數:

參數 說明
Index

選填。

OpenSearch 索引的搜尋模式 (例如 smp_playbooks-2019.06.13)。您可以使用萬用字元搜尋多個索引 (例如 smp_playbooks-*)。

預設值為 *。

Query

選填。

使用 Lucene 語法執行的搜尋查詢 (例如 level:error OR level:warning)。

預設值為 *。

Limit

選填。

要傳回的文件數量上限。如不設限,請將這個值設為 0。

預設值為 100。

動作輸出內容

「DSL Search」動作會提供下列輸出內容:

動作輸出類型 可用性
案件總覽附件 無法使用
案件總覽連結 無法使用
案件總覽表格 無法使用
補充資訊表格 無法使用
JSON 結果 可用
輸出訊息 可用
指令碼執行結果 可用
JSON 結果

以下範例顯示使用 DSL 搜尋動作時,收到的 JSON 結果輸出內容:

[
    {
        "_score": 0.2876821,
        "_type": "person",
        "_id": "2",
        "_source": {
            "lastname": "Smith",
            "name": "John",
            "job_description": "Systems administrator"
        },
        "_index": "accounts"
    }, {
        "_score": 0.28582606,
        "_type": "person",
        "_id": "1",
        "_source":
        {
            "lastname": "Doe",
            "name": "John",
            "job_description": "Systems administrator and Linux specialist"
        },
        "_index": "accounts"
    }
]
指令碼執行結果

下表列出使用「DSL Search」動作時,指令碼結果輸出的值:

指令碼結果名稱 值
results RESULTS

乒乓

使用 Ping 動作測試與 OpenSearch 的連線能力。

這項動作不會在 Google SecOps 實體上執行。

動作輸入內容

無

動作輸出內容

Ping 動作會提供下列輸出內容:

動作輸出類型 可用性
案件總覽附件 無法使用
案件總覽連結 無法使用
案件總覽表格 無法使用
補充資訊表格 無法使用
JSON 結果 無法使用
輸出訊息 可用
指令碼執行結果 可用
指令碼執行結果

下表列出使用 Ping 動作時,指令碼結果輸出的值:

指令碼結果名稱 值
is_success true或false

使用「Simple ES Search」動作,在 OpenSearch 中對所有已建立索引的欄位執行基本搜尋,並以字典格式擷取結果。

這項動作不會在 Google SecOps 實體上執行。

動作輸入內容

簡易 ES 搜尋動作需要下列參數:

參數 說明
Index

選填。

OpenSearch 索引的搜尋模式 (例如 smp_playbooks-2019.06.13)。您可以使用萬用字元搜尋多個索引 (例如 smp_playbooks-*)。

預設值為 *。

Query

選填。

使用 Lucene 語法執行的搜尋查詢 (例如 level:error OR level:warning)。

預設值為 *。

Limit

選填。

要傳回的文件數量上限。如不設限,請將這個值設為 0。

預設值為 100。

動作輸出內容

「Simple ES Search」動作會提供下列輸出內容:

動作輸出類型 可用性
案件總覽附件 無法使用
案件總覽連結 無法使用
案件總覽表格 無法使用
補充資訊表格 無法使用
JSON 結果 可用
輸出訊息 可用
指令碼執行結果 可用
JSON 結果

以下範例顯示使用「Simple ES Search」動作時,收到的 JSON 結果輸出內容:

[{
    "_score": 0.2876821,
    "_type": "person",
    "_id": "2",
    "_source":
        {
          "lastname": "Smith",
          "name": "John",
          "job_description": "Systems administrator"
         },
     "_index": "accounts"
 },
 {
     "_score": 0.28582606,
     "_type": "person",
     "_id": "1",
     "_source":
       {
         "lastname": "Doe",
         "name": "John",
         "job_description": "Systems administrator and Linux specialist"
       },
    "_index": "accounts"
  }
 ]
指令碼執行結果

下表列出使用「Simple ES Search」動作時,指令碼結果輸出的值:

指令碼結果名稱 值
results RESULTS

連接器

如要進一步瞭解如何在 Google SecOps 中設定連接器,請參閱「擷取資料 (連接器)」。

OpenSearch 連接器

使用 OpenSearch 連接器,透過提供的 Lucene 查詢搜尋指定的 OpenSearch 索引,並將文件擷取為 Google SecOps 的警告。

連接器輸入

OpenSearch 連接器需要下列參數:

參數 說明
Product Field Name

這是必填欄位。

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

產品名稱主要會影響對應。為簡化及改善連接器的對應程序,預設值會解析為程式碼參照的備用值。如果這個參數的輸入內容無效,預設會解析為備用值。

預設值為 Product Name。

Event Field Name

這是必填欄位。

決定事件名稱 (子類型) 的欄位名稱。

預設值為 name。

Script Timeout (Seconds)

這是必填欄位。

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

預設值為 180。

Server Address

這是必填欄位。

OpenSearch 執行個體的端點網址,包括通訊協定和通訊埠 (例如 https://10.0.0.1:9200)。

Username

選填。

用於向 OpenSearch 執行個體驗證的使用者名稱。

Password

選填。

與指定使用者名稱相關聯的密碼。

Authenticate

選填。

如果選取,整合功能會使用提供的憑證,驗證與 OpenSearch 伺服器的連線。

API Token

選填。

用於驗證的 API 權杖,可替代使用者名稱和密碼。

Verify SSL

選填。

如果選取,整合功能會在連線至 OpenSearch 伺服器時驗證 SSL 憑證。

Alert Name Field

這是必填欄位。

包含快訊名稱的欄位名稱 (例如 _source_alert_info_alert)。

Timestamp Field

這是必填欄位。

包含時間戳記的欄位名稱 (例如 _source_@timestamp)。

Environment Field Name

選填。

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

如果缺少環境欄位,連接器會使用預設值。

預設值為 ""。

Indexes

選填。

要搜尋的索引模式。使用 * 搜尋所有索引。

Query

選填。

使用 Lucene 語法執行的搜尋查詢。

Alerts Count Limit

這是必填欄位。

單一週期內可提取的快訊數量上限。

預設值為 20。

Max Days Backwards

這是必填欄位。

要擷取幾天前的快訊。

這個參數可套用至首次啟用連接器後的初始連接器疊代,或過期連接器時間戳記的備用值。

預設值為 1。

Severity Field Name

選填。

用於擷取警告嚴重性值的欄位名稱。

如果欄位包含數值 (整數或浮點數),連接器會自動將其對應至 Google SecOps 嚴重性等級 (例如 100 為 Critical)。如果欄位包含字串值,您必須在 severity_map_config.json 檔案中定義對應規則。

Proxy Server Address

選填。

要使用的 Proxy 伺服器位址。

Proxy Username

選填。

用於向 Proxy 伺服器驗證的使用者名稱。

Proxy Password

選填。

用於向 Proxy 伺服器驗證的密碼。

Environment Regex Pattern

選填。

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

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

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

OpenSearch DSL 連接器

使用 OpenSearch DSL 連接器,透過網域專屬語言 (DSL) 查詢發出 REST API 呼叫,將文件做為快訊擷取至 Google SecOps。

連接器輸入

OpenSearch DSL 連接器需要下列參數:

參數 說明
Product Field Name

這是必填欄位。

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

產品名稱主要會影響對應。為簡化及改善連接器的對應程序,預設值會解析為程式碼參照的備用值。如果這個參數的輸入內容無效,預設會解析為備用值。

預設值為 Product Name。

預設值為 device_product。

Event Field Name

這是必填欄位。

決定事件名稱 (子類型) 的欄位名稱。

預設值為 name。

Script Timeout (Seconds)

這是必填欄位。

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

預設值為 60。

Server Address

這是必填欄位。

OpenSearch 執行個體的端點網址,包括通訊協定 (例如 https://10.0.0.1)。

Port

這是必填欄位。

用於連線至 OpenSearch API 伺服器的通訊埠。

Query

這是必填欄位。

用於搜尋的 DSL 查詢,採用 JSON 格式。

為提高連接器穩定性,建議在查詢中加入遞增排序的時間戳記索引鍵。

Index

這是必填欄位。

用於搜尋的索引。使用 _all 搜尋所有索引。

Timestamp Field

這是必填欄位。

包含時間戳記的欄位名稱 (例如 _source_@timestamp)。

Alert Field Name

這是必填欄位。

包含快訊名稱的欄位名稱 (例如 _source_info_alertname)。

Description Field

選填。

包含快訊說明的欄位名稱 (例如 _source_alert_info_description)。

Severity

這是必填欄位。

要指派給所有擷取快訊的靜態嚴重性等級。如果 Alert Severity 和 Severity Field Name 為空白,系統就會使用這個參數。

預設值為 Medium。

Alert Severity

選填。

要指派給警告的嚴重性。這個參數的優先順序高於 Severity Field Name。

如要使用 Severity Field Name 進行動態對應,請將這個欄位留空。

Severity Field Name

選填。

用於擷取警告嚴重性值的欄位名稱。

如果欄位包含數值 (整數或浮點數),連接器會自動將其對應至 Google SecOps 嚴重性等級 (例如 100 為 Critical)。如果欄位包含字串值,您必須在 severity_map_config.json 檔案中定義對應規則。

Alerts Count Limit

選填。

單一週期內可提取的快訊數量上限。

預設值為 100。

Authenticate

選填。

如果選取,連接器會使用提供的憑證驗證連線。

Username

選填。

用於向 OpenSearch 執行個體驗證的使用者名稱。

Password

選填。

用於向 OpenSearch 執行個體驗證的密碼。

Use SSL

選填。

如果選取,連接器會啟用與伺服器的 SSL/TLS 連線。

Proxy Server Address

選填。

連線時要使用的 Proxy 伺服器位址。

Proxy Username

選填。

用於向 Proxy 伺服器驗證的使用者名稱。

Proxy Password

選填。

用於向 Proxy 伺服器驗證的密碼。

Environment Field Name

選填。

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

如果缺少環境欄位,連接器會使用預設值。

預設值為 ""。

Environment Regex Pattern

選填。

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

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

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

預設值為 .*。

標記支援

連接器支援三種不同的欄位對應標記法。舉例來說,如要對應 event.type,您可以提供 _source_event_type、event_type 或 event.type。

這項規定適用於下列參數:

  • Product Field Name
  • Event Field Name
  • Severity Field Name
  • Environment Field Name
  • Timestamp Field
  • Alert Field Name
  • Description Field (僅限 DSL 連接器)

如何在連接器中對應嚴重性

如果 Severity Field Name 包含數值 (整數或浮點數),連接器會按照下列方式對應:

  • 重大:100
  • 高:80 ≤ x < 100
  • 中:60 ≤ x < 80
  • 低:40 ≤ x < 60
  • 資訊式:x < 40

如果是字串值,您必須更新連接器指令碼資料夾中的 severity_map_config.json 檔案。

範例設定

如要對應包含「Malicious」、「Unknown」或「Benign」的 event.severity 欄位,請按照下列步驟操作:

  1. 在「Severity Field Name」參數中輸入 event.severity。
  2. 更新 severity_map_config.json:
{
    "event.severity": {
        "Malicious": 100,
        "Unknown": 60,
        "Benign": -1
    },
    "Default": 50
}

還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求解答。