使用 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 生成的自訂剖析器

  1. 在 Google SecOps 中,依序前往 「SIEM Settings」(SIEM 設定) >「Parsers」(剖析器)。
  2. 按一下「Add New Parser」(新增剖析器)。
  3. 在「Create New Custom Parser」(建立新的自訂剖析器) 對話方塊中,選取要剖析的「Log Source」(記錄來源) (例如 GCP DNS)。
  4. 在「您要如何建立剖析器?」下方,選取「使用 AI 建立剖析器」。
  5. 點選「建立」。

新增產品說明文件並開始生成

  1. 選用:在「剖析器代理」窗格的「新增產品連結」欄位中,貼上供應商記錄文件的連結,然後點選「新增」。最多可新增五個連結。「說明文件」計數器會顯示您新增的連結數量。
  2. 按一下「Generate Parser」。

如要提高生成剖析器的欄位涵蓋率,請按照下列規範選取文件連結:

  • 請務必提供公開連結,如果連結為私人或無法存取,剖析器代理會忽略連結,改為搜尋網路,不會導致生成失敗。
  • 連結至說明記錄欄位和事件類型的頁面,例如記錄架構、欄位字典或事件參考資料。避免使用行銷網頁或產品總覽。
  • 選取與您擷取的記錄格式相符的頁面。舉例來說,如果您擷取 JSON 稽核記錄,請連結至 JSON 稽核記錄參考資料,而非 syslog 參考資料。
  • 如果廠商在不同頁面記錄不同的事件類別 (例如 DNS 查詢、防火牆事件和管理員活動),請為每個事件類別新增連結。

追蹤生成進度

自訂剖析器開始生成後,狀態會變更為「GENERATING IN PROGRESS」。生成程序包含下列階段:

階段 代理動作 輸出內容已傳遞至下一個階段
擷取原始記錄 代理會依記錄類型,對擷取的記錄進行取樣。這項功能會將記錄分群,選出一組涵蓋各種記錄格式和事件型態的範例記錄。 代表性範例記錄
研究說明文件 代理會讀取您提供的說明文件連結,如果未提供連結,則會搜尋網路。並結合範例記錄,建立記錄結構定義和欄位字典。 記錄結構定義和欄位字典
建立對應計畫 代理會識別記錄中的每個事件類型,並規劃如何將每個原始記錄欄位對應至相應的 UDM 欄位。 各事件類型的原始欄位與 UDM 欄位對應計畫
生成剖析器程式碼 代理會將對應計畫轉換為 JavaScript 剖析器程式碼。系統會根據範例記錄測試程式碼,並解決錯誤,直到剖析器順利執行。 可供審查的剖析器

如果因找不到所選記錄類型的記錄,導致剖析器生成失敗,請先擷取該記錄類型的原始記錄,再重新開始生成。如果是其他生成失敗情形,則無法手動分類。觸發新的生成工作階段。如果問題持續發生,請聯絡支援團隊,提交客服案件。

查看及調整自訂剖析器

自訂剖析器生成完畢後,狀態會變更為「AI 生成」,頁面會顯示下列窗格:

  • 剖析器代理:顯示「使用 AI 修正剖析器」提示詞欄位,您可以在其中輸入後續指示。
  • 剖析器程式碼:顯示生成的 JavaScript 剖析器程式碼,供您查看。提交前,生成的程式碼為唯讀狀態。如要修改邏輯,請在「Refine Parser with AI」(使用 AI 調整剖析器) 欄位中輸入提示。
  • 原始記錄:顯示記錄類型的原始記錄範例。您可以點選「編輯」圖示 ,貼上自己的記錄行,或點選「重新整理」圖示 ,載入其他範例。
  • 顯示 UDM 輸出內容:根據原始記錄執行目前的剖析器程式碼,並顯示產生的 UDM 事件,以便驗證各項對應。

查看生成的輸出內容

啟用剖析器前,請先檢查範例記錄中生成的對應關係:

  1. 載入多個原始記錄,包括要剖析的每個事件類型,然後按一下各個記錄的「Show UDM Output」(顯示 UDM 輸出內容)。
  2. 確認剖析器將原始記錄欄位對應至適當的 UDM 欄位,並準確填入值 (例如事件中繼資料、principal 和 target 等實體欄位,以及安全性結果欄位)。
  3. 檢查是否有任何重要的原始欄位尚未對應。

使用 AI 修正自訂剖析器

如果對應錯誤或遺漏,請在「使用 AI 調整剖析器」欄位中輸入指令,然後按一下「確認」。剖析器代理程式會更新現有剖析器,而非重新開始,並保留所有未提及的對應關係。每次調整都會建立新的剖析器程式碼版本,供您查看。

請按照下列指南,撰寫有效的修正提示:

  1. 請同時提供原始來源欄位 (或記錄中的範例值),以及確切的目標 UDM 欄位路徑。
  2. 將相關變更歸為一組,避免在單一長提示中混入不相關的修正。
  3. 請使用單引號括住原始記錄中的確切字串,例如 'NXDOMAIN' 或 'allow'。
  4. 如果對應關係取決於欄位值,請使用 if ... then ... otherwise ... 結構明確陳述條件式對應關係。
  5. 指示代理將沒有相符 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 列舉類型。
  • 在多輪對話中,以互動方式調整生成的擴充功能,不必從頭開始。

撰寫提示的最佳做法

如要取得準確的剖析器擴充功能,請遵循下列提示指南:

  1. 清楚說明要擷取原始記錄的哪個部分,以及要填入的確切 UDM 欄位路徑 (例如 principal.ip、target.user.email_addresses 或 security_result.action)。
  2. 在非結構化記錄中,請將文字字串、分隔符或範例值括在單引號內,例如 '198.51.100.0' 或 'allow'。
  3. 指示 AI 將沒有專屬 UDM 欄位的專屬或供應商專屬屬性,對應至 additional.fields,並提供明確的鍵名稱 (例如 additional.fields["application"])。

生成剖析器擴充功能

您可以從 Google SecOps 的下列任一位置,啟動剖析器擴充功能工作流程:

  • 依序前往「SIEM 設定」 > 「剖析器」,選取並擴充任何現有的記錄剖析器。
  • 在「搜尋」頁面調查記錄時,直接從含有未剖析欄位的事件開啟擴充功能建立流程。

如要從「Parsers」(剖析器) 頁面產生剖析器擴充功能,請按照下列步驟操作:

  1. 在 Google SecOps 中,依序前往 「SIEM Settings」(SIEM 設定) >「Parsers」(剖析器)。
  2. 在「剖析器」表格中,搜尋要擴充的記錄類型。
  3. 在剖析器資料列中,按一下「 選單」,然後依序選取「擴充剖析器」>「建立擴充功能」。
  4. 在「Raw Log」(原始記錄) 窗格中,驗證原始記錄範例,或按一下「編輯」圖示 ,貼上要剖析的記錄範例。
  5. 在「擴充功能」窗格的「擴充功能方法」下方,選取「使用 AI 編寫擴充功能」。
  6. 在提示詞欄位中,以英文簡單說明要擷取的欄位。
  7. 按一下「確認」。

    系統會生成擴充功能程式碼,並更新「UDM Output」(UDM 輸出內容) 窗格。

修正剖析器擴充功能

您可以透過多輪對話,逐步建構及調整剖析器擴充功能。提交後續提示時,AI 會根據先前生成的擴充功能套用新指示。除非您明確要求覆寫或移除,否則系統會自動保留先前對話中的現有對應和條件邏輯。

  1. 在提示詞欄位輸入後續指令,調整生成的程式碼。
  2. 按一下「確認」。
  3. 每次輸入提示後,請預覽生成的擴充功能程式碼、檢查 UDM 輸出內容範例,並確認或調整邏輯。

以下範例工作流程說明如何透過反覆修正,在多個回合中建構剖析器擴充功能:

  1. 第 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. 第 2 輪 (加法對應):
    • 使用者提示詞: "Also map virtual system string 'vsys1' to observer.administrative_domain."
    • 結果:AI 更新擴充功能,將 observer.administrative_domain 納入對應,同時保留第 1 輪的 IP 對應。
  3. 第 3 輪 (有條件修正):
    • 使用者提示詞: "In addition, map action string 'allow' to security_result[0].action as ALLOW."
    • 結果:AI 會在先前所有擷取內容的基礎上,加入條件式動作列舉對應。

驗證剖析器擴充功能

  1. 點選「Validate」(驗證)。
  2. 程序完成後,請查看驗證指標。

存取參考資訊

請參考下列範例,為剖析器擴充功能撰寫準確的提示。

結構化記錄提示

如果是結構化記錄,資料會整理成具名索引鍵、屬性或 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 則訊息,包括初始提示和後續修正。

如果對話達到回合或訊息上限,你可以提交或儲存目前的工作,或開始新的工作階段 (受每日工作階段配額限制)。如果是自訂剖析器,提交並啟用後,您可以像其他自訂剖析器一樣,手動編輯程式碼。

後續步驟

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