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

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

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

Name Язык License
Антивредоносное ПО Защита от вредоносных программ в Windows с помощью Microsoft Defender для конечной точки. Проверяет наличие вредоносных программ и прерывает сборку, если обнаружен вредоносный контент. Выполняется по умолчанию на последнем агенте Windows. Не открытый исходный код
Bandit Python Лицензия 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

Note

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

Prerequisites

Перед установкой расширения убедитесь, что вы соответствуете следующим требованиям:

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

Установка расширения

Чтобы установить расширение Microsoft Security DevOps, выполните следующие действия.

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

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

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

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

    Note

    Если вы уже установили расширение Microsoft Security DevOps, оно указано во вкладке «Установлены».

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

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

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

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

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

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

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

Tip

Опционально: установите расширение вкладки SARIF SAST Scans, если хотите, чтобы результаты анализа SARIF отображались автоматически во вкладке Scans конвейера.

Чтобы настроить конвейер с помощью 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*.
    

    Note

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

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

    Note

    Установите расширение вкладки SARIF SAST Scans для автоматического отображения результатов анализа SARIF во вкладке Scans конвейера.

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

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

Используйте задачу PublishBuildArtifacts@1 для публикации файлов SARIF в артефакт CodeAnalysisLogs. Следующий шаг YAML публикует файл результатов в формате SARIF как артефакт сборки, чтобы Defender для облака мог обработать результаты анализа:

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

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