你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

(公共预览版) 自定义存储库部署

有两种主要方法可以自定义存储库内容部署到Microsoft Sentinel工作区。 每个方法使用不同的文件和语法,因此请考虑这些示例来帮助你入门。

自定义方法 涵盖的部署选项
GitHub 工作流
DevOps 管道
自定义连接的部署触发器
自定义部署路径
智能部署启用
配置文件 控制内容部署的优先级顺序
选择从部署 中排除 特定内容文件
通过将参数文件映射到特定内容文件,跨不同工作区缩放部署

重要

Microsoft Sentinel存储库功能目前为预览版。 请参阅Microsoft Azure预览版的补充使用条款,了解适用于处于 beta 版、预览版或其他尚未正式发布的Azure功能的更多法律条款。

先决条件

若要自定义存储库部署,必须存在存储库连接。 有关创建连接的详细信息,请参阅 从存储库部署自定义内容。 建立连接后,满足以下先决条件:

  • 协作者访问 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 默认值从 truefalse切换到 。 提交此更改后,智能部署功能将关闭,并且此连接的所有未来部署会将存储库的所有相关内容文件重新部署到连接的工作区。

    • 修改部署路径

      在部分显示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

通过配置文件映射参数文件或在文件名中指定工作区 ID,避免与多个工作区部署冲突。

重要

根据映射优先级确定参数文件匹配后,管道将忽略任何剩余的映射。

修改 sentinel-deployment.config 中列出的映射参数文件会触发其配对内容文件的部署。 添加或修改工作区映射参数文件或默认参数文件还会触发配对内容文件以及新修改的参数的部署,除非有更高的优先级参数映射。 只要在工作流/管道定义文件中仍启用智能部署功能,就不会部署其他内容文件。

自定义连接配置

从 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 存储库示例