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

有兩種主要方式可以自訂將你的儲存庫內容部署到 Microsoft Sentinel 工作空間。 每種方法使用不同的檔案和語法,請參考這些範例作為起點。

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

重要事項

Microsoft Sentinel Repositories 功能目前處於預覽階段。 請參閱 Microsoft Azure 預覽的補充使用條款,以了解適用於 Beta、預覽或尚未正式釋出的 Azure 功能。

必要條件

為了客製化儲存庫部署,必須存在儲存庫連線。 欲了解更多建立連線的資訊,請參閱 從你的儲存庫部署自訂內容。 連線完成後,需具備以下先決條件:

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

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

自訂工作流程或流程

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

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

要自訂您的 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 區塊。 將預設值true從 切換smartDeploymentfalse。 一旦此變更被提交,智慧部署功能即被關閉,未來所有針對此連線的部署都會將儲存庫中所有相關內容檔案重新部署到連接的工作區。

    • 要修改部署路徑

      在本節預設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 文件中關於 GitHub Actions 及編輯 GitHub 工作流程的相關內容。

重要事項

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

用參數檔案擴展部署

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

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

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

  1. sentinel-deployment.config中有映射嗎?
    更多資訊請參見「自訂您的連線設定」。

  2. 有沒有一個工作區映射的參數檔案? 是的,內容檔案位於同一目錄中,並有一個符合以下模式之一的工作區映射參數檔:
    。<工作空間ID.bicepparam.parameters-WorkspaceID>
    <>.json

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

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

重要事項

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

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

自訂你的連線設定

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

  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 檔案的完整路徑名稱。

有一個範例資料庫展示部署設定檔及三種參數映射方法。 欲了解更多資訊,請參閱 Microsoft Sentinel CICD 倉庫範例