使用 Gemini 建立自訂剖析器和剖析器擴充功能
本指南可協助資安分析師和偵測工程師,在 Google Security Operations 中使用 AI 剖析功能,從頭建構自訂剖析器,或建立剖析器擴充功能,強化現有剖析器。您可以使用自然語言提示和供應商說明文件,將原始記錄對應至統合式資料模型 (UDM),不必編寫複雜的剖析器語法或規則運算式。
選擇 AI 自訂剖析器或 AI 剖析器擴充功能
下表比較 AI 剖析中的「使用 AI 建立剖析器」和「使用 AI 編寫擴充功能」:
| 功能層面 | 使用 AI 建立剖析器 | 使用 AI 編寫擴充功能 |
|---|---|---|
| 輸出內容 | 完整、獨立的自訂剖析器 | 在現有剖析器上疊加擴充功能 |
| 主要應用實例 | 新的或不支援的記錄來源,或完整剖析器重寫 | 在運作中的剖析器上新增或修正特定欄位 |
| 輸入 | 記錄類型、擷取的原始記錄,以及選用的說明文件連結 | 記錄類型、原始記錄範例,以及說明要對應欄位的提示 |
重要術語
- AI 剖析:Google SecOps 的 AI 輔助剖析功能,包括 AI 自訂剖析器生成 (使用 AI 建立剖析器) 和 AI 剖析器擴充功能 (使用 AI 編寫擴充功能)。
- 統合資料模型 (UDM):Google SecOps 用於儲存及分析記錄資料的標準資料結構。
事前準備
使用 AI 剖析功能前,請確認符合下列必要條件:
- 確認 Google SecOps 執行個體已啟用 AI 剖析功能。如果沒有看到「使用 AI 建立剖析器」或「使用 AI 編寫擴充功能」選項,請與 Google SecOps 代表聯絡。
- 如果是 AI 剖析器擴充功能,請確認目標記錄類型已有預建或自訂剖析器,並準備原始記錄範例來測試擷取作業。
- 如要生成 AI 自訂剖析器,請先擷取記錄來源的代表性樣本。剖析器代理會根據您已擷取的所選類型記錄進行學習。如果找不到該記錄類型的記錄,就無法開始生成。啟動失敗不會計入配額。
- 如要生成 AI 自訂剖析器,請準備一到五個可公開存取的連結,指向供應商的記錄格式參考資料,例如欄位字典、事件結構定義或記錄範例頁面 (建議)。完整的文件是影響剖析器品質的最重要因素。
使用 AI 建立自訂剖析器
「使用 AI 建立剖析器」功能可從頭開始,為記錄來源建構完整的自訂剖析器。您需要選取記錄類型,並視需要提供供應商記錄說明文件的連結。剖析器代理會對擷取的記錄進行取樣、研究記錄結構定義、規劃原始欄位與 UDM 的對應關係,並以 JavaScript 編寫剖析器程式碼。接著,您會查看結果,並使用參照原始欄位名稱和 UDM 欄位的英文指令來調整結果。輸出內容準備就緒後,請提交剖析器,就像提交其他自訂剖析器一樣。
使用 AI 生成自訂剖析器,即可執行下列操作:
- 記錄來源沒有預建剖析器,或預建剖析器不符合記錄格式。
- 生成完整的剖析器,涵蓋擷取資料中找到的每種記錄格式,而非僅限單一樣本。
- 透過後續提示詞調整生成的剖析器,不必自行編寫剖析器程式碼。
啟動 AI 生成的自訂剖析器
- 在 Google SecOps 中,依序前往 「SIEM Settings」(SIEM 設定) >「Parsers」(剖析器)。
- 按一下「Add New Parser」(新增剖析器)。
- 在「Create New Custom Parser」(建立新的自訂剖析器) 對話方塊中,選取要剖析的「Log Source」(記錄來源) (例如
GCP DNS)。 - 在「您要如何建立剖析器?」下方,選取「使用 AI 建立剖析器」。
- 點選「建立」。
新增產品說明文件並開始生成
- 選用:在「剖析器代理」窗格的「新增產品連結」欄位中,貼上供應商記錄文件的連結,然後點選「新增」。最多可新增五個連結。「說明文件」計數器會顯示您新增的連結數量。
- 按一下「Generate Parser」。
說明文件連結規範
如要提高生成剖析器的欄位涵蓋率,請按照下列規範選取文件連結:
- 請務必提供公開連結,如果連結為私人或無法存取,剖析器代理會忽略連結,改為搜尋網路,不會導致生成失敗。
- 連結至說明記錄欄位和事件類型的頁面,例如記錄架構、欄位字典或事件參考資料。避免使用行銷網頁或產品總覽。
- 選取與您擷取的記錄格式相符的頁面。舉例來說,如果您擷取 JSON 稽核記錄,請連結至 JSON 稽核記錄參考資料,而非 syslog 參考資料。
- 如果廠商在不同頁面記錄不同的事件類別 (例如 DNS 查詢、防火牆事件和管理員活動),請為每個事件類別新增連結。
追蹤生成進度
自訂剖析器開始生成後,狀態會變更為「GENERATING IN PROGRESS」。生成程序包含下列階段:
| 階段 | 代理動作 | 輸出內容已傳遞至下一個階段 |
|---|---|---|
| 擷取原始記錄 | 代理會依記錄類型,對擷取的記錄進行取樣。這項功能會將記錄分群,選出一組涵蓋各種記錄格式和事件型態的範例記錄。 | 代表性範例記錄 |
| 研究說明文件 | 代理會讀取您提供的說明文件連結,如果未提供連結,則會搜尋網路。並結合範例記錄,建立記錄結構定義和欄位字典。 | 記錄結構定義和欄位字典 |
| 建立對應計畫 | 代理會識別記錄中的每個事件類型,並規劃如何將每個原始記錄欄位對應至相應的 UDM 欄位。 | 各事件類型的原始欄位與 UDM 欄位對應計畫 |
| 生成剖析器程式碼 | 代理會將對應計畫轉換為 JavaScript 剖析器程式碼。系統會根據範例記錄測試程式碼,並解決錯誤,直到剖析器順利執行。 | 可供審查的剖析器 |
如果因找不到所選記錄類型的記錄,導致剖析器生成失敗,請先擷取該記錄類型的原始記錄,再重新開始生成。如果是其他生成失敗情形,則無法手動分類。觸發新的生成工作階段。如果問題持續發生,請聯絡支援團隊,提交客服案件。
查看及調整自訂剖析器
自訂剖析器生成完畢後,狀態會變更為「AI 生成」,頁面會顯示下列窗格:
- 剖析器代理:顯示「使用 AI 修正剖析器」提示詞欄位,您可以在其中輸入後續指示。
- 剖析器程式碼:顯示生成的 JavaScript 剖析器程式碼,供您查看。提交前,生成的程式碼為唯讀狀態。如要修改邏輯,請在「Refine Parser with AI」(使用 AI 調整剖析器) 欄位中輸入提示。
- 原始記錄:顯示記錄類型的原始記錄範例。您可以點選「編輯」圖示 ,貼上自己的記錄行,或點選「重新整理」圖示 ,載入其他範例。
- 顯示 UDM 輸出內容:根據原始記錄執行目前的剖析器程式碼,並顯示產生的 UDM 事件,以便驗證各項對應。
查看生成的輸出內容
啟用剖析器前,請先檢查範例記錄中生成的對應關係:
- 載入多個原始記錄,包括要剖析的每個事件類型,然後按一下各個記錄的「Show UDM Output」(顯示 UDM 輸出內容)。
- 確認剖析器將原始記錄欄位對應至適當的 UDM 欄位,並準確填入值 (例如事件中繼資料、
principal和target等實體欄位,以及安全性結果欄位)。 - 檢查是否有任何重要的原始欄位尚未對應。
使用 AI 修正自訂剖析器
如果對應錯誤或遺漏,請在「使用 AI 調整剖析器」欄位中輸入指令,然後按一下「確認」。剖析器代理程式會更新現有剖析器,而非重新開始,並保留所有未提及的對應關係。每次調整都會建立新的剖析器程式碼版本,供您查看。
請按照下列指南,撰寫有效的修正提示:
- 請同時提供原始來源欄位 (或記錄中的範例值),以及確切的目標 UDM 欄位路徑。
- 將相關變更歸為一組,避免在單一長提示中混入不相關的修正。
- 請使用單引號括住原始記錄中的確切字串,例如
'NXDOMAIN'或'allow'。 - 如果對應關係取決於欄位值,請使用
if ... then ... otherwise ...結構明確陳述條件式對應關係。 - 指示代理將沒有相符 UDM 欄位的供應商專屬屬性,對應至具有明確鍵名稱的
additional.fields。
下表提供 GCP DNS 記錄的修正提示範例:
| 目標 | 提示詞範例 |
|---|---|
| 修正不正確的對應 | "Map jsonPayload.sourceIP to principal.ip instead of target.ip." |
| 新增遺漏的欄位 | "Map jsonPayload.vmInstanceName to principal.hostname." |
| 對應巢狀或重複的值 | "Map jsonPayload.queryName to network.dns.questions.name and jsonPayload.queryType to network.dns.questions.type." |
| 套用條件式邏輯 | "If jsonPayload.responseCode is 'NXDOMAIN', set security_result.summary to 'Domain does not exist'. Otherwise, leave it empty." |
| 設定事件類型 | "Set metadata.event_type to NETWORK_DNS for all DNS query logs." |
| 對應供應商專屬欄位 | "Map jsonPayload.alias_query_response_code to additional.fields with key 'alias_query_response_code'." |
| 移除對應關係 | "Stop mapping jsonPayload.protocol to network.application_protocol." |
提交並啟用自訂剖析器
確認 UDM 輸出內容正確無誤後,按一下「提交」,即可儲存並啟用生成的自訂剖析器。
如要捨棄剖析器草稿,請按一下「捨棄」。如要移除已儲存的 AI 生成自訂剖析器,請開啟剖析器,然後點選「刪除自訂剖析器」下方的「刪除」。
疑難排解 AI 自訂剖析器生成問題
下表列出使用 AI 生成自訂剖析器時可能遇到的常見問題,以及解決方法:
| 問題或症狀 | 解析度 |
|---|---|
| 您沒有看到「Create Parser with AI」(使用 AI 建立剖析器) 選項。 | 執行個體未啟用這項功能。請與 Google SecOps 代表聯絡。 |
| 找不到該記錄類型的記錄,因此無法生成。 | 剖析器代理需要所選記錄類型的原始記錄。請先擷取該記錄類型的原始記錄,再重新開始生成。 |
| 因其他原因而無法生成。 | 生成失敗時,無法手動分類。再次觸發生成作業。如果問題持續發生,請聯絡支援團隊,提交客服案件。 |
| 生成作業需要較長時間才能完成。 | 生成作業通常需要 30 到 90 分鐘。如果記錄來源複雜,包含許多不同格式或大型結構定義,則需要較長時間。您可以關閉頁面,稍後再返回 「SIEM 設定」 > 「剖析器」。 |
| 許多欄位仍未對應。 | 新增說明記錄欄位的文件連結,並開始新的工作階段,或使用修正提示對應缺少的欄位。 |
| 修正提示變更了不相關的對應關係。 | 在後續提示中說明修正內容 (例如 "Revert the change to principal.ip and map jsonPayload.sourceIP to it again.")。或者,提交並啟用剖析器,手動編輯程式碼。 |
| 「Show UDM Output」(顯示 UDM 輸出內容) 中有部分記錄無法剖析。 | 將失敗的記錄貼到「原始記錄」窗格,然後傳送修正提示,引用記錄中未剖析的部分。 |
使用 AI 建立剖析器擴充功能
Google SecOps 的預設記錄剖析器剖析記錄來源時,可能會省略客戶專屬的自訂屬性、選項欄位或特殊遙測資料。使用 AI 剖析器擴充功能 (使用 AI 編寫擴充功能),即可執行下列操作:
- 從原始記錄擷取其他欄位,並對應至標準 UDM 欄位或自訂
additional.fields。 - 套用條件邏輯和值轉換,例如將字串動作對應至 UDM 列舉類型。
- 在多輪對話中,以互動方式調整生成的擴充功能,不必從頭開始。
撰寫提示的最佳做法
如要取得準確的剖析器擴充功能,請遵循下列提示指南:
- 清楚說明要擷取原始記錄的哪個部分,以及要填入的確切 UDM 欄位路徑 (例如
principal.ip、target.user.email_addresses或security_result.action)。 - 在非結構化記錄中,請將文字字串、分隔符或範例值括在單引號內,例如
'198.51.100.0'或'allow'。 - 指示 AI 將沒有專屬 UDM 欄位的專屬或供應商專屬屬性,對應至
additional.fields,並提供明確的鍵名稱 (例如additional.fields["application"])。
生成剖析器擴充功能
您可以從 Google SecOps 的下列任一位置,啟動剖析器擴充功能工作流程:
- 依序前往「SIEM 設定」 > 「剖析器」,選取並擴充任何現有的記錄剖析器。
- 在「搜尋」頁面調查記錄時,直接從含有未剖析欄位的事件開啟擴充功能建立流程。
如要從「Parsers」(剖析器) 頁面產生剖析器擴充功能,請按照下列步驟操作:
- 在 Google SecOps 中,依序前往 「SIEM Settings」(SIEM 設定) >「Parsers」(剖析器)。
- 在「剖析器」表格中,搜尋要擴充的記錄類型。
- 在剖析器資料列中,按一下「 選單」,然後依序選取「擴充剖析器」>「建立擴充功能」。
- 在「Raw Log」(原始記錄) 窗格中,驗證原始記錄範例,或按一下「編輯」圖示 ,貼上要剖析的記錄範例。
- 在「擴充功能」窗格的「擴充功能方法」下方,選取「使用 AI 編寫擴充功能」。
- 在提示詞欄位中,以英文簡單說明要擷取的欄位。
按一下「確認」。
系統會生成擴充功能程式碼,並更新「UDM Output」(UDM 輸出內容) 窗格。
修正剖析器擴充功能
您可以透過多輪對話,逐步建構及調整剖析器擴充功能。提交後續提示時,AI 會根據先前生成的擴充功能套用新指示。除非您明確要求覆寫或移除,否則系統會自動保留先前對話中的現有對應和條件邏輯。
- 在提示詞欄位輸入後續指令,調整生成的程式碼。
- 按一下「確認」。
- 每次輸入提示後,請預覽生成的擴充功能程式碼、檢查 UDM 輸出內容範例,並確認或調整邏輯。
以下範例工作流程說明如何透過反覆修正,在多個回合中建構剖析器擴充功能:
- 第 1 輪 (初始擷取):
- 使用者提示詞:
"Extract source IP '198.51.100.0' to principal.ip and destination IP '198.51.100.1' to target.ip." - 結果:AI 會生成對應
principal.ip和target.ip的擴充功能。
- 使用者提示詞:
- 第 2 輪 (加法對應):
- 使用者提示詞:
"Also map virtual system string 'vsys1' to observer.administrative_domain." - 結果:AI 更新擴充功能,將
observer.administrative_domain納入對應,同時保留第 1 輪的 IP 對應。
- 使用者提示詞:
- 第 3 輪 (有條件修正):
- 使用者提示詞:
"In addition, map action string 'allow' to security_result[0].action as ALLOW." - 結果:AI 會在先前所有擷取內容的基礎上,加入條件式動作列舉對應。
- 使用者提示詞:
驗證剖析器擴充功能
- 點選「Validate」(驗證)。
- 程序完成後,請查看驗證指標。
存取參考資訊
請參考下列範例,為剖析器擴充功能撰寫準確的提示。
結構化記錄提示
如果是結構化記錄,資料會整理成具名索引鍵、屬性或 XML 標記,請在提示中指定欄位名稱或路徑。
結構化記錄範例 - JSON 格式
{
"insertId": "u0mlpdesys",
"logName": "projects/sample-project-id/logs/cloudaudit.googleapis.com%2Fdata_access",
"protoPayload": {
"authenticationInfo": {
"principalEmail": "analyst@example-domain.com"
},
"methodName": "GenerateAccessToken",
"requestMetadata": {
"callerIp": "203.0.113.195",
"callerSuppliedUserAgent": "google-cloud-sdk gcloud/392.0.0"
},
"resourceName": "projects/-/serviceAccounts/110649196922301550006",
"serviceName": "iamcredentials.googleapis.com"
}
}
結構化記錄的提示範例
| 提示詞 | 來源欄位或索引鍵 | 目標 UDM 欄位 |
|---|---|---|
"Map principalEmail to principal.user.email_addresses." |
principalEmail |
principal.user.email_addresses |
"Extract callerIp to principal.ip and methodName to metadata.product_event_type." |
callerIp、methodName |
principal.ip、metadata.product_event_type |
"Map resourceName to target.resource.name and serviceName to target.application." |
resourceName、serviceName |
target.resource.name、target.application |
"From XML tags, map /Event/System/Hostname to principal.hostname." |
/Event/System/Hostname |
principal.hostname |
非結構化記錄提示
如果是非結構化記錄,請直接從範例記錄、位置參照或描述性標籤指定常值。
非結構化系統記錄訊息範例
<14>Nov 9 18:52:45 198.51.100.1 1,2021/11/09 18:52:45,007051000184334,TRAFFIC,start,2561,2021/11/09 18:52:45,198.51.100.0,198.51.100.1,0.0.0.0,0.0.0.0,any allow,,,ping,vsys1,LAN,LAN,ethernet1/2,ethernet1/2,LFPpan,2021/11/09 18:52:45,9729,6,0,0,2048,0,0x100000,icmp,allow,444,444,0,6
非結構化記錄的提示範例
| 提示詞 | 常值或說明範例 | 目標 UDM 欄位 |
|---|---|---|
"Extract source IP '198.51.100.0' to principal.ip and destination IP '198.51.100.1' to target.ip." |
'198.51.100.0'、'198.51.100.1' |
principal.ip、target.ip |
"Extract the application string 'ping' from the log and map it to additional.fields['application']." |
'ping' |
additional.fields["application"] |
"Map rule name 'any allow' to security_result.rule_id." |
'any allow' |
security_result[0].rule_id |
"Extract sent bytes and received bytes into network.sent_bytes and network.received_bytes." |
記錄中的數值位元組計數器 | network.sent_bytes、network.received_bytes |
條件式邏輯提示
說明條件邏輯,將原始記錄值正規化為特定 UDM 列舉。
- 列舉正規化:
"If the firewall action in the log is 'allow', set security_result.action to ALLOW; otherwise set security_result.action to BLOCK." - 條件式欄位對應:
"If the protocol is 'icmp', map the ICMP type and code into network.icmp.type and network.icmp.code." - 狀態對應:
"When the log status contains 'success' or '0', set security_result.severity to INFO; if it contains 'error', set it to ERROR."
用量限制
為維持最佳效能和資源可用性,AI 剖析功能會強制執行下列預設用量配額:
- 在 24 小時內,每個執行個體最多可啟動 10 個 AI 自訂剖析器生成或 AI 剖析器擴充功能工作階段。如果是自訂剖析器,每次點選「產生剖析器」建立新剖析器,就會啟動一個工作階段。
- 每個工作階段都設有下列互動限制:
- 生成 AI 自訂剖析器時,每個工作階段最多支援 6 個回合,包括初始生成和最多 5 個修正提示。
- AI 剖析器擴充功能的工作階段最多支援 5 則訊息,包括初始提示和後續修正。
如果對話達到回合或訊息上限,你可以提交或儲存目前的工作,或開始新的工作階段 (受每日工作階段配額限制)。如果是自訂剖析器,提交並啟用後,您可以像其他自訂剖析器一樣,手動編輯程式碼。
後續步驟
- 如要進一步瞭解如何建立及管理自訂剖析器,請參閱「設定自訂剖析器」。
- 如要進一步瞭解其他剖析器擴充功能方法,請參閱「開發剖析器擴充功能」。
- 如需擴充功能程式碼片段和情境範例,請參閱「剖析器擴充功能範例」。
- 如要概略瞭解原始記錄如何剖析為 UDM,請參閱「記錄剖析總覽」。
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求解答。