GitSync

支援的國家/地區:

GitSync 是由 Google SecOps 專業服務團隊建構的強大整合功能,可將 Google SecOps 元件與 Git 存放區同步。它會使用 git 的內部作業直接寫入存放區本身,基本上是做為檔案儲存服務。這個類別提供的方法可執行下列操作:

  • 在 Google SecOps 執行個體之間遷移資產

  • 備份 Google SecOps 資產

  • 自動產生說明文件

  • 建立「商店」來分享資產/知識

  • 版本管控

用途

這項整合功能包含多個 Google SecOps 工作,包括每個支援資產的推送和提取工作,以及整個 Google SecOps 執行個體的推送/提取工作。這些工作不需要定期執行,因為是從 IDE 手動執行,但可以做為一般工作使用 (例如上傳每日提交)。

GitSync 會使用 Chronicle API 擷取相關資產 (例如整合或視覺化系列),並剖析該資產的所有可用資訊 (這些資訊稍後會轉譯為 README.md 檔案,通常會在瀏覽存放區時顯示)。接著,將資產 JSON 定義和算繪的 README 寫入本機存放區,並推送至遠端存放區。

GitSync 的另一項用途是知識分享。透過這項整合功能,您可以將 Git 存放區做為資產「商店」,存放先前設計的劇本或本體設定等資產,並運用 Google SecOps 最佳做法,將平台推向最佳狀態。

安全性更新:主機指紋固定 (GitSync V42.0)

GitSync V42.0 已發布安全強化功能,可支援主機指紋固定,防範中間人 (PITM) 攻擊。這項功能可確保 GitSync 整合功能只會連線至經過驗證的 Git 伺服器。

須知事項與必要行動

Host Fingerprint 欄位為選填,現有工作會繼續執行,不會受到影響。不過,我們強烈建議您立即設定這項功能,提升整合的安全性。

主機指紋是 Git 伺服器的專屬 ID。這項新功能會在連線時驗證這個專屬指紋,防止攻擊者冒用伺服器身分並攔截資料。

啟用主機指紋釘選

如要啟用主機指紋固定功能,您必須取得 Git 伺服器的指紋,並將其新增至整合設定。

  1. 尋找主機指紋:您可以從 Git 伺服器的說明文件或使用信任的方法,取得 Git 伺服器的公開金鑰指紋。如要使用 ssh-keyscan 指令取得指紋,請在終端機中執行下列指令:

    ssh-keyscan -t rsa <hostname>
    

    舉例來說,如果是 GitHub,請執行 ssh-keyscan -t rsa github.com。輸出內容包含主機指紋,看起來類似這樣: github.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC...

  2. 將指紋新增至整合服務: 將複製的指紋新增至 GitSync 整合服務設定的 Host Fingerprint 欄位。

必要條件

推送/提取現有存放區:

  • Git 的驗證方式。支援使用者名稱/密碼組合 (不建議)、存取權杖 (建議) 和 Base64 編碼的 SSH 私密金鑰 (建議)。使用後兩者時,不需要 username 參數。

  • Google SecOps 本機使用者。用於匯入資產。使用者必須具備寫入目標模組的權限 (舉例來說,如果使用者無法存取 IDE,就無法提取整合項目)。

建立新的存放區

  • 先前「推送/提取現有存放區」一節中提及的所有要點。

  • 遠端存放區。建議存放區中至少要有 1 個檔案。建立存放區時,大多數 Git 服務都會提供建立 README 檔案的選項。

設定整合

您必須將整合功能設定為共用執行個體。無法連結至 Google SecOps SOAR 中的現有環境。

整合屬性

參數名稱

說明

存放區網址

存放區網址。使用使用者名稱/密碼驗證時,這個值開頭必須為 https://。如果使用 SSH 驗證,這個值必須以 git@ 或 ssh:// 開頭。(請參閱下方的「設定存放區網址和分支」)。

分支版本

要與存放區同步的分支版本。

Git 密碼/權杖/安全殼層金鑰

Git 的驗證方式。這個值可以是 Git 密碼/權杖/SSH 私密金鑰。私密金鑰應編碼為 base64。支援 RSA 和 Ed25519。

Git 使用者名稱

Git 使用者名稱。使用 SSH 驗證時,這個值並非必要。

修訂版本作者

非必填。可指定修訂版本的作者。這個值必須採用以下格式:使用者名稱

Google SecOps 驗證 SSL

驗證 Google SecOps API 的 SSL

Git 驗證 SSL

向目標 Git 服務驗證 SSL

設定存放區網址和分支

在本指南中,我們將示範如何在 Bitbucket 中取得正確的值 (請注意,GitHub 的程序相同)。


  1. 在 Bitbucket 中找出存放區。

    gitsync1

  2. 按一下右上角的複製按鈕 (GitHub 中的程式碼)

    • SSH 驗證 - 存放區網址為 git@bitbucket.org:siemplifyproserv/connectors.git

      gitsync2

  3. 使用者/密碼或權杖驗證 - 存放區網址為 https://bitbucket.org/siemplifyproserv/connectors.git。(可以忽略使用者名稱)

    gitsync3

  4. 檢查目前的分支 (下圖中的 master)

    gitsync4

使用範例

GitSync 中的每個作業都包含下列參數:


名稱

說明

工作專屬 - 連接器名稱、整合 ID、劇本許可清單等。

這些參數用於指定要推送或提取至存放區的內容。在 GitSync 中,資產會以 ID 參照。這些值會區分大小寫。

存放區網址和分支

新增對多個存放區的支援,並使用相同憑證。設定這些參數後,系統會忽略整合執行個體中設定的存放區。

修訂訊息

將資產推送至存放區時,必須提供提交訊息。您可以在這裡指定推送原因,指出資產中修正、變更或新增的內容。

Readme 外掛程式

新增在推送資產時擴充資產說明文件的功能。這個值可使用:

  • Markdown 語法 - Git 供應商 (例如 GitHub 和 Bitbucket) 的 README 檔案支援此語法

  • Jinja - 顯示資產相關資訊。請參閱整合管理工具常數中的範例

範本會新增至文件結尾,並儲存在存放區根目錄的 GitSync.json 中繼資料檔案中。


提取素材資源

在本例中,我們會擷取具有正確對應和視覺化系列的連接器。

  1. 首先,請確認資產位於已設定的儲存庫。只要瀏覽存放區目錄並複製資產 ID 即可 (通常是目錄名稱或 README 檔案的標題)。
    gitsync5

    Bitbucket 存放區中的範例,位於 Connectors 目錄。請注意,目錄是整合名稱,目錄內則是連接器的實際 ID。
  2. 在 Google SecOps IDE 中找到合適的工作。在本範例中,我們將使用「提取連線器」作業。

    • 注意:拉動連接器時,請確認連接器整合也已安裝。

  3. 按一下「測試」分頁標籤,然後設定參數。由於我們使用一個存放區,且已在整合執行個體中設定該存放區,因此請將「存放區網址」和「分支」參數留空,並將其他參數設為所需值。

  4. 執行工作。

  5. 如要查看作業記錄,請參閱「偵錯輸出內容」。如果一切順利,記錄會顯示相關資訊。

  6. 前往 Google SecOps -> 連接器,然後設定連接器。


推送資產

在本範例中,我們會將劇本和區塊推送至存放區。

  1. 找出要推送的劇本。我們將在此推送名為「Failed Login」的新區塊,以及名為「Malicious Activity」的更新版劇本。

    gitsync7

  2. 在 Google SecOps IDE 中找到合適的工作。在本範例中,我們將使用「Push Playbook」作業。

  3. 按一下「測試」分頁標籤,然後設定參數。

  4. 由於兩者位於同一個資料夾 (預設),您也可以改用資料夾允許清單。
  5. 執行工作。

  6. 如要查看作業記錄,請參閱「偵錯輸出內容」。如果一切順利,記錄會顯示相關資訊。

  7. 確認存放區包含最新版本的劇本。


建立新的存放區

如要建立新存放區,請務必先在存放區中加入單一檔案,再使用 GitSync 進行設定。建立存放區時,在存放區根目錄中加入 README 檔案,即可快速完成這項操作。
Bitbucket

gitsync8

GitHub

gitsync9

已知問題和限制

  • 首次設定存放區後,系統會使用預先定義的目錄結構,確保瞭解每個資產的位置。如果未遵循目錄結構,或對存放區進行自訂提交或變更,整合功能就會發生故障。您可以在本文結尾找到存放區目錄結構的結構定義。

  • 將這項整合功能用於公開存放區時,請務必謹慎小心。Google SecOps 資產會使用含有應用程式 ID、用戶端 ID、使用者名稱和其他私密資訊的參數。GitSync 無法判斷參數是否為機密資訊,因此系統會將所有非「Password」類型的參數上傳至存放區。此外,推送 Google SecOps 執行個體 (推送環境工作) 時,可以選擇提交密碼。這個選項會指示 GitSync 嘗試從整合設定匯出所有密碼參數。如果存放區是公開的,請勿將這個值設為 true,否則所有憑證都會在網路上洩漏。

  • 提取 Google SecOps 執行個體 (提取環境工作) 時,安裝所有整合項目可能需要超過 5 分鐘,工作會因逾時而失敗。建議您事先從 Google Security Operations Marketplace 手動安裝所有商業整合項目,以免發生任何問題。不過,如果作業因逾時而失敗,也可以重新執行。

  • 商業整合和自訂整合的處理方式不同。匯入/匯出作業會將自訂整合項目以完整的整合項目 ZIP 匯出檔案形式推送。系統只會推送自訂代碼,不會推送商業整合。提取後,GitSync 會從 Google SecOps Marketplace 安裝最新版本的整合項目,並將自訂程式碼儲存在官方整合項目中。

  • 擷取對應時,事件實際擷取至 Google SecOps 之前,不會顯示在「設定」->「本體」->「本體狀態」表格中,因為這些事件尚未建立索引。

  • 本機存放區會儲存在 /opt/siemplify/siemplify_server/GitSyncFiles/{RepoName} 中。由於整合功能會寫入 Git 物件而非檔案,這個資料夾不代表存放區,且每當執行作業時,都會覆寫任何變更。建議使用存放區的另一個副本,而非 GitSync 建立的副本。

  • 如果劇本的權限受限 (例如預設權限設為「可查看」),您必須在來源系統中設定特定權限,才能透過 GitSync 順利同步。詳情請參閱「使用應對手冊權限」。

  • Google SecOps 支援使用 GitSync 備份 SOAR 資產。不過,Google SecOps 不支援使用 GitSync 在系統間 *發布* SOAR 資產。這可能會導致非預期的結果,因為資料庫物件可能不具唯一性。


使用應對手冊權限

使用 GitSync 同步處理權限受限的應對手冊 (例如預設權限設為「可查看」,或使用其他非預設設定) 時,如果目的地系統缺少修改應對手冊的授權,可能會發生錯誤。這是因為 GitSync 會使用具有 Administrator SOC 角色權限的內部系統 API 金鑰執行動作。如要確保應對手冊能順利同步處理受限權限,請在來源系統中,為這些應對手冊授予 Administrator SOC 角色「可以編輯」權限。

啟用 GitSync,提取具有受限制權限的應對手冊

  1. 在來源系統中:
    1. 前往要透過 GitSync 同步處理的劇本。
    2. 開啟劇本的權限設定。
    3. 確認Administrator SOC 角色已新增至具有「可編輯」權限的實體清單。
  2. 調整來源系統的權限後,請在 GitSync 中執行「Push Playbook」(推送劇本)動作,更新 Git 存放區中的劇本及其權限。
  3. 在目標系統中,於 GitSync 執行「Pull Playbook」動作。

建立安全殼層金鑰,以便搭配 GitSync 使用

  1. 首先,請產生金鑰組。系統要求輸入通關密語時,請按下 Enter 鍵: ssh-keygen -b 2048 -t rsa -f ./id_rsa

    系統會建立兩個檔案:id_rsa (私密金鑰) 和 id_rsa.pub (公開金鑰)。將私密金鑰存放在安全的地方。

  2. 在存放區中設定公開金鑰。舉例來說,在 Bitbucket 中輸入存放區的設定,然後按一下「存取金鑰」。按一下「新增金鑰」,然後將 id_rsa.pub 的內容貼到「金鑰」參數中。

  3. 私密金鑰必須先編碼為 Base64,才能新增至整合設定。

    使用下列指令編碼檔案:

    • Linux:
      cat id_rsa | base64 -w 0
    • Windows:

      開啟 id_rsa 所在的 PowerShell,然後貼上 (這是單行):

      Write-Output [System.Text.Encoding]::ASCII.GetString([convert]::ToBase64String(([IO.File]::ReadAllBytes((Join-Path (pwd) 'id_rsa')))))
  4. 將列印的值複製到整合資源的「密碼/權杖/SSH 金鑰」,然後測試整合連線。

GitSync 存放區目錄結構

以下是遠端存放區中預期的目錄結構。

* 這是範例存放區的 tree 指令輸出內容。註解會以紅色顯示。


gitsync10

gitsync11

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