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


Сканирование подключенного репозитория 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. Щелкните значок редактирования этого файла (карандаша).

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

  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. Выберите Commit new file (Зафиксировать новый файл).

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

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

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

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

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

  10. Чтобы просмотреть результаты сканирования, перейдите к Defender для облака> DevOps security (без предварительных требований GHAS) или проверка кода безопасности>в собственном коде в 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 и как просмотреть результаты.

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