保護持續集成(CI)/持續交付(CD)管道的五個優秀實踐
譯文譯者 | 李睿
審校 | 孫淑娟
開發人員的思維方式是理解問題,構建解決方案,然后找出如何將健壯且安全的解決方案部署到生產環境中。
不幸的是,一旦實現,將安全優秀實踐嵌入到解決方案中通常會操作更加復雜和成本高昂,而快速發布創新的壓力往往會導致DevOps團隊發布安全債務。最佳Devsecops實踐是將知識、最佳實踐和安全性“左移”到開發過程中,以便敏捷開發團隊更有可能將安全性直接融入微服務、應用程序或數據庫中。
但是持續集成(CI)/持續交付(CD)管道呢?當構建、集成、打包和交付代碼到環境的人工步驟在CI/CD工具中編寫腳本時,這種自動化提高了部署的可靠性。具有強大CI/CD實施的Devops團隊通常會采取下一步措施,并考慮為生產環境進行持續部署,這會帶來更多風險,但可以實現更頻繁的部署。
開發人員需要考慮以下這些建議和最佳實踐,以確保安全和強大的CI/CD管道。
1.在CI/CD之前建立安全開發實踐
咨詢機構凱捷公司敏捷和開發主管KulbirRaina分享了一個首要原則:“安全和質量必須嵌入到代碼中,在處理CI/CD管道中的自動化時,不應該讓質量關卡來控制。開發人員需要在他們的集成開發環境中集成安全工具,以便正確地檢查代碼?!?
Linting是一個由識別編碼風格偏差和不安全實踐的工具執行的過程。更復雜的靜態應用程序安全測試(SAST)工具可以發現緩沖區溢出、SQL注入缺陷和其他問題。Raina建議將SAST集成到持續集成中。
Redgate Software公司Devops倡導者Steve Jones表示,工具很重要,但就像任何Devops流程一樣,確保隨著時間的推移不斷學習和成長。他說:“定期對開發人員進行安全編碼實踐方面的教育,并確保他們找出簡單的漏洞(例如SQL注入),這一點至關重要。”
Buildkite公司聯合創始人兼聯合首席執行官Tim Lucas分享了其他的一些最佳實踐。他建議查看來自開源和第三方的依賴項,以了解常見漏洞和暴露?(CVE)。Devops團隊不要將易受攻擊的軟件投入生產。他建議,對供應商軟件使用可驗證的簽名,這樣如果供應商受到威脅,企業的安全供應鏈也不會受到損害。
Sonatype公司現場首席技術官lkka Turunen對此表示贊同。他建議說,“最佳實踐之一是在搜索開源軟件項目時具有選擇性,這就像在傳統制造業中一樣,并非所有部分都是平等的。尋找由敬業且負責任的開發人員維護的項目,不僅可以提高軟件供應鏈的可維護性,還可以減少技術債務、返工和安全風險?!?
這些建議只是在軟件開發生命周期中應用最佳安全實踐時的冰山一角,但它們是開發安全交付管道的關鍵先決條件。
2.在CI/CD管道中構建持續測試
重要的是要認識到CI/CD不僅僅是交付代碼。這也是采用左移測試并發展持續測試策略的機會。然后,將測試作為核心原則的團隊可以在觸發CI/CD管道將版本部署到任何環境之前尋找驗證安全性的機會。除了集成SAST安全測試之外,開發團隊還應關注:
- 觸發滲透測試以發現后門和其他入口點漏洞。
- 驗證安全控制和測試授權。
- 使用動態應用程序安全測試 (DAST)工具測試OWASP十個主要的高嚴重性問題。
測試自動化還應該考慮修復常見問題的步驟、通知正確的團隊以及回滾過程。
3.自動化CI/CD內的數據安全程序
CI/CD管道還應該用于自動化具有代碼和構建依賴項的安全過程。需要關注的一個領域是數據安全,因為版本可能包括新的數據庫、更新的數據模型或新的數據集。
一項經常被忽視的功能是使用從生產環境中提取的數據來更新開發和測試環境。開發團隊應使用最近提取的數據來驗證功能和測試體驗,并使用數據屏蔽來隱藏個人身份信息和其他符合數據合規要求的數據。
Accelario公司首席技術官兼聯合創始人Roman Golod建議:“數據屏蔽是CI/CD期間安全自動化的關鍵部分。開發和測試團隊需要真實的數據來確保一切在生產中都能順利運行,但非生產系統通常不夠安全?!?/p>
其他技術包括使用合成數據和服務虛擬化。Golod補充說,“模擬真實事物的合成數據集將進一步加強安全性,因為如果該數據庫遭到破壞,威脅參與者將一無所獲。”
Copado公司戰略服務高級副總裁Daniel Riedel為開發團隊增加了一個關鍵起點。他說:“開發團隊需要了解自己的數據,特別是監管該數據的安全和合規政策。一旦了解了這些政策,需要仔細構建一個出色的安全自動化框架,而該框架經過充分測試,涵蓋了這些政策中規定的規則和控制?!?
4.應用零信任原則來保護CI/CD管道
Devops團隊應該如何鎖定管道,以便只有授權的人員才能觸發它們?Redgate Software公司的Devops倡導者Grant Fritchey提出了一項建議:“在Devops管道中實現安全性自動化的關鍵與始終保持良好安全性的關鍵是完全相同的:最小特權原則。如果確保只為管道提供足夠的權限,那么在管道內部、周圍和內部實現安全自動化將很簡單,并提供想要的結果?!?
一些基本實踐包括隱藏API密鑰、在CI/CD工具中定義基于項目和角色的安全憑證,以及確保遠程Devops團隊成員的訪問安全。
5.通過將CI/CD與AIops和安全自動化集成來驗證部署
一旦將代碼部署到生產環境,Devops團隊的職責就不會結束。這就是對可觀察性和監控的投資成為重要的運營反饋工具的地方。Devops團隊應與運營團隊和工具合作,以響應事件并識別技術債務何時成為運營或安全問題。以下是一些細節:
- AIops工具集中運營數據,將警報與事件相關聯,并幫助圍繞性能和可靠性問題自動響應事件。
- 安全自動化可以防止威脅和攻擊,同時啟用設置權限、修補系統和響應安全事件的自動化。
- 許多CI/CD工具提供與AIops、安全自動化和其他通用IT自動化工具的雙向集成。作為CI/CD管道的一部分,DevOps團隊應觸發這些工具的通知,以通知操作和信息安全有關代碼交付的信息。它們還應該允許IT運營和信息安全自動化來觸發構建或回滾,以支持運營和安全需求。
Devops工作流程顯示了從規劃到監控部署的連續路徑,以確保團隊可靠、安全地規劃、交付、發布和運行系統。CI/CD是主要的Devops實踐之一,因此在管道之前、內部和之后嵌入安全性是一項關鍵的責任。
原文標題:??5 best practices for securing CI/CD pipelines??,作者:Isaac Sacolick