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"
}
- 從回應中取得「id」和「api_key」參數。
- 使用以半形冒號連結的「id」和「api_key」進行 base64 編碼,例如「id:api_key」。
- 結果會做為整合中的 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 憑證的整合,請完成下列步驟:
- 將 CA 憑證檔案剖析為 Base64 字串。
- 開啟整合設定參數頁面。
- 將字串插入「CA Certificate File」欄位。
- 如要測試整合設定是否成功,請選取「驗證 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 憑證檔案。 |
遠端執行 | 核取方塊 | 已取消勾選 | 否 | 勾選這個欄位,即可遠端執行設定的整合項目。勾選後,系統會顯示選取遠端使用者 (服務專員) 的選項。 |
動作
進階 ES 搜尋
說明
預先建立的 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 |
執行時間
這項操作會對所有實體執行。
動作執行結果
指令碼執行結果
指令碼結果名稱 | 值選項 | 範例 |
---|---|---|
結果 | 不適用 | 不適用 |
DSL 搜尋
說明
搜尋 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 |
簡易 ES 搜尋
說明
動作會搜尋 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 專業人員尋求答案。