共用方式為


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

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

自定義方法 涵蓋的部署選項
GitHub 工作流程
DevOps 管線
自定義連線的部署觸發程式
自訂您的部署路徑
智慧部署啟用
組態檔 控制內容部署的優先順序
選擇從部署中排除特定內容檔案
將參數檔案對應至特定內容檔案,以調整跨不同工作區的部署

重要

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

必要條件

若要自定義存放庫部署,存放庫連接必須存在。 如需建立連線的詳細資訊,請參閱 從存放庫部署自定義內容。 建立連線之後,會套用下列必要條件:

  • 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 檔

    • 若要停用智慧部署:智慧部署行為與所討論的部署觸發程式不同。 流覽至 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 中,請務必讓觸發程式路徑和部署路徑目錄保持一致。

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

請考慮使用 Bicep 參數檔案或包含參數值的 JSON 檔案,而不是將參數傳遞為內容檔中的內嵌值。 然後將這些參數檔案對應至其相關聯的Microsoft Sentinel 內容檔案,以更妥善地跨不同工作區調整您的部署。

有數種方式可將參數檔案對應至內容檔案。 請記住,Bicep 參數檔案只支援 Bicep 檔案範本,但 JSON 參數檔案同時支援兩者。 存放庫部署管線會依下列順序考慮參數檔案:

顯示參數檔案對應優先順序的圖表。

  1. sentinel-deployment.config 中有對應嗎?
    如需詳細資訊,請參閱自定義聯機組態

  2. 是否有工作區對應的參數檔案? 是,內容檔案位於相同目錄中,具有符合下列其中一種模式的工作區對應參數檔案:
    。<WorkspaceID.bicepparam.parameters-WorkspaceID><
    >.json

  3. 是否有預設參數檔案? 是,內容檔案位於相同的目錄中,且參數檔案符合下列其中一種模式:
    .bicepparam
    .parameters.json

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

重要

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

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

自定義聯機組態

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

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

    存放庫根目錄的螢幕快照。存放庫SampleContent 會顯示 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": 區段。 目前不支援通配符比對。

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

  • 若要對應參數

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

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