自訂儲存庫部署

有兩種主要方式可以自訂將你的儲存庫內容部署到 Microsoft Sentinel 工作空間。 每種方法使用不同的檔案和語法,請參考這些範例作為起點。 在開始之前,請確保所需的 儲存庫連線與部署前置條件 都已具備。

客製化方法 涵蓋的部署選項
GitHub 工作流程
DevOps 流程
自訂連線的部署觸發條件
自訂您的部署路徑
智慧部署支援
設定檔案 控制內容部署的優先順序
選擇在部署中排除特定內容檔案
透過將參數檔案映射到特定內容檔案,擴展不同工作空間的部署

必要條件

要自訂儲存庫部署,你需要已有的儲存庫連線。 要建立一個,請參見 「從你的儲存庫部署自訂內容」。 建立連結後,請確保符合以下要求:

  • 協作者存取您的 GitHub 儲存庫,或專案管理員存取您的 Azure DevOps 儲存庫
  • 動作已啟用於 GitHub,而管線啟用於 Azure DevOps
  • 確保你想部署到工作區的自訂內容檔案格式是支援的。 有關支援格式,請參見 「規劃您的儲存庫內容」。

欲了解更多可部署內容類型的資訊,請參閱 規劃您的儲存庫內容。

自訂工作流程或管線

預設工作流程只會根據儲存庫中的提交紀錄,部署自上次部署以來已修改的內容。 自訂工作流程或流程,設定不同的部署觸發器,或只從特定根資料夾部署內容。

根據你的連線類型,選擇以下其中一個分頁:

要自訂您的 GitHub 部署工作流程:

  1. 在 GitHub 上,前往你的倉庫,在 .github/workflows 目錄中找到你的工作流程。

    工作流程檔案是以 sentinel-deploy-xxxxx.yml 開頭的 YML 檔案。 打開該檔案,工作流程名稱會出現在第一行,並採用以下預設命名規則: Deploy Content to <workspace-name> [<deployment-id>]。

    例如:name: Deploy Content to repositories-demo [xxxxx-dk5d-3s94-4829-9xvnc7391v83a]

  2. 請選擇頁面右上角的鉛筆按鈕以開啟檔案進行編輯,然後依照以下方式修改部署:

    • 要修改部署觸發器,更新 on 程式碼中描述觸發工作流程執行事件的段落。

      預設情況下,此設定設為 on: push,意即在任何推送至連接分支時觸發工作流程,包括對現有內容的修改及新增內容到儲存庫。 例如:

      on:
          push:
              branches: [ main ]
              paths:
              - `**`
              - `!.github/workflows/**` # this filter prevents other workflow changes from triggering this workflow
              - `.github/workflows/sentinel-deploy-<deployment-id>.yml`
      

      例如,更改這些設定,讓工作流程定期執行,或將不同的工作流程事件合併在一起。

      更多資訊請參閱 GitHub 文件中的「設定工作流程事件」。

    • 要停用智慧部署:

      智慧部署行為會與工作流程觸發器分開 on 設定。 前往工作流程中的 jobs 區段。 將smartDeployment預設值從true切換為false。 一旦此變更被提交,智慧部署功能即被關閉,未來所有針對此連線的部署都會將儲存庫中所有相關內容檔案重新部署到連接的工作區。

    • 要修改部署路徑:

      在 on 區段所示的預設組態中,** 區段第一行中的萬用字元 (paths) 表示整個分支皆包含在部署觸發程序的路徑中。

      此預設設定表示每當該內容被推送到連接分支的任何部分時,部署工作流程就會被觸發。

      在該 jobs 區段中,預設配置包含 directory: '${{ github.workspace }}'。 設定顯示directory整個 GitHub 分支都在內容部署的路徑中,且未過濾任何資料夾路徑。

      若要僅從特定資料夾路徑部署內容,請將其加入 paths 和 directory 這兩個設定中。 例如,若要只部署名為 SentinelContent的根資料夾內容,請更新程式碼如下:

      paths:
      - `SentinelContent/**`
      - `!.github/workflows/**` # this filter prevents other workflow changes from triggering this workflow
      - `.github/workflows/sentinel-deploy-<deployment-id>.yml`
      
      ...
          directory: '${{ github.workspace }}/SentinelContent'
      

欲了解更多資訊,請參閱 GitHub Actions 工作流程語法中的路徑篩選器,詳見 GitHub 文件中。

重要事項

在 GitHub 和 Azure DevOps 中,請確保觸發路徑與部署路徑目錄保持一致。

用參數檔案擴展部署

與其在內容檔案中以內嵌值傳遞參數,不如 考慮使用 Bicep 參數檔 或 包含參數值的 JSON 檔案。 然後將這些參數檔案對應到它們對應的 Microsoft Sentinel 內容檔案,以便更好地擴展部署到不同工作空間。

有幾種方法可以將參數檔案映射到內容檔案。 請注意,Bicep 參數檔案只支援 Bicep 檔案範本,但 JSON 參數檔案支援兩者。 部署資料庫流程會依以下順序考慮參數檔案:

一個顯示參數檔案映射優先順序的圖示。

  1. sentinel-deployment.config裡有映射嗎?
    欲了解更多資訊,請參閱「自訂您的連線設定」。

  2. 有沒有一個工作區映射的參數檔案? 是的,內容檔案位於同一目錄中,且有一個對應工作區的參數檔案,其名稱符合下列其中一種模式:
    .<WorkspaceID>.bicepparam
    .parameters-<WorkspaceID>.json

  3. 有預設的參數檔嗎? 是的,內容檔案在同一個目錄裡,參數檔符合以下模式之一:
    .bicepparam
    .parameters.json

透過設定檔將參數檔案映射,或在檔名中指定工作區 ID,避免與多個工作區部署衝突。

重要事項

一旦根據映射優先順序確定參數檔案匹配,管線會忽略剩餘的映射。

修改 sentinel-deployment.config 中列出的映射參數檔會觸發其配對內容檔案的部署。 新增或修改工作區映射的參數檔案或預設參數檔也會觸發配對內容檔案的部署,並同時新增修改參數,除非有更高優先順序的參數映射。 只要 smart deployments 功能仍啟用在工作流程/管線定義檔中,其他內容檔案就不會被部署。

自訂你的連線設定

截至 2022 年 7 月,倉庫部署腳本支援每個儲存庫分支使用部署設定檔。 配置 JSON 檔案幫助你將參數檔對應到相關內容檔,優先排序部署中的特定內容,並排除特定內容。

重要事項

建立、刪除或修改 sentinel-deployment.config 檔案會觸發根據更新設定完整部署所有儲存庫內容。

  1. 在你的儲存庫根目錄建立檔案 sentinel-deployment.config 。

    一個倉庫根目錄的截圖。RepositoriesSampleContent 顯示 sentinel-deployment.config 檔案的位置。

  2. 將你的結構化內容包含在三個可選的區塊中,分別為 "prioritizedcontentfiles":、 、 "excludecontentfiles":"parameterfilemappings":和 。 若未包含區段或省略 .config 檔案,部署程序仍會繼續執行。 無效或未識別的章節則被忽略。

這裡有一個有效 sentinel-deployment.config 檔案的完整內容範例。 此範例亦可於 Microsoft Sentinel CICD 資料庫範例中找到。

{
  "prioritizedcontentfiles": [
    "parsers/Sample/ASimAuthenticationAWSCloudTrail.json",
    "workbooks/sample/TrendMicroDeepSecurityAttackActivity_ARM.json",
    "Playbooks/PaloAlto-PAN-OS/PaloAltoCustomConnector/azuredeploy.bicep"
  ], 
  "excludecontentfiles": [
     "Detections/Sample/PaloAlto-PortScanning.json",
     "parameters"
  ],
  "parameterfilemappings": {
    "879001c8-2181-4374-be7d-72e5dc69bd2b": {
      "Playbooks/PaloAlto-PAN-OS/Playbooks/PaloAlto-PAN-OS-BlockIP/azuredeploy.bicep": "parameters/samples/auzredeploy.bicepparam"
    },
    "9af71571-7181-4cef-992e-ef3f61506b4e": {
      "Playbooks/Enrich-SentinelIncident-GreyNoiseCommunity-IP/azuredeploy.json": "path/to/any-parameter-file.json"
    }
  },
  "DummySection": "This shouldn't impact deployment"
}

注意事項

不要在任何內容路徑中使用反斜線的「\」字元。 改用前斜線「/」來表示。

  • 要優先排序內容檔案:

    隨著資料庫內容量增加,部署時間可能會增加。 在此區塊新增時間敏感內容,以便在觸發發生時優先部署。

    在該 "prioritizedcontentfiles": 區塊中加入完整的路徑名稱。 目前不支援萬用字元比對。

  • 要排除內容檔案,請修改 "excludecontentfiles": 該區段,並包含個別 .json 內容檔案的完整路徑名稱。

  • 映射參數:

    部署腳本接受三種參數映射方式(組態檔案映射、工作區映射參數檔案及預設參數檔案),詳見「 用參數檔案擴展你的部署」。 透過 sentinel-deployment.config 映射參數會取得最高優先權,並確保給定參數檔案能映射到其相關內容檔案。 修改 "parameterfilemappings": 該區塊,包含目標連線的工作區 ID 及個別 .json 檔案的完整路徑名稱。