收集 Jenkins 記錄
支援以下發布途徑:
Google secops
Siem
總覽
這個剖析器會從 JSON 和 SYSLOG 格式的記錄中擷取重要資訊,例如時間戳記、使用者 ID、來源 IP、動作和物件 ID。它會使用 grok 模式比對各種記錄訊息格式、處理結構變化,並使用擷取的欄位填入統合資料模型 (UDM)。剖析器也會根據使用者或 IP 資訊的存在與否,將事件分類。
事前準備
- 確認您有 Google SecOps 執行個體。
- 確認您具備 Google Cloud IAM 的特殊權限。
- 請確認您具備 Google Cloud Storage 的特殊權限。
- 確認您具備 Jenkins 的特殊權限。
建立 Google Cloud Storage 值區
- 前往「Cloud Storage」。
- 建立新的值區。請選擇不重複的名稱和適當的區域。
- 確保值區設有適當的存取權控管機制 (例如,只有經過授權的服務帳戶才能寫入值區)。
建立 Google Cloud 服務帳戶
- 依序前往「IAM 與管理」>「服務帳戶」。
- 建立新的服務帳戶。請為其提供描述性名稱 (例如「jenkins-logs」)。
- 在您在上一個步驟中建立的 GCS 值區中,將「儲存空間物件建立者」角色授予服務帳戶。
- 為服務帳戶建立 SSH 金鑰:建立及刪除服務帳戶金鑰。
下載服務帳戶的 JSON 金鑰檔案。
在 Jenkins 中安裝 Google Cloud Storage 外掛程式
- 依序前往「Manage Jenkins」>「Plugins」。
- 選取「可用的外掛程式」。
- 搜尋 Google Cloud Storage 外掛程式。
- 安裝外掛程式,並視需要重新啟動 Jenkins。
在 Jenkins 中安裝 Google OAuth 憑證外掛程式
- 依序前往「Manage Jenkins」>「Plugins」。
- 選取「Available plugins」
- 搜尋 Google OAuth 憑證外掛程式。
- 安裝外掛程式,並視需要重新啟動 Jenkins。
設定 Jenkins 以便透過 Google Cloud 進行驗證
依序前往「管理 Jenkins」>「憑證」>「系統」。
按一下「新增」 「新增憑證」。
Kind:選取「Google Service Account from private key」。
專案名稱:設定憑證的名稱。
上傳您在建立 Google Cloud 服務帳戶時取得的 JSON 金鑰檔案。
按一下 [建立]。
設定 Jenkins 記錄檔,以便上傳至 Google SecOps
- 在 Jenkins 工作設定中,在建構後動作中新增「Google 儲存空間建構記錄上傳」,並加入下列參數:
- Google 憑證:您在上一個步驟中建立的 Google 憑證名稱。
- 記錄名稱:在指定的儲存路徑下,用於儲存 Jenkins 建構記錄的檔案名稱。
- 儲存位置:您要上傳記錄的值區名稱。您建立的服務帳戶必須能存取值區。
- 測試記錄上傳功能。
在 Google SecOps 中設定動態饋給,以便擷取 Jenkins 記錄
- 依序前往「SIEM 設定」>「動態」。
- 按一下「新增」。
- 在「動態饋給名稱」欄位中,輸入動態饋給的名稱 (例如「Jenkins 記錄」)。
- 選取「Google Cloud Storage」做為「來源類型」。
- 選取「記錄類型」,然後選取「Jenkins」。
- 按一下「取得服務帳戶」,做為「Chronicle 服務帳戶」。
- 點按「Next」。
指定下列輸入參數的值:
- Storage Bucket URI:Google Cloud Storage 值區網址,格式為
gs://my-bucket/<value>
。 - URI 是:選取包含子目錄的目錄。
- 來源刪除選項:根據偏好選取刪除選項。
- 資產命名空間:資產命名空間。
- 擷取標籤:套用至這個動態饋給事件的標籤。
- Storage Bucket URI:Google Cloud Storage 值區網址,格式為
點按「Next」。
在「完成」畫面中查看新的動態饋給設定,然後按一下「提交」。
UDM 對應表
記錄欄位 | UDM 對應 | 邏輯 |
---|---|---|
act | security_result.action_details | 從 msg1 或 msg2 欄位擷取。代表所執行的動作。移除開頭的空白字元。 |
data | principal.user.userid 或 principal.ip 或 metadata.description | 如果 data 符合 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。 |
物件 | 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 | 由 year、month、day、time 和 ampm 欄位建構而成。 |
異動
2023-11-27
- 新建的剖析器。
還有其他問題嗎?向社群成員和 Google SecOps 專家尋求解答。