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


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

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

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

Предпосылки

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

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

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

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

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

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

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

    Снимок экрана: значок

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

    with:
        categories: 'IaC'
    

    Замечание

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

    Ниже приведен пример:

    Снимок экрана: сведения для добавления в YAML-файл.

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

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

    Снимок экрана, на котором показано, где выбрать

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

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

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

      Снимок экрана: расположение файла azuredeploy.json.

    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. Нажмите кнопку "Добавить файл>", чтобы создать файл.

      Снимок экрана, на котором показано, как создать новый файл.

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

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

    8. Выберите "Зафиксировать новый файл".

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

    Снимок экрана, на котором показано, что созданный файл добавляется в репозиторий.

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

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

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

  10. Чтобы просмотреть результаты сканирования, перейдите в Defender for Cloud>DevOps security (GHAS не требуется) или в разделе Security>уведомления о сканировании кода в GitHub (требуется лицензия GHAS).

Настройка и запуск расширения 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'
    

    Ниже приведен пример:

    Снимок экрана: место добавления строки категорий IaC в файл YAML конфигурации конвейера.

  7. Нажмите кнопку "Сохранить".

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

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

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

  11. Чтобы увидеть больше сведений, выберите конкретный запуск конвейера.

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

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

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

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

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

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

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

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