收集 Jenkins 記錄

支援的國家/地區:

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

事前準備

請確認您已完成下列事前準備事項:

  • Google SecOps 執行個體。
  • IAM 的特殊存取權 Google Cloud 。
  • 儲存空間的特殊存取權 Google Cloud 。
  • Jenkins 的特殊存取權。

建立 Google Cloud 儲存空間 bucket

  1. 前往 Cloud Storage。
  2. 建立新的 bucket。選擇專屬名稱和適當區域。
  3. 確認 bucket 具有適當的存取權控管機制 (例如,只有經過授權的服務帳戶可以寫入)。

建立 Google Cloud 服務帳戶

  1. 依序前往「IAM 與管理」>「服務帳戶」。
  2. 建立新的服務帳戶。為其命名,例如 jenkins-logs。
  3. 將「Storage 物件建立者」角色授予您在上一個步驟中建立的 GCS bucket 服務帳戶。
  4. 為服務帳戶建立 SSH 金鑰:建立及刪除服務帳戶金鑰。
  5. 下載服務帳戶的 JSON 金鑰檔案。

在 Jenkins 中安裝 Google Cloud 儲存空間外掛程式

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

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

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

設定 Jenkins,以便透過 Google Cloud

  1. 依序前往「Manage Jenkins」(管理 Jenkins) >「Credentials」(憑證) >「System」(系統)。

  2. 依序點選「新增」 「新增憑證」。

  3. 類型:選取「Google Service Account from private key」。

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

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

  6. 點選「建立」。

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

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

設定動態饋給

如要設定動態消息,請按照下列步驟操作:

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

    • 儲存空間 Bucket URI: Google Cloud gs://my-bucket/<value>/ 格式的儲存空間 Bucket 網址。這個網址結尾必須為正斜線 (/)。
    • 來源刪除選項:根據偏好設定選取刪除選項。
  9. 按一下「建立動態饋給」。

UDM 對應表

記錄欄位 UDM 對應 邏輯
act security_result.action_details 從 msg1 或 msg2 欄位擷取。代表執行的動作。移除開頭的空白字元。
data principal.user.userid 或 principal.ip 或 metadata.description 如果資料符合 IP 位址模式,則會對應至 principal.ip。如果符合使用者名稱模式,則會對應至 principal.user.userid。否則會對應至 metadata.description。
msg1 target.asset.product_object_id 或 security_result.action_details 用於擷取「object」和「act」。如果存在 /,則會分割為「object」和「act」。如果存在 »,則會分割為「object」和「act」。否則,會視為「act」,並可能進一步剖析。
msg2 metadata.description 或 security_result.action_details 如果存在,則最初會對應至 metadata.description。如果包含「completed:」,系統會擷取後方的值,並對應至 security_result.action_details。
object target.asset.product_object_id 從「msg1」msg1擷取。代表所執行的物件。
object_id target.resource.attribute.labels.value 如果存在 /,則從 object 擷取。代表更具體的物件 ID。這個鍵會以硬式編碼寫成「外掛程式名稱」。
src_ip principal.ip 從訊息或資料中擷取。代表來源 IP 位址。
使用者 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 由「年」、「月」、「日」、「時間」和「上午/下午」欄位建構而成。

變更記錄

查看這個剖析器的變更記錄

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