DevSecOps與SecDevOps
DevSecOps是一種在敏捷環(huán)境中進行持續(xù)軟件開發(fā)過程的相對較新的方法。它是包括安全自動化的DevOps(開發(fā)+運營)的擴展。但是,DevSecOps名稱中順序可能會導(dǎo)致不正確的應(yīng)用程序安全操作方法。這也是為什么有些人認為稱SecDevOps或許是一個更好的術(shù)語。
傳統(tǒng)的DevOps流程不包括安全性。這也就意味著許多實踐DevOps文化的軟件開發(fā)企業(yè)最初不存在安全團隊,甚至在開發(fā)期間并沒有關(guān)注到安全問題。多數(shù)情況下,安全是在部署應(yīng)用程序后對其進行測試,因此可以稱之為DevOpsSec。但這種方法可能導(dǎo)致開發(fā)出現(xiàn)重大延遲,并且不適合包含安全性的敏捷DevOps實踐。
低效的DevSecOps方法
在常見的持續(xù)開發(fā)過程中,業(yè)務(wù)部門有一個獨立的安全團隊負責(zé)進行安全測試,而不是作為開發(fā)的以部門。在這種情況下,開發(fā)團隊使用CI/CD(持續(xù)集成/持續(xù)交付)解決方案構(gòu)建應(yīng)用程序。使用這種解決方案自動編譯新代碼,然后進行測試(但不包括安全性測試)。當(dāng)代碼準(zhǔn)備好后,應(yīng)用程序就被部署到一個臨時環(huán)境中,這時安全團隊就開始對其進行工作(手動或使用自動化工具)。
這種方法的問題在于,安全問題往往是在流程的后期才被發(fā)現(xiàn)。當(dāng)安全團隊發(fā)現(xiàn)安全問題時,就需要更正應(yīng)用程序,并重新執(zhí)行整個過程。這種方式并不敏捷,而且還給安全團隊造成了瓶頸。在最壞的情況下,由于最終上線時間的到來而無法返回重新構(gòu)建,沒有時間來修復(fù)安全缺陷,那很可能在存在安全問題的情況下發(fā)布了應(yīng)用程序。
SecDevOps - 安全最佳實踐
將網(wǎng)絡(luò)安全納入開發(fā)工作流程的正確方法是將安全視為第一優(yōu)先事項,也就是說在構(gòu)建軟件開發(fā)初期就將安全問題考慮進來。安全實踐應(yīng)該包含在應(yīng)用程序開發(fā)的每個階段。安全團隊可能更專注于安全策略,監(jiān)督持續(xù)的部署,并執(zhí)行高級手動滲透測試。DevOps管道中的其他團隊?wèi)?yīng)該盡可能多地執(zhí)行安全任務(wù)。
SecDevOps方法從教育開始。安全團隊?wèi)?yīng)提供關(guān)于安全編碼和安全開發(fā)實踐的培訓(xùn)。例如,應(yīng)該教導(dǎo)開發(fā)人員不要輕易相信用戶輸入,并在源代碼中使用參數(shù)化查詢或存儲過程,以避免SQL注入漏洞。測試開發(fā)人員和QA團隊學(xué)會如何使用靜態(tài)應(yīng)用安全測試及動態(tài)應(yīng)用安全測試工具,以及如何為開發(fā)周期創(chuàng)建安全測試。教導(dǎo)運營團隊如何定期進行安全漏洞檢測。
構(gòu)建安全軟件的秘訣
無論是DevSecOps還是SecDevOps,重要的是意識到安全不應(yīng)該是開發(fā)和部署過程中的一個孤島,而是軟件開發(fā)生命周期中每個活動的組成部分。構(gòu)建安全的產(chǎn)品需要廣泛的安全策略,并遵循網(wǎng)絡(luò)安全框架。而這些與選擇何種工具、有多少安全專業(yè)人員無關(guān),而是如何確保團隊的每個成員在工作中考慮到潛在的安全挑戰(zhàn)。
