Поделиться через


Настройка развертываний репозитория (общедоступная предварительная версия)

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

  • Измените рабочий процесс GitHub или конвейер DevOps, чтобы настроить параметры развертывания, такие как триггер развертывания подключения, путь развертывания или использование смарт-развертываний.

  • Используйте недавно представленный файл конфигурации для управления приоритетным порядком развертываний содержимого, исключить определенные файлы содержимого из этих развертываний или сопоставить файлы параметров с определенными файлами содержимого.

Внимание

Функция Репозитории Microsoft Sentinel сейчас предоставляется в ПРЕДВАРИТЕЛЬНОЙ ВЕРСИИ. Дополнительные юридические условия, применимые к функциям Azure, которые предоставляются в бета-версии, предварительной версии или еще не выпущены в общедоступной версии по другим причинам, см. на странице Дополнительные условия использования Azure для предварительных версий в Microsoft Azure.

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

Сейчас Microsoft Sentinel поддерживает подключения только к репозиториям GitHub и Azure DevOps. Прежде чем подключить рабочую область Microsoft Sentinel к репозиторию системы управления версиями, убедитесь, что у вас есть:

  • Роль Владелец в группе ресурсов, которая содержит рабочую область Microsoft Sentinel, или комбинация ролей Администратор доступа пользователей и Участник Sentinel для создания подключения.
  • Доступ к репозиторию GitHub или Project Администратор istrator для доступа к репозиторию Azure DevOps
  • Включение GitHub Actions и Azure DevOps Pipelines.
  • Убедитесь, что пользовательские файлы содержимого, которые нужно развернуть в рабочих областях, находятся в соответствующих шаблонах Azure Resource Manager (ARM)

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

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

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

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

Чтобы настроить рабочий процесс развертывания 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`
      

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

      Дополнительные сведения см. в документации 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 по GitHub Actions и редактированию рабочих процессов GitHub.

Внимание

В GitHub и Azure DevOps убедитесь, что путь триггера соответствует каталогам путей развертывания.

Масштабирование развертываний с помощью файлов параметров

Вместо передачи параметров в виде встроенных значений в файлах содержимого рекомендуется использовать JSON-файл, содержащий значения параметров. Затем сопоставите эти файлы JSON параметров с связанными файлами содержимого Sentinel, чтобы лучше масштабировать развертывания в разных рабочих областях. Существует несколько способов сопоставления файлов параметров с файлами Sentinel, а конвейер развертывания репозиториев рассматривает их в следующем порядке:

A diagram showing the precedence of parameter file mappings.

  1. Существует ли сопоставление в sentinel-deployment.config? Дополнительные сведения см. в разделе "Настройка конфигурации подключения".
  2. Существует ли файл параметров, сопоставленный с рабочей областью? Да, это файл параметров в том же каталоге, что и файлы содержимого, заканчивающиеся параметром .parameters-WorkspaceID<>.json
  3. Существует ли файл параметров по умолчанию? Да, любой файл параметров в том же каталоге, что и файлы содержимого, заканчивающиеся .parameters.json

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

Внимание

После определения соответствия файла параметров на основе указанного выше приоритета сопоставления конвейер будет игнорировать все оставшиеся сопоставления.

Изменение сопоставленного файла параметров, указанного в файле sentinel-deployment.config, активирует развертывание его парного файла содержимого. Добавление или изменение файла .parameters-WorkspaceID<>.json или .parameters.json также активирует развертывание парных файлов содержимого вместе с новыми измененными параметрами, если только сопоставления параметров с более высоким приоритетом не создаются. Другие файлы содержимого не развертываются, пока функция интеллектуального развертывания по-прежнему включена в файле определения рабочего процесса или конвейера.

Настройка конфигурации подключения

Сценарий развертывания для репозиториев поддерживает использование файла конфигурации развертывания для каждой ветви репозитория по состоянию на июль 2022 года. JSON-файл конфигурации помогает сопоставлять файлы параметров с соответствующими файлами содержимого, определять приоритеты содержимого в развертываниях и исключать определенное содержимое из развертываний.

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

    Screenshot of a repository root directory. The RepositoriesSampleContent is shown with the location of the sentinel-deployment.config file.

  2. Включите структурированное содержимое JSON в три необязательных раздела, "prioritizedcontentfiles":"excludecontentfiles":и "parameterfilemappings":т. е. Если разделы не включены или файл конфигурации не указан, процесс развертывания по-прежнему выполняется. Недопустимые или неопознанные разделы игнорируются.

Ниже приведен пример всего содержимого допустимого файла sentinel-deployment.config . Этот пример также можно найти в примере репозиториев CICD Sentinel.

{
  "prioritizedcontentfiles": [
    "parsers/Sample/ASimAuthenticationAWSCloudTrail.json",
    "workbooks/sample/TrendMicroDeepSecurityAttackActivity_ARM.json",
    "Playbooks/PaloAlto-PAN-OS/PaloAltoCustomConnector/azuredeploy.json"
  ], 
  "excludecontentfiles": [
     "Detections/Sample/PaloAlto-PortScanning.json",
     "parameters"
  ],
  "parameterfilemappings": {
    "879001c8-2181-4374-be7d-72e5dc69bd2b": {
      "Playbooks/PaloAlto-PAN-OS/Playbooks/PaloAlto-PAN-OS-BlockIP/azuredeploy.json": "parameters/samples/parameter-file-1.json"
    },
    "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": раздел. Wild карта сопоставление в настоящее время не поддерживается.

  • Чтобы исключить файлы содержимого, измените "excludecontentfiles": раздел с полными именами путей отдельных файлов содержимого .json.

  • Чтобы сопоставить параметры, выполните следующие действия.

    Скрипт развертывания принимает три метода сопоставления параметров, как описано в разделе "Масштабирование развертываний с помощью файлов параметров". Сопоставление параметров с помощью sentinel-deployment.config имеет наивысший приоритет и гарантирует, что заданный файл параметров сопоставляется с связанными файлами содержимого. Просто измените "parameterfilemappings": раздел с идентификатором рабочей области целевого подключения и полными именами путей отдельных файлов .json.

Следующие шаги

Пример репозитория доступен для демонстрации файла конфигурации развертывания и всех трех методов сопоставления параметров. Дополнительные сведения см. в примере репозиториев CICD Sentinel.

Дополнительные сведения о шаблонах ARM см. в следующих ресурсах: