FIND研究員:李啟榮
在DevOps循環中,某些開發團隊導入「左移(Shift left)」策略,讓開發流程每個環節導入安全開發方法,希望從源頭把關來減少上線運作前的問題;雖然「左移」可以從源頭解決大部分的已知安全性問題,但軟體進入實際運作過程中,仍可能發生一些未知的風險。
為減少在軟體上線運作中的潛在風險,維運團隊可導入「右移(Shift right)」策略,在可能發生風險的節點進行測試和分析,來補強實際上線環境運作中的安全性。
技術發展背景
傳統的DevOps指的是開發團隊和維運團隊不間斷的協同作業,來找出問題並解決問題;軟體開發最忌諱一步錯、步步錯,造成覆水難收的後果,因此開發團隊會在開發環節上,事先考慮安全性的要素,並進行安全分析與測試,將整體的安全性環節「向左(前)」推移,希望從源頭把關安全性問題、減少後續事故發生機率。
除了開發階段的源頭把關、提升軟體品質和安全性之外,軟體是否能達到真正安全高效率,就需要在實際上線過程中驗證和觀察才能知道;然而,軟體開發過程中雖可在「左移」階段解決大部分的安全隱憂,但也有可能在實際上線運作階段,安全漏洞才會暴露出來,因此監控維運團隊可導入「右移」的概念,將運作過程中暴露出的安全漏洞及時阻斷,並爭取黃金修復時機。
技術介紹與應用現況
開發過程實施「右移」策略的目的,就是為了避免在軟體實際上線時發生意外事故,讓原先「左移」的努力前功盡棄、功虧一簣;而開發團隊也能在實際維運的同時,檢驗功能性、效能、容錯性和使用體驗。
例如RedHat團隊所彙整的「右移」策略,可包含如下方法:
1.SIEM(系統資訊和事件管理)工具,來檢測、分析威脅來源和種類,並做出相應措施。
2.SOAR(安全化統籌、自動化暨回應)工具,利用自動化工具進行維運管理和應變。
3.金絲雀部署(Canary deployment),軟體發布時可先進行少量初期部署上線,若發生問題就可以即時應變和處理,避免在完整版全面上線時,發生牽一髮而動全身的後續錯誤。
4.A/B測試,藉由實驗組和對照組兩相比較的方法,來驗證實際上線部署時可能遇到的問題,並著手預防和排除。
5.故障注入測試,藉由故意執行錯誤動作來判定軟體實際上線的可靠度。
6.API安全防護測試,藉此找出軟體API可能的漏洞或錯誤。
7.混沌工程,一種以人為方式有意無意地干擾、弄亂系統的完整性,讓系統陷入「混沌」狀態,藉此進行整體系統容錯率評估的方法。
8.藍綠部署,採用分流和雙環境部署的方式,先將一部分流量導入至測試中環境(藍色),待測試安全無虞後再導回實際上線(綠色)環境。
另外,DevOps以「右移」策略實施,能帶來如下效益:
1.減少「持續交付(CD)」過程中發生的風險。
2.確保軟體在實際運作版本(Live production)萬無一失。
3.藉由蒐集使用者意見回饋,讓開發團隊及時新增/移除/變更軟體特定機能。
4.增加軟體整體運作效率。
5.提升跨團隊協同作業效率,包含品管團隊、開發團隊、使用者體驗(UX)團隊、客服團隊等。
6.讓交付速率比以往更為快速。
7.及時發現Bug並予以排除,減少後續傷害。
未來展望/挑戰
DevOps團隊可藉由同時發揮「左移」和「右移」兩策略的特長,除了從源頭把關軟體安全之外,更要密切注意上線運作當下的突發狀況,來減少可觀的業務衝擊和災後復原成本。
未來接隨著進一步導入人工智慧,除了當作軟體開發的得力助手,也能及時對潛在威脅作出應變處置,阻斷並排除威脅,並藉由AI輔助下增進DevOps專案各別團隊的協同作業效率。
封面圖片來源: 123RF
參考資料來源:
1.Bernstein, C. (2024, August). What is shift-right testing? Retrieved from TechTarget: https://www.techtarget.com/searchsoftwarequality/definition/shift-right-testing
2.Gunja, S. (2024, May 21). Shift left vs shift right: A DevOps mystery solved. Retrieved from Dynatrace: https://www.dynatrace.com/news/blog/what-is-shift-left-and-what-is-shift-right/
3.(2024年3月19日). 簡單理解測試的左移與右移. 擷取自 RedHat: https://www.redhat.com/zh/topics/devops/shift-left-vs-shift-right