Настройка развертываний репозитория

Существует два основных способа настроить развертывание содержимого репозитория в рабочие области Microsoft Sentinel. Каждый метод использует разные файлы и синтаксис, поэтому рассмотрим эти примеры, чтобы начать работу. Прежде чем начать, убедитесь, что необходимые условия для подключения к репозиторию и развертывания выполнены.

Метод настройки Описанные варианты развертывания
Рабочий процесс GitHub
Конвейер DevOps
Настройка триггера развертывания подключения
Настройка пути развертывания
Включение поддержки интеллектуальных развертываний
Файлы конфигурации Управление приоритетным порядком развертываний содержимого
Выбор исключения определенных файлов содержимого из развертываний
Масштабирование развертываний в разных рабочих областях путем сопоставления файлов параметров с определенными файлами содержимого

Предварительные условия

Чтобы настроить развертывание репозитория, вам потребуется существующее подключение к репозиторию. Чтобы создать его, см. статью "Развертывание пользовательского содержимого из репозитория". После создания подключения убедитесь, что выполнены следующие требования:

  • Доступ участника к вашему репозиторию GitHub или доступ администратора проекта к вашему репозиторию Azure DevOps
  • Действия, включенные для GitHub и Pipelines, включенные для Azure DevOps
  • Убедитесь, что пользовательские файлы содержимого, которые вы хотите разместить в рабочих областях, имеют поддерживаемый формат. Поддерживаемые форматы см. в статье Планирование содержимого репозитория.

Дополнительные сведения о развертываемых типах контента см. в статье Планирование содержимого репозитория.

Настройка рабочего процесса или конвейера

Стандартный рабочий процесс развёртывает только контент, изменённый с момента последнего развёртывания, на основе коммитов в репозиторий. Настройте рабочий процесс или конвейер для настройки различных триггеров развертывания или для развертывания контента исключительно из определённой корневой папки.

Выберите одну из следующих вкладок в зависимости от типа подключения:

Чтобы настроить рабочий процесс развертывания GitHub:

  1. В GitHub перейдите в репозиторий и найдите рабочий процесс в каталоге .github/workflows .

    Файл рабочего процесса — это файл YML, начинающийся с sentinel-deploy-xxxxx.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`
      

      Измените эти параметры, например, чтобы запланировать периодический запуск рабочего процесса или объединить различные события рабочего процесса.

      Для получения дополнительной информации см. раздел Configuring events workflow в документации GitHub.

    • Отключить умные развертывания:

      Поведение умного развертывания настроено отдельно от триггера рабочего процесса в on разделе. Перейдите к разделу jobs рабочего процесса. smartDeployment Переключите значение по умолчанию с true на false. После фиксации этого изменения функция интеллектуального развертывания отключается, а все будущие развертывания для этого подключения повторно развертывают все соответствующие файлы содержимого репозитория в подключенных рабочих областях.

    • Чтобы изменить путь развертывания:

      В конфигурации по умолчанию, показанной для раздела on, подстановочные знаки (**) в первой строке раздела paths указывают, что для триггеров развертывания используется весь путь ветки.

      Эта настройка по умолчанию означает, что рабочий процесс развертывания запускается каждый раз, когда содержимое отправляется в любую часть подключённой ветки.

      В jobs разделе стандартная конфигурация включает directory: '${{ github.workspace }}'. Настройка directory показывает, что вся ветка 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 и 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 г. JSON-файл конфигурации помогает сопоставлять файлы параметров с соответствующими файлами содержимого, определять приоритеты определенного содержимого в развертываниях и исключать определенное содержимое из развертываний.

Важно!

Создание, удаление или изменение файлаsentinel-deployment.config активирует полное развертывание всего содержимого репозитория в соответствии с обновленной конфигурацией.

  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": раздел, указав идентификатор рабочей области целевого подключения и полные имена путей отдельных .json файлов.