收集 Jenkins 記錄
支援的國家/地區:
Google SecOps
SIEM
總覽
這個剖析器會從 JSON 和 SYSLOG 格式的記錄中,擷取時間戳記、使用者 ID、來源 IP、動作和物件 ID 等重要資訊。它會使用 grok 模式比對各種記錄訊息格式、處理結構變化,並以擷取的欄位填入統一資料模型 (UDM)。剖析器也會根據使用者或 IP 資訊的存在與否,將事件分類。
事前準備
請確認您已完成下列事前準備事項:
- Google SecOps 執行個體。
- IAM 的特殊存取權 Google Cloud 。
- 具有 Google Cloud 儲存空間的特殊存取權。
- Jenkins 的特殊存取權。
建立 Google Cloud 儲存空間 bucket
- 前往「Cloud Storage」。
- 建立新 bucket。選擇不重複的名稱和適當區域。
- 確認值區具有適當的存取權控管機制 (例如,只有獲得授權的服務帳戶才能寫入)。
建立 Google Cloud 服務帳戶
- 依序前往「IAM & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶)。
- 建立新的服務帳戶。為其設定描述性名稱 (例如 jenkins-logs)。
- 在上一個步驟中建立的 GCS bucket 上,授予服務帳戶「Storage Object Creator」角色。
- 為服務帳戶建立 SSH 金鑰:請參閱「建立及刪除服務帳戶金鑰」。
下載服務帳戶的 JSON 金鑰檔案。
在 Jenkins 中安裝 Google Cloud Storage 外掛程式
- 依序前往「Manage Jenkins」>「Plugins」。
- 選取「可用外掛程式」。
- 搜尋 Google Cloud Storage 外掛程式。
- 安裝外掛程式,並視需要重新啟動 Jenkins。
在 Jenkins 中安裝 Google OAuth 憑證外掛程式
- 依序前往「Manage Jenkins」>「Plugins」。
- 選取「可用外掛程式」
- 搜尋 Google OAuth 憑證外掛程式。
- 安裝外掛程式,並視需要重新啟動 Jenkins。
設定 Jenkins 以向 Google Cloud
依序前往「Manage Jenkins」>「Credentials」>「System」。
依序按一下「新增」 「新增憑證」。
「Kind」:選取「Google Service Account from private key」。
專案名稱:設定憑證名稱。
上傳您在 Google Cloud 建立服務帳戶時取得的 JSON 金鑰檔案。
點選「建立」。
設定 Jenkins 記錄檔,以上傳至 Google SecOps
- 在 Jenkins 工作設定中,於建構後動作新增「Google Storage Build Log Upload」,並使用下列參數:
- Google 憑證:您在上一步中建立的 Google 憑證名稱。
- 記錄檔名稱:要儲存 Jenkins 建構記錄的檔案名稱,位於指定的儲存路徑下。
- 儲存位置:要上傳記錄的 bucket 名稱。您建立的服務帳戶必須能存取該值區。
- 測試記錄上傳功能。
設定動態饋給
在 Google SecOps 平台中,有兩種不同的進入點可設定動態饋給:
- 「SIEM 設定」>「動態消息」
- 內容中心 > 內容包
依序前往「SIEM 設定」>「動態饋給」,設定動態饋給
如要設定動態消息,請按照下列步驟操作:
- 依序前往「SIEM 設定」>「動態消息」。
- 按一下「新增動態消息」。
- 在下一個頁面中,按一下「設定單一動態饋給」。
- 在「動態消息名稱」欄位中,輸入動態消息的名稱,例如「Jenkins Logs」。
- 選取「Google Cloud Storage」做為「來源類型」。
- 選取「Jenkins」做為「記錄類型」。
- 按一下「Chronicle 服務帳戶」的「取得服務帳戶」。
- 點選「下一步」。
指定下列輸入參數的值:
- 儲存空間值區 URI: Google Cloud
gs://my-bucket/<value>
格式的儲存空間值區 URL。 - URI 為:選取「包含子目錄的目錄」。
- 來源刪除選項:根據偏好設定選取刪除選項。
- 儲存空間值區 URI: Google Cloud
點選「下一步」。
在「Finalize」畫面上檢查新的動態饋給設定,然後按一下「Submit」。
從內容中心設定動態饋給
為下列欄位指定值:
- 儲存空間值區 URI: Google Cloud
gs://my-bucket/<value>
格式的儲存空間值區 URL。 - URI 為:選取「包含子目錄的目錄」。
- 來源刪除選項:根據偏好設定選取刪除選項。
進階選項
- 動態饋給名稱:系統預先填入的值,用於識別動態饋給。
- 來源類型:將記錄收集到 Google SecOps 的方法。
- 資產命名空間:與動態饋給相關聯的命名空間。
- 擷取標籤:套用至這個動態饋給所有事件的標籤。
UDM 對應表
記錄欄位 | UDM 對應 | 邏輯 |
---|---|---|
act | security_result.action_details | 從 msg1 或 msg2 欄位擷取。代表執行的動作。移除開頭的空白字元。 |
資料 | 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。 |
object | target.asset.product_object_id | 從「msg1」msg1擷取。代表所執行的物件。 |
object_id | target.resource.attribute.labels.value | 如果存在 / ,則從 object 擷取。代表更具體的物件 ID。索引鍵會以硬式編碼方式指定為「外掛程式名稱」。 |
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 欄位建構而成。 |
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。