收集 CircleCI 稽核記錄

支援的國家/地區:

這個剖析器會從 CSV 和 JSON 格式的 CircleCI 稽核記錄中擷取欄位,並轉換為統合式資料模型 (UDM)。這個函式會處理這兩種格式,執行資料轉換和擴充作業,並將擷取的欄位對應至 event 物件中對應的 UDM 欄位。這項服務會著重於使用者動作、資源存取權和更新事件,並將這些項目分類,然後填入相關的 UDM 欄位,例如 principaltargetnetworkmetadata

事前準備

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

  • Google SecOps 執行個體。
  • CircleCI 的特殊存取權。

設定動態饋給

在 Google SecOps 平台中,有兩種不同的進入點可設定動態饋給:

  • 「SIEM 設定」>「動態消息」
  • 內容中心 > 內容包

依序前往「SIEM 設定」>「動態饋給」,設定動態饋給

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

  1. 依序前往「SIEM 設定」>「動態消息」
  2. 按一下「新增動態消息」
  3. 在下一個頁面中,按一下「設定單一動態饋給」
  4. 在「動態消息名稱」欄位中,輸入動態消息的名稱 (例如「CircleCI Logs」)。
  5. 選取「Webhook」做為「來源類型」
  6. 選取「CircleCI」做為「記錄類型」
  7. 點選「下一步」
  8. 選用:指定下列輸入參數的值:
    • 分割分隔符號:用於分隔記錄行的分隔符號,例如 \n
    • 資產命名空間資產命名空間
    • 擷取標籤:套用至這個動態饋給事件的標籤。
  9. 點選「下一步」
  10. 在「Finalize」畫面中檢查動態饋給設定,然後按一下「Submit」
  11. 按一下「產生密鑰」,產生驗證這個動態消息的密鑰。
  12. 複製並儲存密鑰。您無法再次查看這個密鑰。如有需要,您可以重新產生新的密鑰,但這項操作會使先前的密鑰失效。
  13. 在「詳細資料」分頁中,從「端點資訊」欄位複製動態消息端點網址。您需要在用戶端應用程式中指定這個端點網址。
  14. 按一下 [完成]

從內容中心設定動態饋給

為下列欄位指定值:

  • 分割分隔符號:用於分隔記錄行的分隔符號,例如 \n

進階選項

  • 動態饋給名稱:系統預先填入的值,用於識別動態饋給。
  • 來源類型:將記錄收集到 Google SecOps 的方法。
  • 資產命名空間:與動態饋給相關聯的命名空間。
  • 擷取標籤:套用至這個動態饋給所有事件的標籤。

  • 按一下「產生密鑰」,產生驗證這個動態消息的密鑰。

  • 複製並儲存密鑰。您無法再次查看這個密鑰。如有需要,您可以重新產生新的密鑰,但這項操作會使先前的密鑰失效。

  • 在「詳細資料」分頁中,從「端點資訊」欄位複製動態消息端點網址。您需要在用戶端應用程式中指定這個端點網址。

為 Webhook 資訊提供建立 API 金鑰

  1. 依序前往 Google Cloud 控制台 >「憑證」

    前往「憑證」

  2. 按一下 [Create credentials] (建立憑證),然後選取 [API key] (API 金鑰)

  3. 將 API 金鑰存取權限制在 Google Security Operations API

指定端點網址

  1. 在用戶端應用程式中,指定 webhook 動態饋給中提供的 HTTPS 端點網址。
  2. 如要啟用驗證,請在自訂標頭中指定 API 金鑰和私密金鑰,格式如下:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    建議:請將 API 金鑰指定為標頭,而非在網址中指定。

  3. 如果 Webhook 用戶端不支援自訂標頭,您可以使用查詢參數指定 API 金鑰和密鑰,格式如下:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

    更改下列內容:

    • ENDPOINT_URL:動態消息端點網址。
    • API_KEY:用於向 Google SecOps 進行驗證的 API 金鑰。
    • SECRET:您產生的密鑰,用於驗證動態饋給。

在 CircleCI 中設定 Webhook

  1. 登入 CircleCI 網頁介面。
  2. 選取要擷取記錄檔的專案。
  3. 按一下「專案設定」
  4. 選取「Webhook」
  5. 按一下「Add Webhook」
  6. 指定下列輸入參數的值:

    • Webhook 名稱:提供描述性名稱 (例如「Google SecOps」)。
    • 端點網址:輸入 Google SecOps API 端點的 <ENDPOINT_URL>
    • 事件:選取應觸發 Webhook 的 CircleCI 事件 (例如選取「workflow-completed」,在工作流程完成後傳送資料)。
  7. 按一下「儲存」即可建立 Webhook。

UDM 對應表

記錄欄位 UDM 對應 邏輯
account.id read_only_udm.about.resource.attribute.labels.value 原始記錄中的 account.id 值會指派給 UDM 欄位 read_only_udm.about.resource.attribute.labels.value,其中對應的 keyaccount_id
動作 read_only_udm.metadata.product_event_type 原始記錄中的 action 值會指派給 UDM 欄位 read_only_udm.metadata.product_event_type
actor.id read_only_udm.principal.user.product_object_id 原始記錄中的 actor.id 值會指派給 UDM 欄位 read_only_udm.principal.user.product_object_id
actor.name read_only_udm.principal.user.userid 原始記錄中的 actor.name 欄位會移除「github: 」前置字元。剩餘值會指派給 UDM 欄位 read_only_udm.principal.user.userid。如果原始記錄中存在 actor.name,系統會將 USER_RESOURCE_UPDATE_CONTENT 值指派給 read_only_udm.metadata.event_type。否則會指派 USER_RESOURCE_ACCESS
id read_only_udm.metadata.product_log_id 原始記錄中的 id 值會指派給 UDM 欄位 read_only_udm.metadata.product_log_id。剖析器會將 read_only_udm.metadata.log_type 設為 CIRCLECI。剖析器會將 read_only_udm.metadata.product_name 設為 CIRCLECI。剖析器會將 read_only_udm.metadata.vendor_name 設為 CIRCLECI
occurred_at read_only_udm.metadata.event_timestamp 系統會將原始記錄中的 occurred_at 值剖析為時間戳記,並指派給 UDM 欄位 read_only_udm.metadata.event_timestamp
organization.name read_only_udm.target.administrative_domain 原始記錄中的 organization.name 欄位會移除「github: 」前置字元。其餘值會指派給 UDM 欄位 read_only_udm.target.administrative_domain
payload.job.id read_only_udm.about.resource.attribute.labels.value 原始記錄中的 payload.job.id 值會指派給 UDM 欄位 read_only_udm.about.resource.attribute.labels.value,其中對應的 keyjob_id
payload.job.job_name read_only_udm.about.resource.attribute.labels.value 原始記錄中的 payload.job.job_name 值會指派給 UDM 欄位 read_only_udm.about.resource.attribute.labels.value,其中對應的 keyjob_name
payload.job.job_status read_only_udm.about.resource.attribute.labels.value 原始記錄中的 payload.job.job_status 值會指派給 UDM 欄位 read_only_udm.about.resource.attribute.labels.value,其中對應的 keyjob_status
payload.workflow.id read_only_udm.about.resource.attribute.labels.value 原始記錄中的 payload.workflow.id 值會指派給 UDM 欄位 read_only_udm.about.resource.attribute.labels.value,其中對應的 keyworkflow_id
request.id read_only_udm.network.session_id 原始記錄中的 request.id 值會指派給 UDM 欄位 read_only_udm.network.session_id
scope.id read_only_udm.about.resource.attribute.labels.value 原始記錄中的 scope.id 值會指派給 UDM 欄位 read_only_udm.about.resource.attribute.labels.value,其中對應的 keyscope_id。剖析器一開始會將 sec_action 設為 BLOCK。如果原始記錄中的 success 欄位為 true,sec_action 會變更為 ALLOWsec_action 的值隨後會指派給 UDM 欄位 read_only_udm.security_result.action
target.id read_only_udm.target.resource.product_object_id 原始記錄中的 target.id 值會指派給 UDM 欄位 read_only_udm.target.resource.product_object_id
target.name read_only_udm.target.resource.name 原始記錄中的 target.name 欄位會移除「github: 」前置字元。其餘值會指派給 UDM 欄位 read_only_udm.target.resource.name。剖析器會將 read_only_udm.target.resource.resource_type 設為 STORAGE_OBJECT
版本 read_only_udm.target.resource.attribute.labels.value 原始記錄中的 version 值會轉換為字串,並指派給 UDM 欄位 read_only_udm.target.resource.attribute.labels.value,其中對應的 keyversion

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