Сканирование подключенного репозитория GitHub или проекта Azure DevOps

Вы можете настроить Microsoft Security DevOps для сканирования подключенного репозитория GitHub или проекта Azure DevOps. Используйте действие GitHub или расширение Azure DevOps для запуска Microsoft Security DevOps только в исходном коде инфраструктуры в виде кода (IaC) и снижения среды выполнения конвейера.

В этой статье показано, как применить файл конфигурации YAML шаблона для сканирования подключенного репозитория или проекта специально для проблем с безопасностью IaC с помощью правил Microsoft Security DevOps.

Необходимые компоненты

  • Для Microsoft Security DevOps настройте действие GitHub или расширение Azure DevOps на основе системы управления исходным кодом:
    • Если репозиторий находится в GitHub, настройте действие Microsoft Security DevOps GitHub.
    • Если вы управляете исходным кодом в Azure DevOps, настройте расширение Microsoft Security DevOps Azure DevOps.
  • Убедитесь, что в репозитории есть шаблон IaC.

Настройка и запуск действия GitHub для проверки подключенного исходного кода IaC

Чтобы настроить действие и просмотреть результаты сканирования в GitHub, выполните приведенные ниже действия.

  1. Войдите в GitHub.

  2. Перейдите на главную страницу репозитория.

  3. В каталоге файла выберите рабочие процессы>github>msdevopssec.yml.

    Дополнительные сведения о работе с действием в GitHub см. в разделе "Предварительные требования".

  4. Щелкните значок редактирования этого файла (карандаша).

    Screenshot that highlights the Edit this file icon for the msdevopssec.yml file.

  5. В разделе "Запуск анализаторов" файла YAML добавьте следующий код:

    with:
        categories: 'IaC'
    

    Примечание.

    Значения чувствительны к регистру.

    Приведем пример:

    Screenshot that shows the information to add to the YAML file.

  6. Выберите "Зафиксировать изменения". . . .

  7. Выберите " Зафиксировать изменения".

    Screenshot that shows where to select Commit changes on the GitHub page.

  8. (Необязательно) Добавьте шаблон IaC в репозиторий. Если у вас уже есть шаблон IaC в репозитории, пропустите этот шаг.

    Например, зафиксируйте шаблон IaC, который можно использовать для развертывания базового веб-приложения Linux.

    1. Выберите файл azuredeploy.json.

      Screenshot that shows where the azuredeploy.json file is located.

    2. Выберите Raw (Необработанный формат).

    3. Скопируйте все сведения в файле, как показано в следующем примере:

      {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
          "webAppName": {
            "type": "string",
            "defaultValue": "AzureLinuxApp",
            "metadata": {
              "description": "The base name of the resource, such as the web app name or the App Service plan."
            },
            "minLength": 2
          },
          "sku": {
            "type": "string",
            "defaultValue": "S1",
            "metadata": {
              "description": "The SKU of the App Service plan."
            }
          },
          "linuxFxVersion": {
            "type": "string",
            "defaultValue": "php|7.4",
            "metadata": {
              "description": "The runtime stack of the current web app."
            }
          },
          "location": {
            "type": "string",
            "defaultValue": "[resourceGroup().location]",
            "metadata": {
              "description": "The location for all resources."
            }
          }
        },
        "variables": {
          "webAppPortalName": "[concat(parameters('webAppName'), '-webapp')]",
          "appServicePlanName": "[concat('AppServicePlan-', parameters('webAppName'))]"
        },
        "resources": [
          {
            "type": "Microsoft.Web/serverfarms",
            "apiVersion": "2020-06-01",
            "name": "[variables('appServicePlanName')]",
            "location": "[parameters('location')]",
            "sku": {
              "name": "[parameters('sku')]"
            },
            "kind": "linux",
            "properties": {
              "reserved": true
            }
          },
          {
            "type": "Microsoft.Web/sites",
            "apiVersion": "2020-06-01",
            "name": "[variables('webAppPortalName')]",
            "location": "[parameters('location')]",
            "kind": "app",
            "dependsOn": [
              "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]"
            ],
            "properties": {
              "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]",
              "siteConfig": {
                "linuxFxVersion": "[parameters('linuxFxVersion')]"
              }
            }
          }
        ]
      }
      
    4. В репозитории GitHub перейдите в папку .github/workflows .

    5. Нажмите кнопку "Добавить файл>", чтобы создать файл.

      Screenshot that shows you how to create a new file.

    6. Введите имя файла.

    7. Вставьте скопированные сведения в файл.

    8. Выберите Commit new file (Зафиксировать новый файл).

    Файл шаблона добавляется в репозиторий.

    Screenshot that shows that the new file you created is added to your repository.

  9. Убедитесь, что проверка Microsoft Security DevOps завершена:

    1. В репозитории выберите "Действия".

    2. Выберите рабочий процесс, чтобы просмотреть состояние действия.

  10. Чтобы просмотреть результаты сканирования, перейдите к оповещениям проверки кода безопасности>.

    Вы можете фильтровать по инструменту, чтобы просмотреть только выводы IaC.

Настройка и запуск расширения Azure DevOps для проверки подключенного исходного кода IaC

Чтобы настроить расширение и просмотреть результаты сканирования в Azure DevOps, выполните приведенные ниже действия.

  1. Выполните вход в Azure DevOps.

  2. Выберите проект.

  3. Выберите конвейеры.

  4. Выберите конвейер, в котором настроено расширение Azure DevOps для Microsoft Security DevOps.

  5. Выберите Изменить конвейер.

  6. В файле конфигурации YAML конвейера под строкой displayNameзадачи MicrosoftSecurityDevOps@1 добавьте следующий код:

    inputs:
        categories: 'IaC'
    

    Приведем пример:

    Screenshot that shows where to add the IaC categories line in the pipeline configuration YAML file.

  7. Выберите Сохранить.

  8. (Необязательно) Добавьте шаблон IaC в проект Azure DevOps. Если у вас уже есть шаблон IaC в проекте, пропустите этот шаг.

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

  10. Чтобы просмотреть результаты сканирования IaC, выберите конвейеры и выберите измененный конвейер.

  11. Дополнительные сведения см. в разделе "Выбор определенного запуска конвейера".

Просмотр сведений и сведений об исправлении для примененных правил IaC

Средства сканирования IaC, включенные в Microsoft Security DevOps, являются анализатором шаблонов (PSRule входит в анализатор шаблонов) и Terrascan.

Анализатор шаблонов выполняет правила для шаблонов Azure Resource Manager (шаблонов ARM) и шаблонов Bicep. Дополнительные сведения см. в правилах и исправлениях анализатора шаблонов.

Terrascan выполняет правила для шаблонов и шаблонов ARM для CloudFormation, Docker, Helm, Kubernetes, Kustomize и Terraform. Дополнительные сведения см. в правилах Terrascan.

Дополнительные сведения о средствах сканирования IaC, включенных в Microsoft Security DevOps, см. в следующих статье:

В этой статье вы узнали, как настроить действие GitHub и расширение Azure DevOps для Microsoft Security DevOps для проверки неправильной конфигурации безопасности IaC и как просмотреть результаты.

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