共用方式為


保護 Azure Pipelines

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

Azure Pipelines 提供不同的安全性挑戰。 雖然管線可讓您執行腳本或將程式代碼部署到生產環境,但請務必防止它們成為惡意代碼的管道。 平衡安全性與開發小組所需的彈性和能力至關重要。

注意

Azure Pipelines 是 Azure DevOps Services 套件的一部分,全都建置在 Azure 內的安全基礎結構上。 若要全面瞭解所有 Azure DevOps Services 的安全性概念,建議您檢視下列資源:

傳統上,組織會透過嚴格的鎖定強制執行安全性。 程式代碼、管線和生產環境面臨嚴重的存取限制。 雖然這種方法在具有有限使用者和專案的小型組織中運作良好,但大型組織面臨不同的現實。 由於許多參與者能夠存取程式代碼,「假設缺口」的原則就變得至關重要。 它牽涉到操作就像對手擁有存放庫的參與者存取權一樣,需要增強警惕。

若要達成安全性目標,請考慮下列幾點:

  • 防止惡意代碼執行:

    • 請確定您的管線已設定為防止未經授權的惡意代碼執行,其中包括下列工作:
      • 限制敏感性秘密和認證的存取。
      • 驗證輸入參數和自變數,以防止非預期的行為。
      • 定期檢閱和稽核管線腳本是否有潛在的安全性風險。
      • 實作安全性做法,例如:
        • 在文稿中使用參數化查詢來防止 SQL 插入。
        • 逸出自變數中的特殊字元,以避免殼層命令插入。
        • 限制管線服務連線的許可權。
    • 請考慮使用 YAML 管線,其可提供更精細的執行控制,而且較不容易發生安全性風險。
  • 減輕橫向曝光:

    • 隔離管線,以防止組織專案和存放庫中橫向移動。
    • 只限制每個管線的必要存放庫和資源存取。
    • 監視管線活動,並設定可疑行為的警示。
    • 檢閱和更新許可權,以定期將曝光量降到最低。
  • 使用 YAML 管線:

    • YAML 管線在安全性方面提供下列優點:
      • 明確定義管線步驟和相依性。
      • 管線定義的版本控制。
      • 清除管線設定的可見度。
      • 降低意外設定錯誤的風險。
      • 程式代碼檢閱和提取要求:
        • 將 YAML 管線視為任何其他程式碼。
        • 強制執行提取要求以合併變更,以防止惡意步驟。
        • 使用 分支原則 來設定此檢閱程式。
      • 資源存取管理:
        • 資源擁有者可控制 YAML 管線是否可以存取特定資源。
        • 這項安全性功能可防止攻擊,例如 竊取另一個存放庫
        • 核准和檢查 會為每個管線執行提供訪問控制。
      • 執行時間參數:
    • 請考慮將現有的管線移轉至 YAML 格式,以改善安全性和可維護性。

安全性是一個持續的過程,定期的評量和更新至關重要。 YAML 管線為您的 Azure Pipelines 提供最佳安全性。

下列文章概述可協助您開發安全 YAML 型管線的建議: