Общая доступность федерации удостоверений рабочей нагрузки для подключений службы Azure Resource Manager
Мы рады сообщить, что федерация удостоверений рабочей нагрузки теперь общедоступна в Azure Pipelines! Вы можете воспользоваться упрощенным интерфейсом без необходимости управлять секретами и сертификатами в подключениях к службе Azure.
В этом обновлении мы также просматриваем новую функцию в рамках расширенной интеграции GitHub с Azure Boards. Теперь вы можете связаться непосредственно с запросами на вытягивание GitHub или фиксациями. Больше не переключаться между окнами или вставки и вставки. Просто выберите нужный репозиторий, найдите нужный запрос на вытягивание или фиксацию и свяжите его!
Ознакомьтесь с заметками о выпуске, чтобы узнать больше об этих функциях.
Общие
- Окончательное уведомление об отмене альтернативных учетных данных
- Смена секретов самостоятельного секрета Azure Devops OAuth
Расширенная безопасность GitHub для Azure DevOps
- Фрагменты кода теперь доступны в представлении сведений об оповещении
- Усеченные секреты, отображаемые в обзоре оповещений
- Дополнительные уровни серьезности оповещений, добавленные для проверки кода оповещений
- Связанная подписка Azure, необходимая для включения GitHub Advanced Security для Azure DevOps
- Расширенные обновления API безопасности
- Расширенные разрешения безопасности теперь постоянно отображаются
Azure Boards
- Добавление ссылки на фиксацию или запрос на вытягивание GitHub (предварительная версия)
- Новые улучшения Центра Boards Hub
- Элементы управления разработки и развертывания
Azure Pipelines
- Федерация удостоверений рабочей нагрузки для подключений к службе Azure Resource Manager теперь общедоступна
- Внеполняя установка средства выполнения задач Node 6
- Отложенное утверждение
- Последовательное согласование утверждений и проверок
- Проверка и сохранение по умолчанию при редактировании конвейеров YAML
Azure Repos
Azure Artifacts
Общие
Окончательное уведомление об отмене альтернативных учетных данных
Альтернативные учетные данные официально устарели в марте 2020 года, но некоторые существующие пользователи были отложены с текущим использованием существующих альтернативных учетных данных. По состоянию на январь 2024 года мы полностью устарели все альтернативные учетные данные. Чтобы избежать возможных сбоев, переключитесь на один из доступных механизмов проверки подлинности, таких как личные маркеры доступа или управляемые удостоверения.
Смена секретов самостоятельного секрета Azure Devops OAuth
Каждые пять лет важно обновить секрет клиента для приложения OAuth Azure DevOps, чтобы обеспечить непрерывное создание маркеров доступа и обновления, необходимых для использования API Azure DevOps. Когда срок действия секрета клиента приближается к истечении срока действия, теперь вы можете самостоятельно создать новый, предоставляя команде свободу управления ею, не опираясь на поддержку клиентов. Такая гибкость при планировании смены секретов сводит к минимуму время сбоя для клиентов, ожидающих замены из-за истечения срока действия секрета.
Найдите эту новую функцию на каждой из страниц приложений Azure DevOps, которые можно получить через профиль. Дополнительные сведения об этом новом шаге см. в руководстве по Azure DevOps OAuth.
Расширенная безопасность GitHub для Azure DevOps
Фрагменты кода теперь доступны в представлении сведений об оповещении
На странице сведений об оповещении для сканирования кода и оповещений о секретах теперь отображаются фрагменты кода, которые помечают одну или несколько строк кода, в которых произошло оповещение. Чтобы перейти к исходному файлу в репозитории Azure DevOps, щелкните имя файла над фрагментом кода.
Усеченные секреты, отображаемые в обзоре оповещений
Усеченные, последние шесть символов обнаруженных секретов теперь отображаются на экране обзора оповещений о секретах. Эта функция полезна, если у вас несколько секретов одного и того же типа секретов, что позволяет быстро определить, где хранятся определенные секреты.
Дополнительные уровни серьезности оповещений, добавленные для проверки кода оповещений
Новые уровни серьезности оповещений теперь существуют для результатов оповещений из запросов CodeQL quality
как Error
, Warning
и Note
серьезности. Каждый уровень серьезности оповещений качества имеет собственный значок и цвет для обозначения серьезности масштабирования. Вы также можете отфильтровать каждую из этих серьезностей, аналогичную low
critical
масштабу серьезности для оповещений системы безопасности.
Связанная подписка Azure, необходимая для включения GitHub Advanced Security для Azure DevOps
Если вы ранее включили расширенную безопасность для репозиториев в организации Azure DevOps без связанной подписки Azure, вы можете заметить, что расширенная безопасность автоматически отключена в этих репозиториях. Чтобы повторно включить расширенную безопасность, добавьте связанную подписку Azure в организацию. Дополнительные сведения о том, как добавить или изменить подписку, см. в статье "Изменение подписки Azure".
Расширенные обновления API безопасности
Различные обновления недавно отправленных API безопасности расширенных API безопасности:
- API оповещений GET теперь поддерживает новый параметр,
ModifiedSince
чтобы вернуть добавочный список оповещений и возвращать только оповещения, которые были изменены с этой даты. Дополнительные сведения см. в разделе "Оповещения — список". - Существует две новые конечные точки для получения или обновления состояния расширенной безопасности организации или проекта. Обе конечные точки возвращают список репозиториев с включенной расширенной безопасностью. Дополнительные сведения см. в разделе "Организация — включение " или "Проект" — включение.
- Существует две новые конечные точки для получения оценки количества активных фиксаций для организации или проекта, чтобы отразить предполагаемое использование счетчика расширенной безопасности. Дополнительные сведения см. в разделе "Оценка использования метрики организации" или "Оценка использования измерения проекта".
Расширенные разрешения безопасности теперь постоянно отображаются
В прошлом три бита разрешений расширенной безопасности будут присутствовать только в том случае, если включена расширенная безопасность в репозитории. Теперь эти разрешения доступны по умолчанию на панели разрешений безопасности репозиториев > и могут быть назначены без включения расширенной безопасности.
Azure Boards
Добавление ссылки на фиксацию или запрос на вытягивание GitHub (предварительная версия)
У вас есть два варианта подключения рабочего элемента к запросу на вытягивание или фиксацию GitHub. Вы можете использовать синтаксис AB# в запросе на вытягивание или связать его непосредственно с рабочего элемента. Сегодня процесс включает копирование URL-адреса запроса на вытягивание GitHub и вставка его при добавлении ссылки. Для этого требуется открытие нескольких окон и переключение между GitHub и Azure DevOps.
В этом спринте мы рады объявить расширенный интерфейс, включив функции поиска при связывании с запросом на вытягивание GitHub или фиксацией. Выполните поиск и выберите нужный репозиторий и выполните детализацию, чтобы найти и связать его с конкретным запросом на вытягивание или фиксацией. Больше нет необходимости в нескольких изменениях окна и копировании и вставки (хотя у вас по-прежнему есть этот параметр).
Примечание.
Эта функция доступна только в предварительной версии New Boards Hub.
Если вы хотите получить доступ к этой функции, отправьте нам сообщение электронной почты непосредственно с именем вашей организации (dev.azure.com/{название организации}).
Новые улучшения Центра Boards Hub
В этом выпуске мы введем ряд улучшений в предварительной версии New Boards Hub, фокусируясь на специальных возможностях и перетеках страниц.
Ниже приведен пример изменений перетека страницы, которые адаптивны до 400 % масштабирования.
Кроме того, мы развернули улучшения производительности в форме рабочего элемента, досках и страницах невыполненной работы. В этих изменениях можно ожидать, что новые доски соответствуют стандартам производительности, установленным со старыми досками.
Элементы управления разработкой и развертыванием
Теперь мы удаляем элементы управления "Разработка" и (или) "Развертывание" из рабочего элемента в зависимости от того, как настроен проект. Например, можно настроить параметры проекта, чтобы отключить репозитории и (или) конвейеры.
При переходе к рабочему элементу соответствующие элементы управления разработки и развертывания будут скрыты из формы.
Если вы решите подключить репозиторий GitHub к Azure Boards, отобразится элемент управления разработки для репозиториев GitHub.
Azure Pipelines
Федерация удостоверений рабочей нагрузки для подключений к службе Azure Resource Manager теперь общедоступна
В сентябре мы объявили о возможности настройки подключений службы Azure без использования секрета. С тех пор многие клиенты приняли эту функцию, и мы рады объявить, что эта возможность теперь общедоступна.
Если вы еще не используете федерацию удостоверений рабочей нагрузки, вы можете воспользоваться преимуществами бесплатных подключений к службе Azure, у которых нет секретов с истекающим сроком действия, следующим образом:
Чтобы создать новое подключение службы Azure с помощью федерации удостоверений рабочей нагрузки, выберите федерацию удостоверений рабочей нагрузки (автоматически) в интерфейсе создания подключения службы Azure:
Чтобы преобразовать ранее созданное подключение к службе Azure, выберите действие "Преобразовать" после выбора подключения:
Чтобы преобразовать несколько подключений к службе, можно использовать автоматизацию, например этот скрипт PowerShell:
#!/usr/bin/env pwsh
<#
.SYNOPSIS
Convert multiple Azure Resource Manager service connection(s) to use Workload identity federation
.LINK
https://aka.ms/azdo-rm-workload-identity-conversion
.EXAMPLE
./convert_azurerm_service_connection_to_oidc_simple.ps1 -Project <project> -OrganizationUrl https://dev.azure.com/<organization>
#>
#Requires -Version 7.3
param (
[parameter(Mandatory=$true,HelpMessage="Name of the Azure DevOps Project")]
[string]
[ValidateNotNullOrEmpty()]
$Project,
[parameter(Mandatory=$true,HelpMessage="Url of the Azure DevOps Organization")]
[uri]
[ValidateNotNullOrEmpty()]
$OrganizationUrl
)
$apiVersion = "7.1"
$PSNativeCommandArgumentPassing = "Standard"
#-----------------------------------------------------------
# Log in to Azure
$azdoResource = "499b84ac-1321-427f-aa17-267ca6975798"
az login --allow-no-subscriptions --scope ${azdoResource}/.default
$OrganizationUrl = $OrganizationUrl.ToString().Trim('/')
#-----------------------------------------------------------
# Retrieve the service connection
$getApiUrl = "${OrganizationUrl}/${Project}/_apis/serviceendpoint/endpoints?authSchemes=ServicePrincipal&type=azurerm&includeFailed=false&includeDetails=true&api-version=${apiVersion}"
az rest --resource $azdoResource -u "${getApiUrl} " -m GET --query "sort_by(value[?authorization.scheme=='ServicePrincipal' && data.creationMode=='Automatic' && !(isShared && serviceEndpointProjectReferences[0].projectReference.name!='${Project}')],&name)" -o json `
| Tee-Object -Variable rawResponse | ConvertFrom-Json | Tee-Object -Variable serviceEndpoints | Format-List | Out-String | Write-Debug
if (!$serviceEndpoints -or ($serviceEndpoints.count-eq 0)) {
Write-Warning "No convertible service connections found"
exit 1
}
foreach ($serviceEndpoint in $serviceEndpoints) {
# Prompt user to confirm conversion
$choices = @(
[System.Management.Automation.Host.ChoiceDescription]::new("&Convert", "Converting service connection '$($serviceEndpoint.name)'...")
[System.Management.Automation.Host.ChoiceDescription]::new("&Skip", "Skipping service connection '$($serviceEndpoint.name)'...")
[System.Management.Automation.Host.ChoiceDescription]::new("&Exit", "Exit script")
)
$prompt = $serviceEndpoint.isShared ? "Convert shared service connection '$($serviceEndpoint.name)'?" : "Convert service connection '$($serviceEndpoint.name)'?"
$decision = $Host.UI.PromptForChoice([string]::Empty, $prompt, $choices, $serviceEndpoint.isShared ? 1 : 0)
if ($decision -eq 0) {
Write-Host "$($choices[$decision].HelpMessage)"
} elseif ($decision -eq 1) {
Write-Host "$($PSStyle.Formatting.Warning)$($choices[$decision].HelpMessage)$($PSStyle.Reset)"
continue
} elseif ($decision -ge 2) {
Write-Host "$($PSStyle.Formatting.Warning)$($choices[$decision].HelpMessage)$($PSStyle.Reset)"
exit
}
# Prepare request body
$serviceEndpoint.authorization.scheme = "WorkloadIdentityFederation"
$serviceEndpoint.data.PSObject.Properties.Remove('revertSchemeDeadline')
$serviceEndpoint | ConvertTo-Json -Depth 4 | Write-Debug
$serviceEndpoint | ConvertTo-Json -Depth 4 -Compress | Set-Variable serviceEndpointRequest
$putApiUrl = "${OrganizationUrl}/${Project}/_apis/serviceendpoint/endpoints/$($serviceEndpoint.id)?operation=ConvertAuthenticationScheme&api-version=${apiVersion}"
# Convert service connection
az rest -u "${putApiUrl} " -m PUT -b $serviceEndpointRequest --headers content-type=application/json --resource $azdoResource -o json `
| ConvertFrom-Json | Set-Variable updatedServiceEndpoint
$updatedServiceEndpoint | ConvertTo-Json -Depth 4 | Write-Debug
if (!$updatedServiceEndpoint) {
Write-Debug "Empty response"
Write-Error "Failed to convert service connection '$($serviceEndpoint.name)'"
exit 1
}
Write-Host "Successfully converted service connection '$($serviceEndpoint.name)'"
}
Дополнительные сведения см. в нашей документации.
Агент Pipelines показывает проблемы с использованием ресурсов более заметным образом
В октябре прошлого года мы добавили возможность отслеживать использование памяти и дискового пространства агентом Pipelines.
Чтобы пользователи знали, у них могут быть ограничения ресурсов, такие как ограничения памяти или дискового пространства на агенте, мы сделали ограничения ресурсов более видимыми:
Если вы видите любое из указанных выше сообщений, это может быть вызвано задачей, использующими больше ресурсов, чем агент, для которого определяется, что может привести к тому, что агент не реагирует и не выполняет задание конвейера:
"Мы перестали слышать от агента"
В таких случаях включите подробные журналы , чтобы получить более подробные сообщения об использовании ресурсов и отслеживать, где у вашего агента не было ресурсов. Если вы используете автономный агент, убедитесь, что агент имеет достаточные ресурсы.
Внеполняя установка средства выполнения задач Node 6
Azure Pipelines предоставляет две версии пакетов агента:
- Пакеты vsts-agent-* поддерживают задачи с помощью узла 6 для выполнения.
- Пакеты pipelines-agent-* не поддерживают задачи, требующие выполнения узла 6.
Клиенты, создающие локальные агенты, могут скачать их на странице выпусков агента конвейера. Версии узла, включенные в агент, используются для выполнения задач. См . сведения о версиях runner узла.
После регистрации агента агенты, установленные из пакетов pipelines-agent-* теперь будут скачивать версии узлов, которые не включены в агент и не блокируются в разделе "Ограничения задач" в параметрах организации. Это позволяет клиентам использовать пакеты агента pipelines-agent-* и управлять установкой Node 6 с ограничениями задач в параметрах организации.
Отложенное утверждение
Утверждения можно использовать для выхода из развертывания. Однако существуют ситуации, когда будет задано утверждение и время начала развертывания не совпадает. Например, для конкретного развертывания, который вы просматриваете, вы знаете, что это внеграничный. Представьте, что он не может продолжаться немедленно, скорее это должно происходить в течение ночи.
Для покрытия таких сценариев мы добавили возможность отложить утверждения для конвейеров YAML. Теперь можно утвердить запуск конвейера и указать, когда утверждение будет эффективным.
При выборе "Отложить утверждение" можно настроить время, когда утверждение станет эффективным.
Утверждение отображается как отложенное на панели проверок. После отложенного времени утверждение действует.
Последовательное согласование утверждений и проверок
С помощью этого спринта вы можете указать порядок выполнения утверждений и проверок.
Утверждения и проверки позволяют управлять развертываниями в рабочей среде. Например, можно указать, что только конвейеры, выполняемые в main
ветви репозитория, могут использовать подключение к рабочей службе ARM. Кроме того, вам может потребоваться утверждение человека и то, что система проходит проверку производительности.
До сегодняшнего дня все утверждения и проверки выполнялись параллельно, за исключением монопольной блокировки. Это означало, что если процесс развертывания требует проверки производительности перед выполнением ручного утверждения, вы не могли применить это в Azure Pipelines. Вам пришлось полагаться на инструкции по утверждению и внутреннюю документацию по процессу.
С помощью этого спринта мы введем последовательности в утверждениях и проверках. Теперь существует пять категорий утверждений и проверок:
- Статические проверки: элемент управления ветвью, обязательный шаблон и оценка артефакта
- Утверждение предварительной динамической проверки
- Динамические проверки: утверждение, вызов функции Azure, вызов REST API, рабочие часы, запрос оповещений Azure Monitor
- Утверждение после динамической проверки
- Монопольная блокировка
Порядок отображается также на вкладке "Утверждения и проверки".
В каждой категории проверки выполняются параллельно. То есть, если у вас есть проверка функции Вызова Azure и проверка рабочих часов, они выполняются одновременно.
Проверьте категории, выполняемые по одному, и если один завершается ошибкой, остальные проверки не выполняются. Это означает, что если у вас есть проверка ветвей и утверждение, если элемент управления Branch завершается сбоем, утверждение также завершится ошибкой. Поэтому не нужно отправлять сообщения электронной почты.
Вы можете выйти из развертывания после выполнения всех динамических проверок, используя утверждение после динамических проверок или выполнить проверку вручную, прежде чем продолжить динамические проверки, используя предварительно динамическое утверждение проверок.
Проверка и сохранение по умолчанию при редактировании конвейеров YAML
Неправильный конвейер YAML может привести к трате времени и усилий. Чтобы повысить производительность редактирования конвейера, мы изменим кнопку "Сохранить " в редакторе, чтобы также выполнить проверку YAML.
Если конвейер имеет ошибки, вы по-прежнему сможете сохранить его.
Мы также улучшили интерфейс проверки , чтобы увидеть ошибки в списке, который проще понять.
Azure Repos
Предотвращение несанкционированного доступа пользователей к конвейеру в качестве политики сборки
Предотвращение несанкционированного доступа пользователей к конвейеру в качестве политики сборки
Ранее при добавлении новой политики сборки можно настроить запуск любого конвейера из раскрывающегося списка (включая конвейеры, для которых у вас нет разрешений на сборку очередей ). Аналогичным образом можно изменить существующую политику сборки, даже если для запуска конвейера не было разрешения на сборку очередей .
Теперь мы запрещаем пользователям делать это. Если пользователю запрещено создавать разрешения на сборку очереди для данного конвейера, этот конвейер будет отображаться как отключенный (серый) в раскрывающемся списке при добавлении новой политики сборки.
На рисунке ниже показан конвейер с именем Песочница с разрешением на сборку очередей .
На рисунке ниже показано, как конвейер с именем "Песочница" отключен (серым цветом) в раскрывающемся списке, когда пользователь с разрешением на сборку отказано в очереди пытается добавить новую политику сборки .
Когда политика сборки, настроенная для запуска конвейера с именем Песочница, уже существует, пользователь без разрешений на сборку очередей не сможет изменять или просматривать политику сборки. Этот случай показан на следующем рисунке.
При попытке удалить эту политику появится всплывающее диалоговое окно с запросом подтверждения удаления.
Эти изменения также применяются ко всем вызовам API, которые приводят к созданию или редактированию политики сборки. При выполнении любого из этих действий с использованием удостоверения пользователя без разрешения сборки очереди вызов завершится ошибкой, возвращая соответствующий код ошибки, и сообщение об ошибке, указывающее “TFS.WebApi.Exception: TF401027:
, что для выполнения этого действия требуется разрешение QueueBuild на этом конвейере.
Удаление политики сборки, выполняемой с помощью API без user identity
разрешения на сборку очередей , будет выполнено успешно, и не будет никаких предупреждений или предотвращения (никаких изменений в том, как выполняется удаление с помощью API).
Azure Artifacts
Общедоступная поддержка Rust Crates
Начиная с 16 февраля 2024 г. поддержка Rust Crates станет общедоступной функцией для артефактов Azure. Счетчики выставления счетов будут активированы с помощью той же модели ценообразования, которая применяется к другим поддерживаемым протоколам.
Поддержка аудита npm в Azure Artifacts
Теперь артефакты Azure поддерживают npm audit
и npm audit fix
команды. Эта функция позволяет пользователям анализировать и устранять уязвимости своего проекта путем автоматического обновления небезопасных версий пакетов. Чтобы узнать больше о посещении, используйте аудит npm для обнаружения и устранения уязвимостей пакетов.
Следующие шаги
Примечание.
Эти функции будут развернуты в течение следующих двух-трех недель.
Перейдите к Azure DevOps и посмотрите.
Отправка отзыва
Мы хотели бы услышать то, что вы думаете об этих функциях. Используйте меню справки, чтобы сообщить о проблеме или указать предложение.
Вы также можете получить советы и ваши вопросы, ответы сообщества на Stack Overflow.
Thanks,
Дэн Хеллем