快速的數字化和越來越多的遠程業務運營給開發人員帶來了沉重的負擔,他們不斷面臨著更快推出軟體的壓力,盡管CI/CD 加速了產品發布,但它容易受到網路安全問題的影響,例如代碼損壞、安全配置錯誤和機密管理不善,通過應用最佳實踐來保護 CI/CD 流水線,可以確保代碼質量、管理風險并保持完整性,鑒于 CI/CD 在管理軟體生命周期中發揮的關鍵作用,因此保護 CI/CD 流水線應該是企業的首要任務,
CI/CD 安全的重要性
Sonatype 近期發布的報告表明旨在滲透開源軟體供應鏈的網路攻擊激增了 430%,報告還發現,51% 的受訪企業需要一周以上的時間來修復新的零日漏洞,CI/CD 安全性在于識別和減輕軟體交付流水線中的安全風險,以產出可靠且無風險的高質量軟體產品,每個企業或產品都有基于其關鍵流程和工具的獨特 CI/CD 流水線,但強化 CI/CD 安全性的基本理念是避免資料泄露和應用程式中斷,
CI/CD 流水線的核心包括源代碼、應用程式代碼存盤庫、容器和構建服務器等關鍵開發組件,使其成為攻擊者的主要目標,隨著流水線復雜性的增加,以及多個生產環境的出現,實施安全措施變得具有挑戰性,但如果沒有實施 CI/CD 安全措施,攻擊者可以利用其漏洞進行重大攻擊,流水線安全漏洞可能造成的一些風險包括:
- 不安全的代碼: 缺乏代碼掃描程式會引入惡意代碼和漏洞,網路攻擊者可以利用這些漏洞造成嚴重破壞,
- 軟體供應鏈攻擊: 對開源和第三方代碼庫的過度依賴是資料泄露事件的主要原因之一,由此造成的軟體供應鏈攻擊將會給企業帶來巨大影響和損失,
- 泄露機密: 不當的安全管理可能允許企業里的任何人在流水線中使用的多種工具來利用敏感資料,例如憑據,
- 不安全的系統配置: 未能準確配置基礎設施、網路或應用程式可能會使企業的系統容易受到網路攻擊,
- 缺乏訪問控制: 不實施基于流水線的訪問控制使惡意行為者可以訪問關鍵資源和資產,
強化 CI/CD 安全的6個步驟
1. 識別 CI 流水線錯誤配置
錯誤配置是網路攻擊的主要原因之一,惡意攻擊者積極尋求錯誤配置來侵入企業系統,最近的一份報告發現(參考鏈接),截至 2021 年,63% 的第三方代碼模板包含不安全的配置,通過持續檢測和修復錯誤配置,可以顯著減少針對企業應用程式的惡意嘗試,使用強大的編碼、開發策略和自動化工具來阻止引入流水線的風險并確保每個作業負載的完整性,可以發現流水線的弱點,
大多數企業通常采用 IaC(基礎架構即代碼)和 PaC(策略即代碼)來管理錯誤配置,作為 DevOps 原則,企業需要限制對配置的訪問,可以通過對關鍵功能(例如將代碼更改提交到存盤庫、創建容器和部署代碼)執行最低權限訪問控制來做到這一點,
2. 可疑編碼模式標記為拉取請求
通過在開發周期的早期階段檢測代碼中的錯誤,可以顯著增強應用程式的安全性,這是通過在流水線中建立強大的代碼審查實踐,來提高代碼質量,雖然遵循安全編碼原則可以避免產品缺陷,但惡意攻擊者可能還是會發現漏洞并利用它執行惡意代碼,這也就是企業必須監控、定位和標記可疑編碼模式的原因,可以通過模式匹配等策略或使用自動代碼安全工具來識別正則運算式或字符序列來做到這一點,
通過使用已配置的代碼掃描機制在存盤庫中使用拉取請求檢查,來識別拉取請求中的缺陷、查看突出顯示的代碼段并啟動補救措施,此外,可以使用代碼掃描來識別打開的拉取請求并添加警報,
3. 將自動化與人工相結合
自動化已成為現代應用程式開發環境中的必需品,自動化提高了產品開發效率,從而為企業提供了競爭優勢,這同樣適用于安全管理,企業可以通過實施自動化顯著改善企業的流水線安全狀況,IaC(基礎設施即代碼)和 PaC(策略即代碼)是兩種廣泛使用的 DevOps 實踐,
IaC: IaC 是通過自動化基礎設施配置而不是容易出錯的手動程序來確保安全配置的程序,使用 IaC,企業可以對基礎架構狀態進行編碼,創建配置需求模板以輕松管理、監控和分發資源,除了提高團隊的作業效率外,IaC 還有助于代碼跟蹤和審查以避免代碼損壞,
PaC: 隨著安全成為關鍵問題,PaC 的概念被引入,與 IaC 類似,可以通過撰寫策略、規則和作業流來自動執行安全和合規性法規,由于企業將策略代碼保存在版本控制系統中,因此可以輕松跟蹤對安全要求所做的更改,
4. 積極利用現有工具和框架
DevOps 依賴自動化來加速開發、配置、測驗和部署,從而更快地發布產品,如此快速的步伐是通過使用多種工具和框架來實作的,這些工具和框架不僅可以加快流程,還可以快速識別和解決錯誤、漏洞和缺陷,這些工具還能夠自動化關鍵流程,如監控、測驗和基礎設施管理,以減少不準確的范圍,企業可以使用多種型別的 CI/CD 工具來加強流水線,例如:
- CI 工具: 持續集成工具能夠將代碼集成到共享存盤庫中,以自動化構建、測驗和報告,CI 工具可以促進多個代碼集成并自動化驗證程序以審查和識別代碼問題,
- CD 工具: 持續部署和交付工具可在將軟體推入生產階段之前進行自動化測驗和手動審查,使用 CD 工具,可以加快軟體發布并提高產品的質量和可靠性,
- 配置管理工具: 這些工具可幫助有序地跟蹤和管理更改,幫助企業自動批準和拒絕對配置所做的更改,
5. 在流水線中構建持續測驗
傳統開發流程上,開發人員會將測驗留到軟體開發的最后階段,然而這種測驗方式效率并不高,因為每發現一個問題開發人員就需要回到原點進行排查,以便從根本上解決它問題,實施持續測驗策略是加強 CI/CD 流水線安全性的更有效方法,這意味著在開發周期的每個階段都注入軟體測驗并采用左移流程,例如,SAST、DAST 以及滲透測驗,
6. 自動化資料安全
除了自動化安全管理之外,企業還應該自動化安全程式,包括資料安全,這主要是因為產品發布與新資料庫、資料模型或新資料集是相關聯的,從生產中提取資料以運行測驗和驗證功能時,必須保護敏感資料,例如違反資料治理策略的個人身份資訊,企業可以采用多種策略來自動化資料安全,例如:
資料屏蔽
雖然開發和測驗團隊需要生產中的真實資料,但他們可以避免在流程的其他階段訪問這些資料,資料屏蔽有助于解決這個問題,它會生成看似真實的敏感資料版本,以便可以繼續進行訓練或測驗,而不會影響實際資料,資料屏蔽通過更改資料的值但以相同的格式顯示它來作業,這樣,就可以自動化資料混淆,
合成資料
合成資料是另一種降低資料風險的方法,其中 AI 演算法會創建全新的字符序列,這意味著不使用原始資料的任何部分,從而實作零泄露風險,
服務虛擬化
服務虛擬化是另一種資料安全策略,可減少對敏感資料進行測驗的依賴,它會創建由于資料治理準則、維護問題或第三方依賴性而無法使用的應用程式組件的模擬行為,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/535176.html
標籤:其他
