透過此更新,我們正在改善 Azure DevOps 的安全性和驗證。 Azure DevOps OAuth 的疊加秘密使得秘密輪替順暢,而 GitHub 進階安全性為安全概觀頁面提供更好的篩選,同時確保多存放庫發佈能正確地路由依賴項和程式代碼掃描警示。
Azure Pipelines 中的託管映射更新包括 Ubuntu-24.04、Windows 2025 和 mac-OS 15 Sequoia,以確保更安全且可靠的體驗。
請參閱發行說明以獲取詳細資訊。
一般
- Azure DevOps OAuth 重複使用的憑證
- 從專案摘要頁面移除語言統計標籤
- 已新增傳遞計劃許可權
適用於 Azure DevOps 的 GitHub Advanced Security
- 安全性概觀的風險頁面已增強,新增了數據列和篩選選項。
- GitHub 進階安全性支援 Azure DevOps 上的多重存放庫發佈場景
- GitHub 進階安全性在 Azure DevOps 警示中的服務掛勾(預覽版)
- pnpm v9 支援已納入 GitHub 進階安全性,以進行 Azure DevOps 的相依性掃描
Azure Pipelines
Test Plans
- 發布程式碼覆蓋率結果 v2 任務改進
- 在 XLSX 中使用自訂欄位匯出測試範例
一般
Azure DevOps OAuth 的重疊憑證
我們很高興在 Azure DevOps OAuth 中引進新的重疊秘密功能,其設計目的是增強安全性,並簡化秘密輪替。 這項功能可讓您將新的秘密新增至 OAuth 用戶端,而先前的秘密仍保持作用中,確保應用程式的持續作業。 您可以透過 API 或透過 Visual Studio 應用程式頁面 UI,以程式設計方式管理這些秘密。
作為持續安全性改善的一部分,Azure DevOps OAuth 已排定於 2026 年淘汰。 我們鼓勵您遷移至Microsoft Entra ID OAuth,以提升安全性功能並獲得長期效益。 在過渡期間,我們建議定期更新您的秘密,使用我們的新重疊密鑰功能。
停用 [專案摘要] 頁面的語言統計標籤
在未來幾周內,我們將從 [專案摘要] 頁面取代語言統計數據標籤。 拿掉這些標籤有助於將效能優化,進而加快載入時間和更回應的介面。
更新會自動進行,而且您不需要採取任何動作。
已新增傳遞計劃許可權
作為我們持續安全增強措施的一部分,我們引入了一項新的管理傳遞計劃的專案層級權限。 對這項變更進行了實施,旨在防止讀者群組中的使用者無意間進行讀寫操作。
適用於 Azure DevOps 的 GitHub Advanced Security
新增列和篩選選項增強的安全概覽風險頁面
在 [#B0 風險 #C1] 索引標籤底下,您會發現新增的欄位,這些欄位顯示整個組織中的新、已修復和被關閉的安全性警示。 我們已新增篩選選項,以依專案、工具(秘密、相依性或程式代碼掃描結果)和以時間為基礎的篩選來定義搜尋界限來精簡結果。
此外,套用篩選會新增 URL 查詢參數,讓您與組織中的其他人共用預先篩選的檢視。
Azure DevOps 的 GitHub 進階安全性支援的多重存放庫發佈案例
先前,當管線定義儲存在一個存放庫中,而 GitHub 進階安全性所要掃描的原始碼位於另一個存放庫中時,結果會處理並提交至錯誤的存放庫。 警示並不是發布在包含原始程式碼的存放庫中,而是出現在定義管道的存放庫。
現在,相依性掃描和程式代碼掃描都會正確地將警示路由傳送至包含多重存放庫案例中已掃描原始程式碼的存放庫。
若要啟用此功能,請將管線環境變數設定為 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
適用於 Azure DevOps 警示的 GitHub 進階安全性服務掛鉤 (預覽)
您現在可以為 GitHub 進階安全性警示事件配置服務掛勾,包括:
- 已建立新警示
- 警示數據已變更
- 警示狀態已變更
就像其他存放庫事件一樣,您可以依存放庫和分支進行篩選。 特別針對警示,您可以依警示類型(相依性、程式代碼掃描或秘密)和警示嚴重性進行篩選。
若要參與預覽,請填寫 預覽興趣窗體,或傳送我們一封 電子郵件!
pnpm v9 支援現已整合至 GitHub Advanced Security 用於 Azure DevOps 相依性掃描
隨著 pnpm v8 在 4 月底達到生命周期結束,下一個相依性掃描更新將包含對 pnpm v9 的支援。 此更新是針對您在開發人員社群中提出的 pnpm v9 支援要求所作的回應。
Azure Pipelines
托管映像更新
我們正在推出更新,以讓 Azure Pipelines 的託管代理程式保持安全且最新狀態。 這些更新包括新增對 Ubuntu-24.04、Windows 2025 映像和 macOS-15 Sequoia 的支援,同時不再支援 Ubuntu-20.04 和 Windows Server 2019 等較舊的映像。
如需詳細資訊,請瀏覽我們的 部落格文章。
macOS-15 Sequoia 已正式推出
macOS-15 映射將於 4 月 1 日起在 Azure Pipelines 裝載的代理程式上取得。 若要使用此映像,請更新您的 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 以在 4 月使用 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.04,而不是 ubuntu-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 管線影像已被棄用,將於 4 月 1 日停止使用。
我們不再支援 Azure Pipelines 中的 Ubuntu 20.04 映像,因為它即將終止支援。 在我們的 部落格文章中查找具有中斷排程的淘汰方案。
工作負載身分識別聯盟使用 Entra 作為簽發者
就在一年多前,我們正式推出工作負載身分識別同盟。 工作負載身分識別同盟可讓您在沒有秘密的情況下設定服務連線。 支援服務連線的身分識別(應用程式註冊、受控識別)只能用於預定用途:身分識別同盟認證中設定的服務連線。
我們現在正在變更新 Azure 和 Docker 服務連線的聯邦憑證格式。 現有的服務聯機會像以前一樣運作。
| Azure DevOps 發行者 | Entra issuer (新的服務連線) | |
|---|---|---|
| 發行人 | 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 服務連線時,您會看到新的聯盟認證:
在建立應用程式註冊或管理的身分的同盟認證時,請再次複製這些值。
Automation
使用 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 程式碼分析選項。
- 在 任務之後,請在流程中使用
Gradle@4任務。
SonarQube 分析的組態已移至工作 的 SonarQube 或 SonarCloud 擴充功能。
請求運行階段的使用者身份識別
為了增強 YAML 管線的安全性,您可能想知道是哪位要求運行某個階段。 若要解決此問題,請新增兩個新的預先定義變數,Build.StageRequestedBy 和 Build.StageRequestedById。 這些變數類似於 Build.RequestedFor 和 Build.RequestedForId 變數,但適用於階段,而不是適用於執行。
例如,當使用者明確觸發某個操作時,例如手動觸發某個階段或重新執行某個階段,其身分識別會被用來填入這兩個變數。
Test Plans
發佈程式代碼涵蓋範圍結果 v2 工作改善
在此版本中,我們包含了對 v2 任務的多項改進:
- 擴充對各種程式代碼涵蓋範圍格式的支援,包括:.coverage、.covx、.covb、.cjson、.xml、.lcov 和 pycov1。
- 產生完整的 cjson 檔案(以及程式代碼涵蓋範圍報告),其中包含詳細的程式代碼涵蓋範圍資訊,例如檔名、涵蓋/未涵蓋的行等等。
- 支援差異覆蓋範圍(PR 覆蓋範圍):v2 可以在相同管線內為多種語言生成關於差異覆蓋範圍的 PR 批註。
- v2 工作現在支援 v1 中不支援的建置品質檢查任務。
使用 XLSX 中的自訂數據行匯出測試案例
您現在可以在 XLSX 中使用自訂資料行匯出測試案例。 根據您的回饋,Test Plans 支援將測試案例匯出為自訂欄位,賦予您更大的彈性與控制權,以便您共用和分析數據。 這項增強功能可協助您根據需求量身打造導出,確保導出的資訊相關且可採取動作。
後續步驟
備註
這些功能將在未來兩到三周內推出。
打開 Azure DevOps 去看看吧。
如何提供意見反應
我們很樂意聽到您對於這些功能的看法。 使用說明功能表來回報問題或提供建議。
您也可以在 Stack Overflow上取得社群所回答的建議和問題。
謝謝
西爾維·安德里卡