
API可觀察性對于現代應用程序的最大好處
2020 年的《軟件供應鏈狀況報告》震驚了世界,報告發現,旨在積極滲透開源軟件供應鏈的下一代網絡攻擊激增了 430%。報告還發現,51% 的組織需要一周以上的時間來修復新的零日漏洞。在此背景下,CI/CD 對 DevOps 的影響是巨大的:它可以幫助開發人員以83% 的速度發布代碼,讓他們可以專注于更多測試,包括安全性。但 CI/CD 本身的安全性又如何呢?
CI/CD 安全性旨在識別和緩解軟件交付管道中的安全風險,以便您生產出可靠且無風險的高質量產品。每個組織或產品都有基于其關鍵流程和工具的獨特 CI/CD 管道。但強化 CI/CD 安全性的根本思想是避免數據泄露和應用程序中斷。
從本質上講,CI/CD 管道由關鍵開發組件組成,例如源代碼、應用程序代碼存儲庫、容器和構建服務器,因此成為攻擊者的主要目標。即使單個組件受到攻擊,也可能讓攻擊者有機會利用您的資源。此外,隨著管道變得越來越復雜,多個生產環境也開始出現,實施安全措施也變得越來越具有挑戰性。
如果沒有實施 CI/CD 安全措施,攻擊者可以利用其漏洞發動重大攻擊。管道安全漏洞可能造成的一些安全風險包括:
CI/CD 管道是 DevOps 實踐的核心原則,專注于簡化開發和運營之間的協作。雖然它在加快產品發布方面帶來了革命性的好處,但它在軟件開發的一個重要部分——安全性方面卻有所欠缺。這就是 DevSecOps 作為一個獨特而及時的概念發展起來的地方。它是一種“左移”方法,在軟件開發過程的每個階段都集成安全性,以安全性為核心構建應用程序,而不是在應用程序交付后將安全性視為事后考慮。
隨著網絡攻擊的增多,在 CI/CD 管道中增加安全性至關重要。根據 Ponemon 的《網絡安全狀況報告》 ,過去 12 個月中約有 66% 的組織遭受過網絡攻擊。報告進一步披露,45% 的攻擊受害者將攻擊歸咎于安全措施不足。此外,IBM還發現,企業平均需要 197 天才能發現數據泄露,并需要另外 69 天來解決它。
SolarWinds 事件被認為是近年來最嚴重的網絡攻擊之一,其復雜程度令人困惑。攻擊者設計了一個自定義惡意軟件來觀察構建周期的每個步驟,以檢測和利用漏洞。2020年的這次攻擊導致包括美國政府機構在內的數千家組織的數據泄露。最可怕的部分是什么?它始于一個小錯誤:SolarWinds 實習生在公共 GitHub 服務器上暴露了一個錯誤選擇的密碼。如果 SolarWinds 使用秘密掃描儀,這一切都可以避免。
在這種情況下實施 CI/CD 安全強化措施,與網絡攻擊造成的財務和聲譽損失相比似乎是一筆劃算的交易。
CI/CD 管道涵蓋開發過程的不同階段,需要全面的安全強化措施。以下是可以幫助您端到端管理和緩解 CI/CD 安全風險的最佳實踐列表。
配置錯誤是網絡攻擊的主要原因之一,因為惡意攻擊者會積極尋找配置錯誤來入侵您的系統。組織尚未主動發現和修復此類問題。最近的一份報告發現,截至 2021 年,63% 的第三方代碼模板包含不安全的配置。
通過持續檢測和修復錯誤配置,您可以顯著減少針對應用程序的惡意攻擊。使用強大的編碼、開發策略和自動化工具來阻止引入管道的風險并確保每個工作負載的完整性,您可以發現管道弱點。
組織通常采用 IaC(基礎設施即代碼)和 PaC(策略即代碼)策略來管理錯誤配置。我們將在博客的后半部分詳細討論這些內容。作為 DevOps 原則,您必須限制對配置的訪問。您可以通過對關鍵功能(例如將代碼更改提交到存儲庫、創建容器和部署代碼)實施最小特權訪問控制來做到這一點。?
通過在開發周期的早期階段檢測代碼中的錯誤,您可以顯著增強應用程序的安全性。這是通過在流程中建立強大的代碼審查實踐來提高代碼質量來實現的。
雖然遵循安全編碼原則對于避免產品缺陷至關重要,但攻擊者也完全有可能找到漏洞并利用它來執行惡意代碼。這就是為什么您必須監控、定位和標記可疑編碼模式。您可以通過模式匹配等策略或使用自動代碼安全工具來識別正則表達式或字符序列來實現這一點。
通過在存儲庫中使用配置的代碼掃描機制進行拉取請求檢查,您可以識別拉取請求中的缺陷、查看突出顯示的代碼片段并啟動補救措施。此外,您還可以使用代碼掃描來識別未完成的拉取請求并添加警報。
自動化已成為現代應用程序開發領域的必需品。它有助于加快產品開發速度,從而為組織帶來競爭優勢。安全管理也是如此。通過實施自動化,您可以顯著改善管道安全狀況。IaC(基礎設施即代碼)和 PaC(策略即代碼)是兩種廣泛使用的 DevOps 實踐。
IaC 是通過自動化基礎設施配置(而不是容易出錯的手動過程)來確保安全配置的過程。借助 IaC,您基本上可以編纂基礎設施狀態,創建配置要求模板,以便輕松管理、監控和分配資源。除了提高團隊的工作效率外,IaC 還可以促進代碼跟蹤和審查,以避免代碼損壞。
隨著安全成為主要關注點,PaC 的概念應運而生。與 IaC 類似,PaC 可通過編纂策略、規則和工作流程來自動實施安全和合規性法規。由于您將策略代碼保存在版本控制系統中,因此您可以輕松跟蹤對安全要求所做的更改。
DevOps 高度依賴自動化來加速開發、配置、測試和部署,從而更快地發布產品。如此快速的速度是通過使用多種工具和框架來實現的,這些工具和框架不僅可以加快流程,還可以快速識別和解決錯誤、漏洞和缺陷。它們還可以自動化關鍵流程,如監控、測試和基礎設施管理,以減少不準確的范圍。您可以使用多種類型的 CI/CD 工具來加強您的管道,例如:
CI 工具: 持續集成工具可讓您將代碼集成到共享存儲庫中,以自動執行構建、測試和報告。它們有助于實現多個代碼集成,并自動執行驗證流程以審查和識別代碼問題。
CD 工具: 持續部署和交付工具可在將軟件推向生產階段之前實現自動測試和人工審核。使用 CD 工具,您可以加快軟件發布速度并提高產品的質量和可靠性。
配置管理工具:這些工具可幫助您有序地跟蹤和管理變更。它們使您能夠自動批準和拒絕對配置所做的更改。
傳統上,開發人員會將測試留到軟件開發的最后階段。然而,這是一種繁瑣的方法,因為每個發現的缺陷都迫使他們回到原點,以便從根本上解決問題。實施持續測試策略是加強 CI/CD 管道安全性的更有效方法。這意味著在開發周期的每個階段都注入軟件測試并采用左移流程。
您可以采用的一些測試實踐包括:
SAST:?SAST(靜態應用程序安全測試)是解決方案類別,其中包含一些最強大的工具,可在談到左移安全性時集成到您的軟件開發生命周期中。它將具有對應用程序源代碼和二進制代碼的掃描訪問權限。您可以使用靜態分析測試框架、設計和實施方法。它為您提供實時審查,以快速改善您的安全狀況。
DAST:?DAST(動態應用程序安全測試)是一種無需查看源代碼、技術或框架即可掃描應用程序及其相關結構的方法。因此,它也被稱為“黑盒安全測試”。它突出顯示了 SQL 注入和跨站點腳本等安全風險。
滲透測試:?滲透測試是一種測試練習,通過觸發虛假網絡攻擊來了解應用程序的弱點,例如后門或端點漏洞。它突出顯示諸如授權問題、業務邏輯漏洞和工作流程漏洞等威脅。
除了自動化安全管理之外,您還應該自動化安全程序,包括數據安全。這主要是因為產品發布與新數據庫、數據模型或新數據集相關。當從生產中提取數據來運行測試和驗證功能時,您必須保護敏感數據,例如違反數據治理政策的個人身份信息。
您可以采用多種策略來實現數據安全的自動化。以下是一些示例:
雖然開發和測試團隊在生產過程中需要真實數據,但他們可以避免在流程的其他階段訪問這些數據。數據屏蔽有助于實現這一點。它會生成看似虛假的敏感數據真實版本,以便您可以繼續進行訓練或測試而不會影響實際數據。數據屏蔽的工作原理是更改數據的值但以相同的格式呈現數據。這樣,您就可以自動化數據混淆,從而實現 CI/CD 管道。
合成數據是降低數據風險的另一種方法,其中人工智能算法會創建一個全新的字符序列。這意味著原始數據的任何部分都不會被使用,從而實現零泄露風險。
服務虛擬化是另一種數據安全策略,它減少了對敏感數據的依賴,從而可以進行測試。它創建了由于數據治理準則、維護問題或第三方依賴而不可用的應用程序組件的模擬行為。
CI/CD 可以說是最重要的 DevOps 實踐,是整個軟件開發過程的焦點。它包括關鍵的應用程序組件,如源代碼、存儲庫和容器框架,因此可以理解的是,攻擊者將 CI/CD 視為攻擊應用程序的熱門目標。這使得管道的安全性強化變得輕而易舉。雖然我們討論了保護 CI/CD 管道的關鍵方面,但強大的監控和審計對于確保管道安全并正常運行同樣重要。
文章來源:6 Steps for Success with CI/CD Security Hardening