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


Настройка расширения Microsoft Security DevOps Azure DevOps

Microsoft Security DevOps — это приложение командной строки, которое интегрирует статический анализ в жизненный цикл разработки. Он устанавливает, настраивает и запускает последние анализаторы SDL, безопасности и соответствия требованиям, используя переносимые конфигурации, чтобы обеспечить согласованное, детерминированное выполнение в средах.

Microsoft Security DevOps использует следующие средства с открытым кодом:

Имя Language Лицензия
Антивредоносное ПО Защита от вредоносных программ в Windows с помощью Microsoft Defender for Endpoint. Проверяет наличие вредоносных программ и прерывает сборку, если обнаружен вредоносный контент. Выполняется по умолчанию на последнем агенте Windows. Не открытый исходный код
Bandit Питон Лицензия Apache 2.0
BinSkim Двоичные целевые объекты: Windows, ELF Лицензия MIT
Checkov Terraform, план Terraform, CloudFormation, AWS SAM, Kubernetes, Helm chart, Kustomize, Dockerfile, Serverless, Bicep, OpenAPI, ARM Лицензия Apache 2.0
ESLint JavaScript Лицензия MIT
IaCFileScanner Средство сопоставления шаблонов для Terraform, CloudFormation, шаблонов ARM и Bicep Не открытый исходный код
Анализатор шаблонов Шаблоны ARM, Bicep Лицензия MIT
Terrascan Terraform (HCL2), Kubernetes (JSON/YAML), Helm v3, Kustomize, Dockerfiles, CloudFormation Лицензия Apache 2.0
Trivy Образы контейнеров, инфраструктура как код (IaC) Лицензия Apache 2.0

Замечание

По состоянию на 20 сентября 2023 г. средство сканирования секретов (CredScan) в расширении Microsoft Security DevOps (MSDO) для Azure DevOps устарело. Сканирование секретов MSDO заменяется на расширенную безопасность GitHub для Azure DevOps.

Предпосылки

  • Для установки расширения требуются права администратора коллекции проектов в организации Azure DevOps. Если у вас нет доступа, запросите его у администратора Azure DevOps на этапе установки.

Настройка расширения Microsoft Security DevOps Azure DevOps

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

  2. Перейдите к Корзина покупок>Управление расширениями.

    Снимок экрана, на котором показано, как перейти к экрану управления расширениями.

  3. Выберите Общий.

    Замечание

    Если вы уже установили расширение Microsoft Security DevOps, оно отображается на вкладке "Установленные".

  4. Выберите Microsoft Security DevOps.

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

  5. Нажмите Установить.

  6. Выберите соответствующую организацию в раскрывающемся меню.

  7. Нажмите Установить.

  8. Выберите "Перейти к организации".

Настройка конвейеров с помощью YAML

  1. Войдите в Azure DevOps.

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

  3. Перейдите в Пайплайны>Создать новый пайплайн.

    Снимок экрана, показывающий, где найти создание конвейера в DevOps.

  4. Выберите Azure Repos Git.

    Снимок экрана, на котором показано, куда перейти, чтобы выбрать репозиторий Azure Git.

  5. Выберите соответствующий репозиторий.

    Снимок экрана: место выбора репозитория.

  6. Выберите Стартовый конвейер.

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

  7. Вставьте следующий YAML в конвейер:

    # Starter pipeline
    # Start with a minimal pipeline that you can customize to build and deploy your code.
    # Add steps that build, run tests, deploy, and more:
    # https://aka.ms/yaml
    trigger: none
    pool:
      # ubuntu-latest also supported.
      vmImage: 'windows-latest'
    steps:
    - task: MicrosoftSecurityDevOps@1
      displayName: 'Microsoft Security DevOps'
      # inputs:    
        # config: string. Optional. A file path to an MSDO configuration file ('*.gdnconfig'). Vist the MSDO GitHub wiki linked below for additional configuration instructions
        # policy: 'azuredevops' | 'microsoft' | 'none'. Optional. The name of a well-known Microsoft policy to determine the tools/checks to run. If no configuration file or list of tools is provided, the policy may instruct MSDO which tools to run. Default: azuredevops.
        # categories: string. Optional. A comma-separated list of analyzer categories to run. Values: 'code', 'artifacts', 'IaC', 'containers'. Example: 'IaC, containers'. Defaults to all.
        # languages: string. Optional. A comma-separated list of languages to analyze. Example: 'javascript,typescript'. Defaults to all.
        # tools: string. Optional. A comma-separated list of analyzer tools to run. Values: 'bandit', 'binskim', 'checkov', 'eslint', 'templateanalyzer', 'terrascan', 'trivy'. Example 'templateanalyzer, trivy'
        # break: boolean. Optional. If true, will fail this build step if any high severity level results are found. Default: false.
        # publish: boolean. Optional. If true, will publish the output SARIF results file to the chosen pipeline artifact. Default: true.
        # artifactName: string. Optional. The name of the pipeline artifact to publish the SARIF result file to. Default: CodeAnalysisLogs*.
    

    Замечание

    Для интеграции с Defender for Cloud требуется имя артефакта 'CodeAnalysisLogs'. Дополнительные параметры конфигурации инструментов и переменные среды см. в вики-сайте Microsoft Security DevOps

  8. Нажмите кнопку "Сохранить и запустить ", чтобы зафиксировать и запустить конвейер.

    Замечание

    Установите расширение вкладки SARIF SAST Scans, чтобы автоматически отобразить результаты анализа SARIF на вкладке "Сканирование конвейера".

Отправка результатов из сторонних средств безопасности в Defender для облака

Defender для облака может получать результаты SARIF из других средств безопасности для видимости кода в облако. Чтобы отправить эти результаты, убедитесь, что репозитории Azure DevOps подключены к Defender для облака. После подключения Defender для облака постоянно отслеживает CodeAnalysisLogs артефакт для выходных данных SARIF.

Используйте задачу PublishBuildArtifacts@1 для публикации файлов SARIF в артефакт CodeAnalysisLogs. Рассмотрим пример.

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: 'results.sarif'
    ArtifactName: 'CodeAnalysisLogs'

Defender для облака отображает эти результаты в оценке репозиториев Azure DevOps, для которых должны быть устранены результаты сканирования кода для затронутого репозитория.