Azure Pipelines 公開預覽的工作負載身分識別同盟

我們很高興宣佈 Azure Pipelines 的工作負載身分識別同盟現在處於公開預覽狀態! Azure (ARM) 服務連線已更新為額外的配置,以支援工作負載身分識別同盟。

請參閱版本資訊,以瞭解如何註冊公開預覽版。

Azure Boards

Azure Pipelines

Azure Repos

Azure Boards

區域和反復專案路徑的限制

限制在維護大型全球服務的健康與效率方面起著重要作用。 在此短期衝刺中,我們針對區域和反復專案路徑引進每個專案的硬性限制為 10,000。 請流覽工作 追蹤、程式和專案限制 頁面,以深入瞭解服務中的不同限制。

Screenshots of Area and Iteration Paths.

Azure Pipelines

Azure Pipelines 中的工作負載身分識別同盟 (公開預覽)

您要停止將秘密和憑證儲存在 Azure 服務連線中嗎? 想要停止擔心每當這些秘密到期時輪替這些秘密嗎? 我們現在宣佈 Azure 服務連線的工作負載身分識別同盟公開預覽。 工作負載身分識別同盟 會使用業界標準技術 Open ID 連線 (OIDC),以簡化 Azure Pipelines 與 Azure 之間的驗證。 有別於秘密,同盟主體用來加速驗證程序。

在這項功能中,Azure (ARM) 服務連線已更新為另一個配置,以支援工作負載身分識別同盟。 這可讓使用 Azure 服務連線的管線工作使用同盟主體 ( sc://<org>/<project>/<service connection name> ) 進行驗證。 將此配置用於現有驗證配置的主要優點如下:

  • 簡化的管理:您不會再從 Azure AD 中的服務主體產生、複製及儲存秘密到 Azure DevOps。 在 Azure 服務連線的其他驗證配置中使用的秘密(例如服務主體)會在特定期間(目前為兩年)到期。 到期時,管線會失敗。 您必須重新產生新的秘密並更新服務連線。 切換至工作負載身分識別同盟,不需要管理這些秘密,並改善建立和管理服務連線的整體體驗。
  • 改善安全性:使用工作負載身分識別同盟時,Azure Pipelines 與 Azure 之間的通訊不會涉及持續性秘密。 因此,管線作業中執行的工作無法洩漏或外泄具有生產環境存取權的秘密。 這通常是我們的客戶所關心的問題。

您可以使用兩種方式來利用這些功能:

若要使用工作負載身分識別同盟建立新的 Azure 服務連線,只需在 Azure 服務連線建立體驗中選取 [工作負載身分識別同盟] 或 [ 手動 ] 即可:

 Screenshot of resource.

Screenshot of identify federation.

若要轉換先前建立的 Azure 服務連線,請在選取連線之後選取 [轉換] 動作:

 Screenshot of convert.

Azure Pipelines 隨附的所有 Azure 工作現在都支援這個新配置。 不過,如果您使用來自 Marketplace 的工作或自建自訂工作來部署至 Azure,則它可能尚不支援工作負載身分識別同盟。 在這些情況下,我們會要求您更新您的工作以支援工作負載身分識別同盟,以改善安全性。 您可以在這裡 找到 支援工作的完整清單。

在此預覽中,我們僅支援 Azure 服務連線的工作負載身分識別同盟。 此配置不適用於任何其他類型的服務連線。 如需詳細資訊,請參閱我們的檔。

此部落格文章 包含更多詳細資料。

管線代理程式可以使用 Microsoft Entra ID 來註冊,而不是 PAT

管線代理程式現在支援更多引數,以使用服務主體或使用者來註冊代理程式。 您應該在其安全性設定中授與用來存取代理程式組件區的身分識別。 這樣就不需要使用個人存取權杖 (PAT) 進行代理程式一次性設定。

使用服務主體註冊代理程式

若要使用服務主體向 Azure DevOps Services 註冊 Pipelines 代理程式,請提供下列引數:

--auth 'SP' --clientid 12345678-1234-1234-abcd-1234567890ab --clientsecret --tenantid 12345678-1234-1234-abcd-1234567890ab

在代理程式 VM 擴充功能中使用服務主體

Azure VM 可以使用 VM 擴充 功能包含在部署群組 中。 VM 擴充功能已更新為使用服務主體,而不是 PAT 來註冊代理程式:

"settings": {
  "userServicePrincipal": true     
}
"protectedSettings": {
  "clientId": "[parameters('clientId')]"      
  "clientSecret": "[parameters('clientSecret')]"      
  "tenantId": "[parameters('tenantId')]"      
}

使用裝置程式碼流程以互動方式註冊代理程式

您可以使用網頁瀏覽器輕鬆完成設定。 當您執行代理程式組態腳本時,請輸入 「AAD」 作為驗證類型。 腳本將引導您完成後續步驟,包括前往 Web 的位置和要輸入的程式碼。 在 Web 上輸入程式碼之後,返回主控台以完成代理程式設定。

 Screenshot of authentication flow.

環境的 REST API

環境 是您可以從管線部署的目標資源集合。 環境提供部署歷程記錄、工作專案和認可追蹤能力,以及存取控制機制。

我們知道您想要以程式設計方式建立環境 ,因此我們已發佈其 REST API 的檔。

防止非預期的管線執行

目前,如果您的 YAML 管線未指定 trigger 區段,它會針對推送至其存放庫的任何變更執行。 這可能會造成管線執行的原因造成混淆,並導致許多非預期的執行。

我們新增了名為 [停用隱含 YAML CI 觸發程式的組織和專案層級管線] 設定,可讓您變更此行為。 如果遺漏觸發程式區段,您可以選擇不要觸發管線。

 Screenshot of YAML CI trigger.

根據預設,安全地建置 GitHub 存放庫

上次短期衝刺時,我們引進了一個 集中式控制項,可從分支 GitHub 存放庫 建置 PR。

在此短期衝刺中,我們會為新組織啟用 Securely build pull requests from forked repositories 組織層級的選項。 現有的組織不會受到影響。

停用程式碼涵蓋範圍原則狀態的覆寫至建置失敗時失敗

先前在 中,如果您的 PR 組建失敗,程式碼涵蓋範圍原則狀態會覆寫為「失敗」。 這是一些您有建置作為選擇性檢查的封鎖程式,而程式碼涵蓋範圍原則是導致 PR 遭到封鎖的必要檢查。

Screenshot of PRs blocked.

使用此短期衝刺,如果建置失敗,程式碼涵蓋範圍原則將不會覆寫為「失敗」。 此功能將會為所有客戶啟用。

Screenshot of results after change.

Azure Repos

無 Blob 和無樹狀篩選支援

Azure DevOps 現在支援複製/擷取時另外兩個篩選。 以下是:--filter=blob:none--filter=tree:0 第一個選項(無 Blob 複製)最適合用於定期開發,而第二個選項(無樹狀複製)適用于您放棄複製之後的案例,例如執行組建。

下一步

注意

這些功能將在未來兩到三周內推出。

前往 Azure DevOps 並查看。

如何提供意見反應

我們很樂意聽到您對於這些功能的看法。 使用說明功能表來回報問題或提供建議。

Screenshot Make a suggestion.

您也可以在 Stack Overflow 上的 社群取得建議和您的問題。

感謝您!

Silviu Andrica