共用方式為


保護適用於 零信任的DevOps平台環境

本文可協助您身為 DevOps 小組成員,實作最低許可權的 零信任 原則,並保護 DevOps 平台環境。 它包含保護 企業 DevOps 環境 電子書的內容,並醒目提示秘密和憑證管理的最佳做法。

新式企業依賴 DevOps 平台進行部署,包括開發人員需要提高生產力的管線和生產環境。 過去,應用程式安全性方法並未考慮目前管線和生產環境所公開的受攻擊面增加。 當駭客向左移動並鎖定上游工具時,您需要創新方法來保護您的DevOps平台環境。

在下圖中,請注意 DevOps 平台環境會連線到應用程式環境,以及 持續整合和持續傳遞 (CI/CD) 管線延伸模組。

圖表說明 DevOps 平台環境和安全性威脅,如上述鏈接電子書所述,並摘要說明本文連結的相關文章。

CI/CD 管線延伸模組讓駭客有機會從應用程式環境參與許可權提升。 延伸模組和整合會增加攻擊面弱點。 防範惡意代碼入侵威脅非常重要。

攻擊者以管線為目標的方式和原因

管線和生產環境可能與標準應用程式安全性做法和程序無關。 他們通常需要高階存取認證,以提供對攻擊者的深入且有意義的存取權。

雖然攻擊者發現入侵系統的新方法,但管線最常見的攻擊媒介包括:

  • 擷取運行時間變數和自變數插入。
  • 從管線擷取服務原則或認證的腳本。
  • 設定錯誤的個人存取令牌,可讓具有密鑰的任何人存取 DevOps 平台環境。
  • 整合式工具中的弱點和設定錯誤,需要存取程式代碼(通常是唯讀的,但有時是寫入存取權)。 整合式工具可以包括測試架構、靜態應用程式安全性測試(SAST)和動態應用程式安全性測試(DAST)。

秘密和憑證管理的最佳做法

避免重大缺口可以和有效的秘密管理一樣簡單。 下圖說明有效秘密、密碼、存取令牌和憑證管理的範例。

圖表說明秘密和憑證管理。

如上圖所示,開發人員會針對客戶要求啟動組建。 GitHub 接著會以保存庫應用程式角色的角色識別碼和秘密標識碼啟動執行器。 信任的實體會定期向保存庫要求新的秘密標識符,並從 GitHub 取得 GitHub 秘密秘密標識碼。 保存庫會使用 GitHub 秘密角色識別碼和秘密標識碼來登入並取得程式代碼簽署資產。 執行器會自定義行動應用程式並撰寫程式代碼簽署。

下列最佳做法可協助您建置安全設定,以將秘密和參數暴露降至最低。

  • 在每個應用程式生命週期階段提供秘密和憑證的安全記憶體。 一律開發,就像是開放原始碼項目一樣。 確定小組將秘密儲存在金鑰保存庫中,而不是儲存在程式代碼或小組環境中。 使用 Azure 金鑰保存庫 雲端服務安全地儲存和存取秘密。
  • 將 Azure 設定為信任 GitHub 的 OIDC 作為同盟身分識別。 OpenID 連線 (OIDC) 可讓您的 GitHub Actions 工作流程存取 Azure 中的資源,而不需要將 Azure 認證儲存為長期存在的 GitHub 秘密。

DevOps 環境安全性的最佳做法

若要協助防範安全性事件,請檢閱下列最佳做法來強化您的DevOps平台環境。 在我們的保護企業 DevOps 環境電子書中,尋找這些建議的詳細討論。

  • 為每個DevOps平台環境配備稽核線索。檢閱稽核記錄,以追蹤 誰獲得存取權、發生哪些變更,以及任何使用中系統的日期/時間。 具體來說,包含流入生產環境的 CI/CD 管線的 DevOps 平臺。 DevOps 工具的稽核線索提供健全的方法,可更快速地補救威脅、尋找可疑活動,以及找出可能的缺口或弱點,並找出潛在的數據或許可權誤用。 確保每個環境都能使用細微的控制和稽核線索。
  • 保護軟體供應鏈。 透過您帶入程式代碼基底的每個連結庫,您可以展開軟體供應鏈,並從每個開放原始碼專案或工具繼承相依性。 請小心移除不必要的連結庫和開放原始碼元件,以減少軟體供應鏈的攻擊面。
  • 自動化基礎結構即程序代碼 (IaC) 範本掃描。 使用 IaC 環境,很容易掃描設定錯誤、合規性稽核和原則問題。 實作合規性檢查和訪問控制可提升整個基礎結構的安全性狀態。 確認符合自動化系統需求的工具整合安全性。
  • 將核准工作流程自動化。 若要讓任何核准工作流程將程式代碼推送至生產環境,某些自動或手動檢查必須確認每個要求的安全性、商業價值、狀態和品質。 這些檢查可作為開發和生產環境之間的大門,以防止阻斷服務攻擊和駭客將程式代碼插入生產環境,而不需要標記或觸發警示。
  • 只允許已驗證的 DevOps 工具整合。 如同開發人員環境中,DevOps 工具隨附擴充功能和整合,讓 DevOps 小組更有效率且安全。 確認已驗證的整合需要執行其工作的最低許可權。 盡可能實作最低許可權存取權,並確保正確層級的讀取/寫入許可權。 瞭解如何 停用或限制貴組織的 GitHub Actions。

下一步