將 OpenSearch 與 Google SecOps 整合

整合版本:1.0

本文說明如何將 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 Certificate File」(CA 憑證檔案) 欄位。
  3. 選取「驗證 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」(進階 ES 搜尋) 動作需要下列參數:

參數 說明
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 DateOldest Date 皆為空白,動作就不會執行時間篩選。

預設值為 @timestamp

Oldest Date

選填。

搜尋的開始日期。這項動作會傳回發生時間等於或晚於這個時間戳記的記錄。

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

預設值為 now-1d

Earliest Date

選填。

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

您可以提供確切的 UTC 時間戳記 (YYYY-MM-DDTHH:MM:SSZ),或相對日期算式 (例如 now)。

預設值為 now

動作輸出內容

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

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

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

指令碼結果名稱
results RESULTS

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

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

動作輸入內容

DSL Search 動作需要下列參數:

參數 說明
Index

選填。

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

預設值為 *

Query

選填。

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

預設值為 *

Limit

選填。

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

預設值為 100

動作輸出內容

DSL 搜尋動作會提供下列輸出內容:

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

以下範例顯示使用 DSL 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"
    }
]
指令碼結果

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

指令碼結果名稱
results RESULTS

乒乓

使用「Ping」動作測試與 OpenSearch 的連線。

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

動作輸入內容

動作輸出內容

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

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

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

指令碼結果名稱
is_success truefalse

使用「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 嚴重程度 (例如 100Critical)。如果欄位包含字串值,您必須在 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 連接器,透過 Domain Specific Language (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 SeveritySeverity Field Name 為空,系統就會使用這個參數。

預設值為 Medium

Alert Severity

選填。

要指派給快訊的嚴重程度。這個參數的優先順序高於 Severity Field Name

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

Severity Field Name

選填。

用於擷取快訊嚴重程度值的欄位名稱。

如果欄位包含數值 (整數或浮點數),連接器會自動將這些值對應至 Google SecOps 嚴重程度 (例如 100Critical)。如果欄位包含字串值,您必須在 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_typeevent_typeevent.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 檔案。

範例設定

如要對應含有「惡意」、「不明」或「良性」的 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 專業人員尋求答案。