Укрепление интеграции безопасности и репозитория

С помощью этого обновления мы улучшаем безопасность и проверку подлинности в Azure DevOps. Совместные секреты для OAuth Azure DevOps обеспечивают беспрепятственную смену секретов, а GitHub Advanced Security обеспечивает более эффективную фильтрацию на странице обзора безопасности, гарантируя правильную маршрутизацию публикации зависимостей и уведомлений о сканировании кода в несколько репозиториев.

Обновления размещенных образов в Azure Pipelines, включая Ubuntu-24.04, Windows 2025 и mac-OS 15 Sequoia, обеспечивают всё более безопасную и надёжную работу.

Дополнительные сведения см. в заметках о выпуске.

Общие сведения

Расширенная безопасность GitHub для Azure DevOps

Пайплайны Azure

Планы тестирования

Общие сведения

Перекрывающиеся секреты для Azure DevOps OAuth

Мы рады представить новую функцию перекрывающихся секретов в Azure DevOps OAuth, предназначенную для повышения безопасности и оптимизации смены секретов. Эта функция позволяет добавить новый секрет в клиент OAuth, пока предыдущая остается активной, обеспечивая непрерывную работу приложений. Эти секреты можно управлять программными средствами с помощью API или с помощью пользовательского интерфейса страницы приложений Visual Studio.

В рамках текущих улучшений безопасности azure DevOps OAuth планируется отменять в 2026 году. Мы рекомендуем вам перейти на Идентификатор Microsoft Entra ID OAuth для улучшения функций безопасности и долгосрочных инвестиций. На данный момент мы рекомендуем регулярно менять секреты с помощью новой функции перекрытия секретов.

Устаревание тегов статистики языков на странице сводки проекта

В ближайшие недели мы будем убирать теги статистики языков со страницы «Сводка проекта». Удаление этих тегов поможет оптимизировать производительность, что приведет к более быстрой загрузке и более быстрому интерфейсу.

Обновление будет происходить автоматически, не требуются никакие действия с вашей стороны.

Добавлено разрешение на "Планы доставки"

В рамках наших текущих улучшений безопасности мы представили новое разрешение на управление планами доставки на уровне проекта. Это изменение было реализовано, чтобы предотвратить непреднамеренный доступ для чтения и записи для пользователей в группе Readers.

Расширенная безопасность GitHub для Azure DevOps

Страница риска безопасности, улучшенная с помощью новых столбцов и параметров фильтрации

На вкладке Риск вы найдете недавно добавленные столбцы, отображающие новые, исправленные и отклоненные оповещения системы безопасности в вашей организации. Мы добавили параметры фильтрации для уточнения результатов по проекту, инструменту (секретам, зависимостям или результатам сканирования кода) и фильтру на основе времени для определения границ поиска.

Кроме того, при применении фильтра добавляется параметр запроса URL-адреса, что позволяет совместно использовать предварительно отфильтрованное представление с другими пользователями в организации.

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

Ранее, когда определение конвейера было размещено в одном репозитории и исходном коде для сканирования с помощью GitHub Advanced Security было в другом, результаты были обработаны и отправлены в неправильный репозиторий. Вместо публикации оповещений в репозитории с исходным кодом они появились в репозитории, где был определен конвейер.

Теперь проверка зависимостей и проверка кода правильно направляет оповещения в репозиторий, содержащий сканированный исходный код в сценариях с несколькими репозиториями.

Чтобы включить эту функцию, задайте переменную среды конвейера advancedsecurity.publish.repository.infer: true, чтобы вывести репозиторий для публикации из репозитория в рабочем каталоге.

Кроме того, если вы явно не извлекаете репозиторий или не используете псевдоним для извлечения репозитория, используйте переменную advancedsecurity.publish.repository: $[ convertToJson(resources.repositories['YourRepositoryAlias']) ].

Фрагмент кода YAML:

  trigger:
  - main

resources:
  repositories:
    - repository: BicepGoat
      type: git
      name: BicepGoat
      ref: refs/heads/main
      trigger:
        - main

jobs:
  # Explicit - `advancedsecurity.publish.repository` explicitly defines the repository to submit SARIF to.
  - job: "AdvancedSecurityCodeScanningExplicit"
    displayName: "🛡 Infrastructure-as-Code Scanning (Explicit)"
    variables:
      advancedsecurity.publish.repository: $[ convertToJson(resources.repositories['BicepGoat']) ]
    steps:
      - checkout: BicepGoat
      - task: TemplateAnalyzerSarif@1
        displayName: Scan with Template Analyzer
      - task: AdvancedSecurity-Publish@1
        displayName: Publish to IaC Scanning Results to Advanced Security


  # Infer - `advancedsecurity.publish.repository.infer` specifies that the `AdvancedSecurity-Publish` must
  # infer repository to submit SARIF to from the working directory on the build agent.
  - job: "AdvancedSecurityCodeScanningInfer"
    displayName: "🛡 Infrastructure-as-Code Scanning (Infer)"
    variables:
      advancedsecurity.publish.repository.infer: true
    steps:
      - checkout: BicepGoat
      - task: TemplateAnalyzerSarif@1
        displayName: Scan with Template Analyzer
      - task: AdvancedSecurity-Publish@1
        displayName: Publish to IaC Scanning Results to Advanced Security

Перехватчики служб для оповещений GitHub Advanced Security для Azure DevOps (предварительная версия)

Теперь вы можете настроить вебхуки для событий оповещения в GitHub Advanced Security, в том числе:

  • Создано новое оповещение
  • Измененные данные оповещений
  • Изменено состояние оповещения

Как и другие события репозитория, можно фильтровать по репозиторию и ветви. В частности, для оповещений можно фильтровать по типу генерации оповещений (зависимости, сканирование кода или секреты) и серьезности оповещений.

Чтобы принять участие в предзаписи, заполните форму интереса или отправьте нам электронное письмо!

Поддержка pnpm версии 9 внедряется в GitHub Advanced Security для сканирования зависимостей Azure DevOps.

При достижении конца срока действия pnpm версии 8 в конце апреля следующее обновление проверки зависимостей будет включать поддержку pnpm версии 9. Это обновление отвечает на запрос сообщества разработчиков для поддержки pnpm версии 9.

Пайплайны Azure

Обновления размещённых образов

Мы развертываем обновления, чтобы обеспечить безопасность и актуальность хостинговых агентов Azure Pipelines. Эти обновления включают в себя добавление поддержки для Ubuntu-24.04, образов Windows 2025 и macOS-15 Sequoia, одновременно прекращая поддержку старых образов, таких как Ubuntu-20.04 и Windows Server 2019.

Дополнительные сведения см. в нашей записи блога .

macOS-15 Sequoia общедоступен

Образ macOS-15 будет доступен в размещенных агентах Azure Pipelines с 1 апреля. Чтобы использовать этот образ, обновите файл YAML, чтобы включить vmImage:'macos-15':

- job: macOS15
  pool:
    vmImage: 'macOS-15'
  steps:
  - bash: |
      echo Hello from macOS Sequoia
      sw_vers

Для программного обеспечения, установленного на macOS-15, см. конфигурацию образа .

Изображение macOS-14 по-прежнему будет использоваться при указании macOS-latest. Мы обновим macOS-latest, чтобы использовать macOS-15 в апреле.

Образ Windows-2025 доступен в предварительной версии

Теперь образ windows-2025 доступен в предварительном просмотре для агентов, размещённых в Azure Pipelines. Чтобы использовать этот образ, обновите файл YAML, чтобы включить vmImage:'windows-2025':

- job: win2025
  pool:
    vmImage: 'windows-2025'
  steps:
  - pwsh: |
      Write-Host "(Get-ComputerInfo).WindowsProductName"
      Get-ComputerInfo | Select-Object WindowsProductName
      Write-Host "`$PSVersionTable.OS"
      $PSVersionTable.OS

Установленное программное обеспечение Windows Server 2025 можно найти в разделе конфигурации образа , как показано на изображении.

Образ конвейера ubuntu-latest начнется с ubuntu-24.04

В ближайшие недели задания конвейера, указывающие ubuntu-latest, начнут использовать вместо ubuntu-24.04ubuntu-22.04.

Для получения рекомендаций по задачам, использующим средства, которые больше не представлены на изображении ubuntu-24.04, см. запись нашего блога . Чтобы продолжать использовать Ubuntu 22.04, используйте метку образа ubuntu-22.04:

- job: ubuntu2404
  pool:
    vmImage: 'ubuntu-24.04'
  steps:
  - bash: |
      echo Hello from Ubuntu 24.04
      lsb_release -d
  - pwsh: |
      Write-Host "`$PSVersionTable.OS"
      $PSVersionTable.OS

Образ конвейера ubuntu-20.04 устарел и будет прекращен 1 апреля

Мы не рекомендуем использовать поддержку образа Ubuntu 20.04 в Azure Pipelines, так как она скоро завершится. Найдите план нерекомендуемого использования с расписанием браун-аута в нашем блоге.

Федерация идентичности рабочих нагрузок использует издателя Entra

Чуть более года назад мы предоставили федерацию удостоверений для рабочих нагрузок в общедоступное пользование. Настройка подключения службы через федерацию удостоверений нагрузки позволяет избежать использования секретов. Идентификатор (регистрация приложения, управляемый идентификатор), который поддерживает подключение службы, может использоваться только для деловой цели: подключение службы, настроенное в федеративных учетных данных идентификатора.

Теперь мы изменим формат федеративных учетных данных для новых подключений к службе Azure и Docker. Существующие подключения к службе будут работать как раньше.

  Эмитент Azure DevOps Издатель Entra (новые подключения к службе)
Эмитент https://vstoken.dev.azure.com/<organization id> https://login.microsoftonline.com/<Entra tenant id>/v2.0
Тема sc://<organization name>/<project name>/<service connection name> <entra prefix>/sc/<organization id>/<service connection id>

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

Шаги по созданию подключения к службе не изменяются, и в большинстве случаев новый эмитент не виден. При самостоятельной настройке подключения к службе Azureвы увидите отображение новых федеративных учетных данных.

Скопируйте эти значения, как и раньше, когда создаете федеративные учетные данные для регистрации приложения или управляемой идентичности.

Автоматизация

При создании подключения службы в автоматизации с помощью REST APIиспользуйте федеративные учетные данные, возвращаемые API:

authorization.parameters.workloadIdentityFederationIssuer
authorization.parameters.workloadIdentityFederationSubject

Аналогично, при создании подключения к службе с использованием поставщика Terraform azuredevops, ресурс azuredevops_serviceendpoint_azurerm возвращает атрибуты workload_identity_federation_issuer и workload_identity_federation_subject.

Дополнительные сведения

задача Gradle@4

Была создана новая задача Gradle@4 с поддержкой Gradle 8.0. Встроенный параметр покрытия кода удаляется из задачи Gradle начиная с Gradle@4. Чтобы использовать покрытие кода с помощью Gradle в конвейере:

  • Укажите плагины покрытия кода в файле build.gradle. Дополнительные сведения см. в вариантах анализа кода Gradle .
  • Используйте задачу PublishCodeCoverageResults@2 в вашем конвейере после задачи Gradle@4.

Настройка анализа SonarQube была перенесена в расширения SonarQube или SonarCloud в задаче Prepare Analysis Configuration.

Личность пользователя, запросившего выполнение этапа

Чтобы повысить безопасность ваших конвейеров YAML, вам может потребоваться узнать, кто инициировал запуск этапа. Для решения этой проблемы были добавлены две новые предопределенные переменные, Build.StageRequestedBy и Build.StageRequestedById. Эти переменные похожи на переменные Build.RequestedFor и Build.RequestedForId, но относятся к этапу, а не к запуску.

Когда пользователь явно активирует процесс, например, в случае ручного запуска этапа или повторного запуска, его идентификация используется для заполнения двух переменных.

Планы тестирования

Улучшения задачи публикации результатов покрытия кода, версия 2

В этом обновлении мы добавляем несколько улучшений в задачу версии 2.

  • Расширенная поддержка различных форматов покрытия кода, включая: .coverage, .covx, .covb, .cjson,.xml, .lcov и pycov1.
  • Создание комплексного файла cjson (и отчета о охвате кода), содержащего подробные сведения о охвате кода, такие как имена файлов, строки, покрытые или не охваченные и т. д.
  • Поддержка покрытия изменений (покрытие PR): вторая версия может генерировать комментарии PR для разных языков в одном проекте.
  • Теперь задача версии 2 поддерживает задачу проверки качества сборки, которая не поддерживается в задаче версии 1.

Экспорт тестовых случаев с настраиваемыми столбцами в XLSX

Теперь можно экспортировать тестовые случаи с настраиваемыми столбцами в XLSX. На основе отзывов планы тестирования поддерживают экспорт тестовых случаев с настраиваемыми столбцами, что обеспечивает большую гибкость и контроль над общими и анализируемыми данными. Это улучшение помогает адаптировать экспорт в соответствии с вашими потребностями, обеспечивая релевантную и действимую информацию, которую вы экспортируете.

Дальнейшие действия

Примечание.

Эти функции будут развернуты в течение следующих двух-трех недель.

Перейдите к Azure DevOps и посмотрите.

Как предоставить отзыв

Мы хотели бы услышать то, что вы думаете об этих функциях. Используйте меню справки, чтобы сообщить о проблеме или указать предложение.

Сделать предложение

Вы также можете получить советы и ответы на ваши вопросы от сообщества на Stack Overflow.

Спасибо

Сильвиу Андреика