保護 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。
其中涵蓋下列主題: