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

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

可通过两种主要方法来自定义存储库内容到 Microsoft Sentinel 工作区的部署。 每种方法使用不同的文件和语法,因此请考虑从以下示例入手。

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

重要

Microsoft Sentinel 存储库功能目前以预览版提供。 有关 beta 版本、预览版或其他尚未正式发布的版本的 Azure 功能所适用的更多法律条款,请参阅 Microsoft 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 默认值从 true 切换为 false。 提交此更改后,智能部署功能就会关闭。此连接的所有未来部署都会将存储库的所有相关内容文件重新部署到连接的工作区。

    • 修改部署路径:

      在为 on 部分显示的默认配置中,paths 部分中第一行中的通配符 (**) 表示整个分支位于部署触发器的路径中。

      此默认配置意味着,每次将内容推送到分支的任何部分时,将触发部署工作流。

      稍后在该文件中,jobs 部分包含以下默认配置:directory: '${{ github.workspace }}'。 此行指示整个 GitHub 分支位于内容部署的路径中,而不会筛选任何文件夹路径。

      若要仅从特定文件夹路径部署内容,请将其添加到 pathsdirectory 配置。 例如,若要仅从名为 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": 部分。 目前不支持通配符匹配。

  • 若要排除内容文件,请使用单个 .json 内容文件的完整路径名修改 "excludecontentfiles": 节。

  • 映射参数

    部署脚本会接受映射参数的三个方法,如使用参数文件缩放部署中所述。 通过 sentinel-deployment.config 映射参数的优先级最高,可保证给定的参数文件映射到其关联的内容文件。 请修改 "parameterfilemappings": 部分,在其中适应你自己的目标连接的工作区 ID 和单个 .json 文件的完整路径名。

提供了示例存储库,演示了部署配置文件和所有三个参数映射方法。 有关详细信息,请参阅 Microsoft Sentinel CICD 存储库示例