收集 Jenkins 記錄

支援以下發布途徑:

總覽

這個剖析器會從 JSON 和 SYSLOG 格式的記錄中擷取重要資訊,例如時間戳記、使用者 ID、來源 IP、動作和物件 ID。它會使用 grok 模式比對各種記錄訊息格式、處理結構變化,並使用擷取的欄位填入統合資料模型 (UDM)。剖析器也會根據使用者或 IP 資訊的存在與否,將事件分類。

事前準備

  • 確認您有 Google SecOps 執行個體。
  • 確認您具備 Google Cloud IAM 的特殊權限。
  • 請確認您具備 Google Cloud Storage 的特殊權限。
  • 確認您具備 Jenkins 的特殊權限。

建立 Google Cloud Storage 值區

  1. 前往「Cloud Storage」
  2. 建立新的值區。請選擇不重複的名稱和適當的區域。
  3. 確保值區設有適當的存取權控管機制 (例如,只有經過授權的服務帳戶才能寫入值區)。

建立 Google Cloud 服務帳戶

  1. 依序前往「IAM 與管理」>「服務帳戶」
  2. 建立新的服務帳戶。請為其提供描述性名稱 (例如「jenkins-logs」)。
  3. 在您在上一個步驟中建立的 GCS 值區中,將「儲存空間物件建立者」角色授予服務帳戶。
  4. 為服務帳戶建立 SSH 金鑰:建立及刪除服務帳戶金鑰
  5. 下載服務帳戶的 JSON 金鑰檔案。

在 Jenkins 中安裝 Google Cloud Storage 外掛程式

  1. 依序前往「Manage Jenkins」>「Plugins」
  2. 選取「可用的外掛程式」
  3. 搜尋 Google Cloud Storage 外掛程式。
  4. 安裝外掛程式,並視需要重新啟動 Jenkins。

在 Jenkins 中安裝 Google OAuth 憑證外掛程式

  1. 依序前往「Manage Jenkins」>「Plugins」
  2. 選取「Available plugins」
  3. 搜尋 Google OAuth 憑證外掛程式。
  4. 安裝外掛程式,並視需要重新啟動 Jenkins。

設定 Jenkins 以便透過 Google Cloud 進行驗證

  1. 依序前往「管理 Jenkins」>「憑證」>「系統」

  2. 按一下「新增」 「新增憑證」。

  3. Kind:選取「Google Service Account from private key」

  4. 專案名稱:設定憑證的名稱。

  5. 上傳您在建立 Google Cloud 服務帳戶時取得的 JSON 金鑰檔案。

  6. 按一下 [建立]。

設定 Jenkins 記錄檔,以便上傳至 Google SecOps

  1. 在 Jenkins 工作設定中,在建構後動作中新增「Google 儲存空間建構記錄上傳」,並加入下列參數:
    • Google 憑證:您在上一個步驟中建立的 Google 憑證名稱。
    • 記錄名稱:在指定的儲存路徑下,用於儲存 Jenkins 建構記錄的檔案名稱。
    • 儲存位置:您要上傳記錄的值區名稱。您建立的服務帳戶必須能存取值區。
  2. 測試記錄上傳功能。

在 Google SecOps 中設定動態饋給,以便擷取 Jenkins 記錄

  1. 依序前往「SIEM 設定」>「動態」
  2. 按一下「新增」
  3. 在「動態饋給名稱」欄位中,輸入動態饋給的名稱 (例如「Jenkins 記錄」)。
  4. 選取「Google Cloud Storage」做為「來源類型」
  5. 選取「記錄類型」,然後選取「Jenkins」
  6. 按一下「取得服務帳戶」,做為「Chronicle 服務帳戶」
  7. 點按「Next」
  8. 指定下列輸入參數的值:

    • Storage Bucket URI:Google Cloud Storage 值區網址,格式為 gs://my-bucket/<value>
    • URI 是:選取包含子目錄的目錄
    • 來源刪除選項:根據偏好選取刪除選項。
    • 資產命名空間資產命名空間
    • 擷取標籤:套用至這個動態饋給事件的標籤。
  9. 點按「Next」

  10. 在「完成」畫面中查看新的動態饋給設定,然後按一下「提交」

UDM 對應表

記錄欄位 UDM 對應 邏輯
act security_result.action_details msg1msg2 欄位擷取。代表所執行的動作。移除開頭的空白字元。
data principal.user.useridprincipal.ipmetadata.description 如果 data 符合 IP 位址模式,系統會將其對應至 principal.ip。如果相符,就會對應至 principal.user.userid。否則會對應至 metadata.description
msg1 target.asset.product_object_idsecurity_result.action_details 用於擷取 objectact。如果有 /,則會分割為 objectact。如果有 »,則會分割為 objectact。否則,系統會將其視為 act,並可能進一步剖析。
msg2 metadata.descriptionsecurity_result.action_details 如果存在,系統會初始對應至 metadata.description。如果包含「completed:」,系統會擷取後續的值,並對應至 security_result.action_details
物件 target.asset.product_object_id 擷取自 msg1。代表所採取動作的物件。
object_id target.resource.attribute.labels.value 如果存在 /,則會從 object 中擷取。代表更具體的物件 ID。並以「Plugin Name」做為硬式編碼的鍵。
src_ip principal.ip 訊息資料中擷取。代表來源 IP 位址。
user principal.user.userid 訊息資料中擷取。代表與事件相關聯的使用者。
metadata.event_timestamp 從計算的 @timestamp 欄位複製而來。
metadata.event_type 取決於剖析器邏輯。如果有 user,請設為 USER_UNCATEGORIZED;如果有 src_ip,請設為 STATUS_UNCATEGORIZED;如果沒有,請設為 GENERIC_EVENT
metadata.product_name 硬式編碼為 Jenkins
metadata.product_version 硬式編碼為 Jenkins
metadata.vendor_name 硬式編碼為 JENKINS
metadata.event_timestamp yearmonthdaytimeampm 欄位建構而成。

異動

2023-11-27

  • 新建的剖析器。

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