分享方式:


自訂存放庫部署 (公開預覽)

有兩個主要方式可將存放庫內容的部署自定義至 Microsoft Sentinel 工作區。 每個方法都會使用不同的檔案和語法,因此請考慮這些範例來協助您開始使用。

  • 修改 GitHub 工作流程或 DevOps 管線,以自定義部署選項,例如連線的部署觸發程式、部署路徑或使用智慧部署。

  • 利用新引進的組態檔來控制內容部署的優先順序、選擇 從這些部署中排除 特定內容檔案,或將參數檔案對應至特定內容檔案。

重要

Microsoft Sentinel 存放庫功能目前處於預覽狀態。 請參閱 Microsoft Azure Preview 補充使用規定,了解適用於搶鮮版 (Beta)、預覽版或尚未正式發行 Azure 功能的其他法律條款。

必要條件和範圍

Microsoft Sentinel 目前支援 GitHub 和 Azure DevOps 存放庫的連線。 將 Microsoft Sentinel 工作區連線到原始檔控制存放庫之前,請確定您有:

  • 資源群組中的擁有者角色,其中包含您的 Microsoft Sentinel 工作區使用者存取 管理員 istratorSentinel 參與者角色的組合,以建立連線
  • 對 GitHub 存放庫或 Project 管理員 istrator 存取 Azure DevOps 存放庫的共同作業者存取權
  • 針對 Azure DevOps 啟用的 GitHub 和管線啟用的動作
  • 確定您想要部署到工作區的自定義內容檔案位於相關的 Azure Resource Manager (ARM) 範本中

如需詳細資訊,請參閱 驗證您的內容

自訂工作流程或管線

默認工作流程只會根據對存放庫的認可,部署自上次部署之後修改的內容。 但您可能需要其他自定義專案,例如設定不同的部署觸發程式,或從特定根資料夾獨佔部署內容。

根據您的連線類型,選取下列其中一個索引標籤:

若要自定義 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 檔

    • 若要停用智慧部署:智慧部署行為與所討論的部署觸發程式不同。 流覽至 jobs 工作流程的 區段。 將 smartDeployment 預設值從 true 切換為 false。 認可此變更之後,智慧部署功能就會關閉,而此聯機的所有未來部署都會將存放庫的所有相關內容檔案重新部署至連線的工作區。

    • 若要修改部署路徑

      在區段顯示的預設組態on中,區段中第一行paths的通配符 (**) 表示整個分支位於部署觸發程式的路徑中。

      此預設組態表示每當內容推送至分支的任何部分時,就會觸發部署工作流程。

      稍後在 檔案中,區 jobs 段包含下列預設組態: directory: '${{ github.workspace }}'。 這一行表示整個 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 檔

重要

在 GitHub 和 Azure DevOps 中,請務必讓觸發程式路徑和部署路徑目錄保持一致。

使用參數檔案調整部署規模

請考慮使用包含參數值的 JSON 檔案, 而不是將參數傳遞為內容檔中的內嵌值。 然後將這些參數 JSON 檔案對應至其相關聯的 Sentinel 內容檔案,以更妥善地跨不同工作區調整您的部署。 有數種方式可將參數檔案對應至 Sentinel 檔案,而存放庫部署管線會依下列順序加以考慮:

A diagram showing the precedence of parameter file mappings.

  1. sentinel-deployment.config 中有對應嗎? 如需詳細資訊,請參閱 自定義聯機組態
  2. 是否有工作區對應的參數檔案? 是,它是與以 .parameters-WorkspaceID<> 結尾的內容檔案相同目錄中的參數檔案.json
  3. 是否有預設參數檔案? 是,與以 .parameters.json 結尾 的內容檔案相同目錄中的任何參數檔案

建議您透過組態檔或指定檔名中的工作區標識符來對應參數檔案,以避免在多個部署案例中發生衝突。

重要

一旦根據上述對應優先順序決定參數檔案比對之後,管線將會忽略任何剩餘的對應。

修改 sentinel-deployment.config 中列出的對應參數檔案會觸發其配對內容檔案的部署。 新增或修改 .parameters-WorkspaceID<>.json檔案或.parameters.json檔案也會觸發配對內容檔案的部署,以及新修改的參數,除非有較高的優先順序參數對應。 只要工作流程/管線定義檔案中仍然啟用智慧部署功能,就不會部署其他內容檔案。

自定義聯機組態

截至 2022 年 7 月為止,存放庫的部署腳本支援針對每個存放庫分支使用部署組態檔。 組態 JSON 檔案可協助您將參數檔案對應至相關的內容檔案、排列部署中特定內容的優先順序,以及從部署中排除特定內容。

  1. 在存放庫根目錄建立 sentinel-deployment.config 檔案。 根據更新的組態,新增、刪除或修改此組態檔會導致存放庫中的所有內容完整部署。

    Screenshot of a repository root directory. The RepositoriesSampleContent is shown with the location of the sentinel-deployment.config file.

  2. 在三個選擇性區段中包含 JSON 結構化內容: "prioritizedcontentfiles":"excludecontentfiles":"parameterfilemappings":。 如果未包含任何區段或省略 .config 檔案,部署程式仍會執行。 忽略無效或無法辨識的區段。

以下是有效 sentinel-deployment.config 檔案之整個內容的範例。 您也可以在 Sentinel CICD 存放庫範例中找到 此範例

{
  "prioritizedcontentfiles": [
    "parsers/Sample/ASimAuthenticationAWSCloudTrail.json",
    "workbooks/sample/TrendMicroDeepSecurityAttackActivity_ARM.json",
    "Playbooks/PaloAlto-PAN-OS/PaloAltoCustomConnector/azuredeploy.json"
  ], 
  "excludecontentfiles": [
     "Detections/Sample/PaloAlto-PortScanning.json",
     "parameters"
  ],
  "parameterfilemappings": {
    "879001c8-2181-4374-be7d-72e5dc69bd2b": {
      "Playbooks/PaloAlto-PAN-OS/Playbooks/PaloAlto-PAN-OS-BlockIP/azuredeploy.json": "parameters/samples/parameter-file-1.json"
    },
    "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": 區段。 目前不支援通配符比對。

  • 若要排除內容檔案,請使用個別.json內容檔案的完整路徑名稱來修改 "excludecontentfiles": 區段。

  • 若要對應參數

    部署腳本接受三種對應參數的方法,如使用參數檔案調整部署中所述。 透過 sentinel-deployment.config 對應參數會採用最高優先順序,並保證指定的參數檔案對應至其相關聯的內容檔案。 只要使用目標連線的工作區標識碼和個別.json檔案的完整路徑名稱來修改 "parameterfilemappings": 區段。

下一步

範例存放庫示範部署組態檔和這三個參數對應方法。 如需詳細資訊,請參閱 Sentinel CICD 存放庫範例

如需 ARM 範本的詳細資訊,請考慮下列資源: