如何提高CI/CD管道安全性?
數字化程式加速使得產品的開發和迭代節奏變快,在加速產品釋出的同時,CI/CD也容易受到網路安全問題的影響,如程式碼損壞、安全錯誤配置和機密管理不當。在CI/CD管道透過安全實踐可以確保程式碼質量、管理風險並保持完整性。
CI/CD 安全性
《軟體供應鏈狀況報告》報告發現,旨在積極滲透開源軟體供應鏈的下一代網路攻擊激增了430%。它還發現,51%的組織需要超過一週的時間來修復新的0 day漏洞。在這種背景下,CI/CD對DevOps的影響是強大的:它可以幫助開發人員將程式碼釋出速度提高 83%,從而騰出時間專注於更多的測試,包括安全性。
CI/CD安全性是關於在軟體交付管道中識別和減少安全風險,從而生產出可靠和無風險的高質量產品。每個組織或產品都有一個基於其關鍵過程和工具的獨特CI/CD管道。但是加強CI/CD安全性的基本思想是避免資料洩露和應用程式中斷。
CI/CD管道的核心包括關鍵的開發元件,如原始碼、應用程式程式碼儲存庫、容器和構建伺服器,這使它成為攻擊者的主要目標。即使單個元件被破壞,也可能為攻擊者提供可利用資源。
在沒有CI/CD安全的情況下,攻擊者可以利用其漏洞進行重大攻擊。管道安全漏洞可能造成的一些安全風險包括:
不安全的程式碼:缺乏程式碼掃描程式會引入惡意程式碼和漏洞,網路攻擊者可以利用這些漏洞造成嚴重破壞。
供應鏈攻擊:嚴重依賴開源和第三方程式碼庫是資料洩露事件的主要原因之一,因為它們可能帶來嚴重威脅。
秘密的暴露:不適當的安全管理允許在管道中使用的多個工具來利用敏感資料,如憑據。
不安全的系統配置:未能準確配置基礎架構、網路或應用程式可能會使系統受到網路攻擊。
缺少訪問控制:不實施基於管道的訪問控制會使惡意行為者能夠訪問關鍵資源和資產。
CI/CD的作用
CI/CD 管道是 DevOps 實踐的核心原則,專注於開發和運營之間的精簡協作。在安全“左移”方法中,軟體開發過程的每個階段都會整合安全性,來構建以安全為核心的應用程式,而不是在應用程式交付後再考慮安全問題。
在 CI/CD 管道中新增安全性至關重要。根據Ponemon的網路安全狀況報告,大約66%的組織在過去12個月中經歷過網路攻擊。它進一步披露,45%的攻擊受害者將攻擊歸咎於安全措施不足。除此之外,IBM還發現,企業平均需要197天才能發現資料洩露,而處理資料洩露則需要額外69天。
與網路攻擊造成的財務和聲譽損失相比,在CI/CD管帶實施安全加固措施十分明智。
CI/CD安全加固的6個步驟
1. 始終識別 CI 管道配置錯誤
錯誤配置是網路攻擊的主要原因之一,因為不法分子積極地尋求它們侵入系統。最近的一份報告發現,截至2021年,63%的第三方程式碼模板包含不安全的配置。
透過持續檢測和修正錯誤配置,可以顯著減少針對應用程式的惡意嘗試。使用強大的編碼、開發策略和自動化工具來阻止引入管道的風險並確保每個工作負載的完整性,可以發現管道弱點。
2. 監測可疑編碼模式
透過在開發週期的早期階段檢測程式碼中的bug,可以顯著增強應用程式的安全性。透過在管道中建立一個健壯的程式碼評審實踐可以實現,並能提高程式碼質量。
透過遵循安全編碼原則可以避免出現軟體缺陷,同時攻擊者可能利用漏洞來執行惡意程式碼,因此需要監視、定位和標記可疑編碼模式。透過模式匹配或使用自動程式碼安全工具識別正規表示式或字元序列等策略來實現這一點。
透過在儲存庫中使用帶有配置的程式碼掃描機制的拉請求檢查,可以識別拉請求中的缺陷,檢查突出顯示的程式碼段,並啟動修復。
3. 自動化與人工稽核相結合
自動化已成為現代應用程式開發領域的必需品。它有助於加快產品開發速度,從而為組織提供競爭優勢。這同樣適用於安全管理。透過實施自動化,可以顯著改善管道安全狀況。IaC(基礎結構即程式碼)和 PaC(策略即程式碼)是兩種廣泛使用的 DevOps 實踐。
4. 團隊合作主動利用現有的工具和框架
DevOps 在很大程度上依賴於自動化來加速開發、配置、測試和部署,從而更快地釋出產品。如此快速的速度是透過使用多種工具和框架來實現的,這些工具和框架不僅可以加快流程,還可以快速識別和解決錯誤、漏洞和缺陷。它們還自動執行監控、測試和基礎設施管理等關鍵流程,減少不準確的範圍。可以使用多種型別的 CI/CD 工具來增強管道,例如:
CI 工具:持續整合工具能夠將程式碼整合到共享儲存庫中,以自動執行生成、測試和報告。它們有助於多個程式碼整合並自動執行驗證過程,以審查和識別程式碼問題。
CD 工具:持續部署和交付工具可在將軟體推送到生產階段之前實現自動化測試和手動審查。使用 CD 工具可以加快軟體釋出速度,並提高產品的質量和可靠性。
配置管理工具:這些工具可以有序地跟蹤和管理更改。
5. 在管道中構建持續測試
傳統上,開發人員會把測試留到軟體開發的最後階段。但這種方法會使得每發現缺陷都要回到原點從根源上解決問題。實現持續測試策略是加強CI/CD管道安全性的一種更有效的方法。它意味著在開發週期的每個階段注入軟體測試。
可以採用的一些測試實踐包括:
SAST:SAST(靜態應用程式安全測試)可整合到軟體開發生命週期中,具有對應用程式原始碼和二進位制程式碼的掃描訪問許可權。直接面對原始碼進行分析,可以查詢程式碼缺陷問題,安全漏洞及一些執行時缺陷。透過SAST可以提供對程式碼的實時審查,快速改善安全問題。
DAST: DAST(動態應用程式安全測試)可以掃描應用程式及其相關結構,而不需要看到原始碼、技術或框架。因此,它也被稱為“黑盒測試”。它突出了SQL隱碼攻擊和跨站點指令碼等安全風險。
滲透測試:滲透測試是一種測試練習,透過模擬虛假網路攻擊以瞭解後門或端點漏洞等應用程式弱點。它突出顯示了授權問題、業務邏輯漏洞和工作流差距等威脅。
6. 自動化資料安全
除了自動執行安全管理之外,還應自動執行安全過程,包括資料安全性。這主要是因為產品版本與新資料庫、資料模型或新資料集相關聯。從生產環境中提取資料以執行測試和驗證功能時,必須保護敏感資料。
CI/CD可以說是關鍵的DevOps實踐,它形成了整個軟體開發過程的焦,並且包含關鍵的應用程式元件,如原始碼、儲存庫和容器框架,因此可以理解,為什麼攻擊者將CI/CD視為攻擊應用程式的熱門目標。
來源:
https://spectralops.io/blog/ci-cd-security-hardening/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70000012/viewspace-2922754/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用Spring Boot設定GitLab CI/CD管道 - MarcusSpring BootGitlab
- 一篇文章瞭解CI/CD管道全流程
- CI & CD ?
- Azure DevOps+Docker+Asp.NET Core 實現CI/CD(二.建立CI持續整合管道)devDockerASP.NET
- CI/CD理解
- dagger:用於CI/CD管道的行動式開發工具包
- IT安全性如何提高
- CI/CD的概述
- Bitbucket Pipes釋出,帶來30+自動化CI/CD管道的方法
- 如何使用通用軟體簡化CI/CD?
- 微服務架構下 CI/CD 如何落地微服務架構
- 前端初探 Gitlab CI/CD前端Gitlab
- Gitlab-CI/CD 2Gitlab
- Drone CI/CD 介紹
- gitlab 實現CI/CDGitlab
- SATA如何提高安全性?
- 什麼是 CI/CD? - reddit
- java ci/cd環境搭建Java
- Android Gitlab CI/CD指令碼AndroidGitlab指令碼
- CISO 如何在CI/CD環境中維護安全
- 簡述如何使用ArgoCD實現CI/CD部署? - redditGo
- jenkins如何構建github上的程式碼(ci cd)JenkinsGithub
- CI和CD之間的真正區別 -Fire CI
- 基於 GitLab CI 的前端工程CI/CD實踐Gitlab前端
- sata硬碟如何提高安全性硬碟
- SAST 如何提高整體安全性?AST
- Tekton雲原生CI/CD介紹
- 純 Git 實現前端 CI/CDGit前端
- Drone CI For Github —— 打造自己的CI/CD工作流(一)Github
- 如何提高Linux伺服器安全性?Linux伺服器
- 如何提高web伺服器安全性Web伺服器
- 如何提高SDLC中的左移安全性?
- 極狐GitLab CI/CD 作業不執行,如何處理?Gitlab
- 使用Github Action 進行CI-CDGithub
- GitLab CI-CD 學習筆記Gitlab筆記
- Kubernetes 部署 - DevOps CI/CD詳細指南dev
- 用 Jenkins 構建 CI/CD 流水線Jenkins
- SAP ABAP的CI/CD解決方案