保護 Azure Pipelines

Azure DevOps Services |Azure DevOps Server 2022 |Azure DevOps Server 2020

Azure Pipelines 帶來獨特的安全性挑戰。 您可以使用管線來執行腳本,或將程式代碼部署到生產環境。 但您想要確保您的 CI/CD 管線不會成為執行惡意代碼的途徑。 您也想要確保只部署您想要部署的程式碼。 安全性必須平衡,讓小組擁有執行自己的管線所需的彈性和能力。

注意

Azure Pipelines 是 Azure DevOps Services 的集合之一,全都建置在 Azure 中相同的安全基礎結構上。 若要瞭解所有 Azure DevOps Services 安全性的主要概念,請參閱 Azure DevOps 數據保護概觀Azure DevOps 安全性和身分識別。

傳統上,組織會透過嚴厲鎖定來實作安全性。 程式代碼、管線和生產環境對存取和使用有嚴重限制。 在少數使用者和專案的小型組織中,這種立場相對容易管理。 不過,在較大的組織中,情況並非如此。 如果許多使用者具有程式代碼的參與者存取權,則必須「假設缺口」。 假設外洩表示攻擊者擁有某些存放庫(如果不是全部)的參與者存取權,就好像行為一樣。

在此情況下,目標是防止對手在管線中執行惡意代碼。 惡意代碼可能會竊取秘密或損毀的生產環境。 另一個目標是防止橫向暴露至遭入侵管線的其他專案、管線和存放庫。

YAML 管線為您的 Azure Pipelines 提供最佳安全性。 相較於傳統組建和發行管線,YAML 管線:

  • 可以檢閱程序代碼。 YAML 管線與任何其他程式碼片段並無不同。 您可以強制執行提取要求來合併變更,以防止惡意執行者在管線中引入惡意步驟。 分支原則 可讓您輕鬆地進行此設定。
  • 提供資源存取管理。 資源擁有者會決定 YAML 管線是否可以存取資源。 此安全性功能控制攻擊,例如 竊取另一個存放庫核准和檢查提供每個管線執行的訪問控制
  • 支援運行時間參數運行時間參數 可協助您避免與變數相關的許多安全性問題,例如 自變數插入

這一系列文章概述建議,以協助您整合安全的 YAML 型 CI/CD 管線。 它也涵蓋您可以在安全性和彈性之間取捨的地方。 本系列也假設熟悉 Azure Pipelines、核心 Azure DevOps 安全性建構Git

其中涵蓋下列主題: