ElasticsearchV7

整合版本:17.0

設定 ElasticsearchV7,以便與 Google Security Operations 搭配使用

如何建立 API 權杖

如要建立新的 API 權杖,請提出下列要求:

curl --location --request POST 'http://<server address>:<port>/_security/api_key' \
--header 'Authorization: Basic Base64(username, password)' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "siemplify-integration",
    "role_descriptors": {}
}':

回應範例:

{
  "id": "G1NIWnI",
  "name": "siemplify-integration",
  "api_key": "dSwyjWJ_Ql"
}
  1. 從回應中取得「id」和「api_key」參數。
  2. 使用以半形冒號連結的「id」和「api_key」進行 base64 編碼,例如「id:api_key」。
  3. 結果會做為整合中的 API 權杖。

存取 Elasticsearch

Google SecOps 預設會透過 TCP 通訊埠 9200 上的 RESTful API 存取 Elasticsearch。Google SecOps 伺服器必須能透過 TCP 9200 (預設) 存取相關的 Elasticsearch 節點。如果 Elasticsearch 部署期間未使用預設通訊埠,則須透過其他通訊埠存取。

在 Google SecOps 中設定 ElasticsearchV7 整合

如需在 Google SecOps 中設定整合功能的詳細操作說明,請參閱「設定整合功能」。

使用 CA 憑證設定 Elasticsearch 整合

如有需要,您可以透過 CA 憑證檔案驗證連線。

開始之前,請確認您具備以下項目:

  • CA 憑證檔案
  • 最新版 Elasticsearch 整合功能

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

  1. 將 CA 憑證檔案剖析為 Base64 字串。
  2. 開啟整合設定參數頁面。
  3. 將字串插入「CA Certificate File」欄位。
  4. 如要測試整合設定是否成功,請選取「驗證 SSL」核取方塊,然後按一下「測試」

整合參數

請使用下列參數設定整合:

參數顯示名稱 類型 預設值 為必填項目 說明
執行個體名稱 字串 不適用 您要設定整合的執行個體名稱。
說明 字串 不適用 執行個體的說明。
伺服器位址 字串 x.x.x.x Elasticsearch 7.0.0 伺服器的 IP 位址。
使用者名稱 字串 不適用 使用者電子郵件地址,應做為連線至 Elasticsearch 7.0.0 的用途。
密碼 密碼 不適用 相應使用者的密碼。
API 權杖 密碼 不適用 Elasticsearch XPack API 權杖。
驗證 核取方塊 已取消勾選 不適用
驗證 SSL 核取方塊 已取消勾選 如果 Elasticsearch 7.0.0 連線需要 SSL 驗證 (預設為取消勾選),請勾選這個核取方塊。
CA 憑證檔案 字串 不適用 CA 憑證檔案。
遠端執行 核取方塊 已取消勾選 勾選這個欄位,即可遠端執行設定的整合項目。勾選後,系統會顯示選取遠端使用者 (服務專員) 的選項。

動作

說明

預先建立的 Elasticsearch 測試,會傳回字詞字典。

參數

參數 類型 預設值 說明
索引 字串 *

Elasticsearch 索引的搜尋模式。

在 Elastic 中,索引類似於 DatabaseName,資料會儲存在各種索引中。這個參數會定義要搜尋的索引。可以是確切名稱 (例如「smp_playbooks-2019.06.13」),也可以使用萬用字元依模式搜尋,例如「smp_playbooks-2019.06 」或「smp」。

如要進一步瞭解 Elasticsearch 索引,請前往 https://www.elastic.co/blog/what-is-an-elasticsearch-index

查詢 字串 *

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

IE1:「*」(這是萬用字元,會傳回所有記錄)

IE2:「level:error」

IE3:「level:information」

IE4:「level:error OR level:warning」

如要進一步瞭解 Lucene 語法,請造訪 https://www.elastic.co/guide/en/kibana/current/lucene-query.html#lucene-query\r\nhttps://www.elastic.co/guide/en/elasticsearch/reference/7.1/query-dsl-query-string-query.html#query-string-syntax

限制 字串 100

限制傳回的文件數量,例如:10。

0 = 無限制。

顯示欄位 字串 *

限制傳回的欄位。預設值「*」= 傳回所有欄位。

你可以指定單一欄位,例如「level」。

搜尋欄位 字串 _all

任意文字查詢的搜尋欄位 (查詢未指定欄位名稱時)。

預設值為「_all」,表示系統會搜尋所有欄位。建議在「_all」欄位使用正確的 Lucene 語法,或在特定欄位進行文字搜尋。

Ie1:搜尋欄位 =「_all」。查詢 =「level:error」。查詢會傳回「level」欄位等於「error」的所有記錄。

Ie2:搜尋欄位 =「Message」,查詢 =「Login Alarm」。查詢會傳回所有「Message」欄位包含「Login Alarm」文字的記錄

時間戳記欄位 字串 @timestamp 要依時間篩選的欄位名稱。預設值為 @timestamp。如果「最早日期」和「最舊日期」都留空,系統就不會根據時間篩選。
最早日期 字串 now-1d

搜尋的開始日期。搜尋結果只會傳回等於或晚於這個時間點的記錄。

輸入內容可採用確切的 UTC 格式:

格式:YYYY-MM-DDTHH:MM:SSZ

例如:2019-06-04T10:00:00Z

輸入內容也可以是相對形式 (使用日期算術):tie:「now」、「now-1d」、「now-1d/d」、「now-2h/h」

如要進一步瞭解日期運算,請前往 https://www.elastic.co/guide/en/elasticsearch/reference/7.1/common-options.html#date-math

最早日期 字串 現在

搜尋的結束日期。搜尋結果只會顯示這個時間點之前或等於這個時間點的記錄。

輸入內容可採用確切的 UTC 格式:

格式:YYYY-MM-DDTHH:MM:SSZ

例如:2019-06-04T10:00:00Z

輸入內容也可以是相對形式 (使用日期算術):

例如:「now」、「now-1d」、「now-1d/d」、「now-2h/h」

如要進一步瞭解日期運算,請前往 https://www.elastic.co/guide/en/elasticsearch/reference/7.1/common-options.html#date-math

執行時間

這項操作會對所有實體執行。

動作執行結果

指令碼執行結果
指令碼結果名稱 值選項 範例
結果 不適用 不適用

說明

搜尋 Elasticsearch 中的所有內容,並以字典格式傳回結果。這項動作僅支援不含時間範圍的查詢。如要在查詢中使用時間範圍,請改用「進階 ES 搜尋」動作。

參數

參數 類型 預設值 說明
索引 字串 *

Elasticsearch 索引的搜尋模式。

在 Elasticsearch 中,索引類似於 DatabaseName,資料會儲存在各種索引中。

這項參數會定義要搜尋的索引。可以是確切名稱,例如「smp_playbooks-2019.06.13」,也可以使用 () 萬用字元依模式搜尋,例如「smp_playbooks-2019.06」或「smp*」。

如要進一步瞭解 Elasticsearch 索引,請前往 https://www.elastic.co/blog/what-is-an-elasticsearch-index

查詢 字串 *

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

IE1:\"*\" (這是萬用字元,會傳回所有記錄)

IE2:「level:error」

IE3:「level:information」

IE4:\"level:error OR level:warning\"

如要進一步瞭解 Lucene 語法,請造訪 https://www.elastic.co/guide/en/kibana/current/lucene-query.html#lucene-query\r\nhttps://www.elastic.co/guide/en/elasticsearch/reference/7.1/query-dsl-query-string-query.html#query-string-syntax

限制 字串 100

限制傳回的文件數量,例如:10。

0 = 無限制

執行時間

這項操作會對所有實體執行。

動作執行結果

指令碼執行結果
指令碼結果名稱 值選項 範例
結果 不適用 不適用
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"
    }
]

乒乓

說明

測試:驗證與 Elasticsearch 伺服器的連線。

參數

不適用

執行時間

這項操作會對所有實體執行。

動作執行結果

指令碼執行結果
指令碼結果名稱 值選項 範例
is_success True/False is_success:False

說明

動作會搜尋 Elasticsearch 中的所有內容,並以字典格式傳回結果。

參數

參數 類型 預設值 說明
索引 字串 *

Elasticsearch 索引的搜尋模式。

在 Elasticsearch 中,索引類似於 DatabaseName,資料會儲存在各種索引中。

這項參數會定義要搜尋的索引。可以是確切名稱 (例如「smp_playbooks-2019.06.13」),也可以使用 () 萬用字元依模式搜尋,例如「smp_playbooks-2019.06」或「smp*」。

如要進一步瞭解 Elasticsearch 索引,請前往 https://www.elastic.co/blog/what-is-an-elasticsearch-index

查詢 字串 *

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

IE1:\"*\" (這是萬用字元,會傳回所有記錄)

IE2:「level:error」

IE3:「level:information」

IE4:\"level:error OR level:warning\"

如要進一步瞭解 Lucene 語法,請造訪 https://www.elastic.co/guide/en/kibana/current/lucene-query.html#lucene-query\r\nhttps://www.elastic.co/guide/en/elasticsearch/reference/7.1/query-dsl-query-string-query.html#query-string-syntax

限制 字串 100

限制傳回的文件數量,例如:10。

0 = 無限制。

執行時間

這項操作會對所有實體執行。

動作執行結果

指令碼執行結果
指令碼結果名稱 值選項 範例
結果 不適用 不適用
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"
  }
 ]

連接器

在 Google SecOps 中設定 Elasticsearch 第 7 版連接器

如需在 Google SecOps 中設定連接器的詳細操作說明,請參閱設定連接器

如要設定所選的連接器,請使用下列表格列出的連接器專屬參數:

Elasticsearch 連接器

說明

本主題說明 Google SecOps 如何整合 Elasticsearch,以及擷取和處理資料的機制和設定。

將 Elasticsearch 快訊轉送至 Google SecOps

Google SecOps 會使用提供的查詢 (使用 Lucene 查詢語法) 搜尋指定的 Elasticsearch 索引,並傳回 Elasticsearch 文件,這些文件會翻譯並脈絡化為案件的「快訊」。

連接器參數

請使用下列參數設定連接器:

參數顯示名稱 類型 預設值 為必填項目 說明
預設環境 字串 不適用 選取所需環境。例如「Customer One」。
執行頻率 整數 0:0:0:10 選取連線的執行時間長度。例如「每天」。
產品欄位名稱 字串 device_product 用來判斷裝置產品的欄位名稱。例如:_type。
事件欄位名稱 字串 名稱 用於判斷事件名稱 (子類型) 的欄位名稱。例如:_source_match_event_id。
指令碼逾時 (秒) 字串 60 執行目前指令碼的 Python 程序逾時限制 (以秒為單位)。
伺服器位址 字串 不適用 Elasticsearch 伺服器位址,即:http://{ip_address}:{port}
使用者名稱 字串 不適用 Elasticsearch 使用者名稱。
密碼 密碼 不適用 Elasticsearch 密碼。
驗證 核取方塊 已取消勾選 是否要在連線時進行驗證。
API 權杖 密碼 不適用 Elasticsearch XPack API 權杖。
驗證 SSL 核取方塊 已取消勾選 是否要在連線上使用 SSL。
快訊名稱欄位 字串 不適用 快訊名稱所在欄位的名稱 (平面欄位路徑)。範例:_source_alert_info_alert
時間戳記欄位 字串 不適用 時間戳記所在的欄位名稱 (平面欄位路徑)。範例:source@timestamp
環境欄位 字串 不適用 環境所在的欄位名稱 (平面欄位路徑)。範例:_source_environment
索引 字串 不適用 要搜尋的索引模式。例如:「*」
查詢 字串 不適用 搜尋模式查詢 (Lucene 查詢語法)。例如:「*」
快訊數量上限 整數 20 單一週期內可擷取的警告數量上限。範例:20。
最多可回溯的天數 整數 1 自此日期起擷取快訊的天數上限。示例:3.
嚴重性欄位對應 字串 不適用 儲存嚴重程度值的欄位名稱。
Proxy 伺服器位址 字串 不適用 要使用的 Proxy 伺服器位址。
Proxy 使用者名稱 字串 不適用 用於驗證的 Proxy 使用者名稱。
Proxy 密碼 密碼 不適用 用於驗證的 Proxy 密碼。
嚴重性欄位名稱 字串 不適用 如要根據字串值對應嚴重程度,則必須建立對應檔案。詳情請參閱說明文件入口網站。
環境規則運算式模式 字串 .*

要對「環境欄位名稱」欄位中的值執行的 regex 模式。

預設值為 .*,可擷取所有內容並傳回未變更的值。

用於允許使用者透過規則運算式邏輯操作環境欄位

如果 regex 模式為空值或空白,或環境值為空值,則最終環境結果為「」。

如何在連接器中對應嚴重程度

如要對應嚴重程度,您必須在「嚴重程度欄位名稱」參數中,指定要用來取得嚴重程度值的欄位。您可以在回應中取得 3 種值:整數、浮點數和字串。如果是整數和浮點數,則不需要進行任何其他設定。連接器會讀取這些值,並根據 Google SecOps 標準對應這些值。快速回顧整數值的對應方式:

  • 100 - 重大
  • 100 > x >= 80 (高)
  • 80 > x >=60 中
  • 60 > x >=40 低
  • 40 > x 資訊

如果回應中包含字串,則需要額外設定。在連接器指令碼所在的資料夾中,您會看到名為 severity_map_config.json 的設定檔。這個檔案會定義嚴重程度的對應規則。

檔案一開始會如下所示:

{
    "Default": 50
}

假設所需值位於 event.severity 中。event.severity 可能包含下列值:「惡意」、「良性」、「不明」。

首先,我們必須在「嚴重程度欄位名稱」參數中指定要使用 event.severity

其次,我們必須更新設定檔。

變更後,severity_map_config.json 檔案應如下所示:

{
    "event.severity": {
        "Malicious": 100,
        "Unknown": 60,
        "Benign": -1
    },
    "Default": 50
}

現在,當連接器收到 event.severity =「惡意」的事件時,就會將其嚴重程度設為「重大」。

連接器規則

許可清單/黑名單

連接器不支援許可清單/黑名單。

Proxy 支援

連接器支援 Proxy。

Elasticsearch DSL 連接器

說明

連接器會透過 DSL 查詢發出 REST API 呼叫。

用途和範例

可將 DSL 查詢做為 Elasticsearch 的搜尋參數。

連接器參數

請使用下列參數設定連接器:

參數顯示名稱 類型 預設值 為必填項目 說明
預設環境 字串 不適用 選取所需環境。例如「Customer One」。
執行頻率 整數 0:0:0:10 選取連線的執行時間長度。例如「每天」。
產品欄位名稱 字串 device_product 說明儲存產品名稱的欄位名稱。
環境欄位名稱 字串 ""

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

如果找不到環境欄位,環境會是「」。

環境規則運算式模式 字串 .*

要對「環境欄位名稱」欄位中的值執行的 regex 模式。

預設值為 .*,可擷取所有內容並傳回未變更的值。

用於允許使用者透過規則運算式邏輯操作環境欄位

如果 regex 模式為空值或空白,或環境值為空值,則最終環境結果為「」。

指令碼逾時 (秒) 整數 60 執行目前指令碼的 Python 程序逾時限制。
伺服器位址 字串 不適用 Elasticsearch API 伺服器的 IP 位址。
通訊埠 字串 不適用 Elasticsearch API 伺服器的通訊埠。
查詢 字串 不適用

用於搜尋的 DSL 查詢。

必須採用有效的 JSON 格式。

為提高連接器的穩定性,建議您以遞增順序新增排序時間戳記鍵。

索引 字串 不適用

用於搜尋的索引。

例如:_all

時間戳記欄位 字串 不適用

時間戳記所在的欄位名稱。
範例:

source@timestamp

快訊欄位名稱 字串 不適用

快訊名稱所在欄位的名稱。
範例:

_source_info_alertname

說明欄位 字串 不適用

說明所在的欄位名稱。
範例:

_source_alert_info_description

嚴重性 字串

快訊的嚴重程度。
可能的值:

資訊

重大

快訊數量上限 整數 100 限制連接器在每次疊代中傳回的快訊數量。
驗證 核取方塊 已取消勾選 是否要驗證連線。
使用者名稱 字串 不適用 Elasticsearch 帳戶的使用者名稱。
密碼 密碼 不適用 Elasticsearch 帳戶密碼。
使用 SSL 核取方塊 已取消勾選 可選擇啟用 SSL/TLS 連線。
嚴重性欄位名稱 字串 不適用 如要根據字串值對應嚴重程度,則必須建立對應檔案。詳情請參閱說明文件入口網站。
警告嚴重程度 字串 不適用

快訊的嚴重程度。

可能的值:資訊、低、中、高、重大。

注意:這個參數的優先順序高於「嚴重程度欄位名稱」。如要使用「嚴重程度欄位名稱」,請將這個欄位留空。

Proxy 伺服器位址 字串 不適用 要使用的 Proxy 伺服器位址。
Proxy 使用者名稱 字串 不適用 用於驗證的 Proxy 使用者名稱。
Proxy 密碼 密碼 不適用 用於驗證的 Proxy 密碼。

支援的標記

連接器支援三種標記法。舉例來說,您想在「事件欄位名稱」參數中使用 event.type。在這種情況下,您可以提供 _source_event_type、event_type 或 event.type。這些值都會以相同方式運作。

參數:

  • 產品欄位名稱
  • 事件欄位名稱
  • 嚴重性欄位名稱
  • 環境欄位
  • 時間戳記欄位
  • 快訊名稱欄位
  • 「Alert Description」欄位 - 僅適用於 DSL 連接器

如何在連接器中對應嚴重程度

如要對應嚴重程度,您必須在「嚴重程度欄位名稱」參數中,指定要用來取得嚴重程度值的欄位。您可以在回應中取得 3 種值:整數、浮點數和字串。如果是整數和浮點數,則不需要進行任何其他設定。連接器會讀取這些值,並根據 Google SecOps 標準對應這些值。快速回顧整數值的對應方式:

  • 100 - 重大
  • 100 > x >= 80 (高)
  • 80 > x >=60 中
  • 60 > x >=40 低
  • 40 > x 資訊

如果回應中包含字串,則需要額外設定。在連接器指令碼所在的資料夾中,您會看到名為 severity_map_config.json 的設定檔。這個檔案會定義嚴重程度的對應規則。

檔案一開始會如下所示:

{
    "Default": 50
}

假設所需值位於 event.severity 中。event.severity 可能包含下列值:「惡意」、「良性」、「不明」。

首先,我們必須在「嚴重程度欄位名稱」參數中指定要使用 event.severity

其次,我們必須更新設定檔。

變更後,severity_map_config.json 檔案應如下所示:

{
    "event.severity": {
        "Malicious": 100,
        "Unknown": 60,
        "Benign": -1
    },
    "Default": 50
}

現在,當連接器收到 event.severity =「惡意」的事件時,就會將其嚴重程度設為「重大」。

連接器規則

許可清單/黑名單

連接器不支援許可清單/黑名單。

Proxy 支援

連接器支援 Proxy。

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