導(dǎo)讀:在這個時代,安全團隊將重點轉(zhuǎn)移到使開發(fā)人員能夠更安全地構(gòu)建代碼,并且開發(fā)人員在安全配置的云計算環(huán)境中對基于安全基礎(chǔ)的安全代碼負責(zé)。
采用云優(yōu)先策略的企業(yè)正在以驚人的速度發(fā)展。規(guī)模較大的企業(yè)可能每天進行數(shù)千次部署,同一時期的代碼更改次數(shù)可能達到數(shù)十萬次。
除此之外,以技術(shù)為中心的企業(yè)可能會雇用數(shù)百名開發(fā)人員:在這種情況下,跟蹤和理解每個項目或準確跟蹤他們的工作變得極其困難。這樣的速度和數(shù)量意味著早期設(shè)計的安全程序(安全團隊在部署之前檢查和測試代碼)不再實用。
在成功采用DevOps之后,現(xiàn)在已經(jīng)進入了DevSecOps時代,在這個時代,安全團隊將重點轉(zhuǎn)移到使開發(fā)人員能夠更安全地構(gòu)建代碼,并且開發(fā)人員在安全配置的云計算環(huán)境中對基于安全基礎(chǔ)的安全代碼負責(zé)。
如果這聽起來像是增加很多額外的工作,那么事實上,典型的云計算應(yīng)用程序中只有大約20%的代碼是其應(yīng)用程序所獨有的,這又使情況變得更加復(fù)雜。其余情況還包括Linux操作系統(tǒng)文件、開放源代碼庫、它們的依賴項和其他繼承的元素。開發(fā)人員需要更多幫助來確定應(yīng)用程序中潛在的漏洞、更廣泛的代碼庫和配置。需要采用自動化技術(shù)來采用高度復(fù)雜的安全工具集。
工作中的安全自動化
實現(xiàn)自動化可以采取多種形式,進入這一領(lǐng)域的第一步將取決于企業(yè)的實際情況及其主要痛點。第一步是確保按設(shè)置的時間間隔自動掃描應(yīng)用程序及其組件的漏洞。正如美國一家云計算通信平臺即服務(wù)公司的高級安全工程師所說:“自動化是大規(guī)模確保安全性的關(guān)鍵,因為它消除了人為錯誤。當(dāng)我們實現(xiàn)自動化時,就會發(fā)現(xiàn)更多的漏洞?!毙枰涀〉氖?,即使在正常情況下進行掃描,對于訓(xùn)練有素的團隊而言,這也會造成潛在的薄弱環(huán)節(jié),此外,如果已經(jīng)實現(xiàn)了自動化,那么這是一項多余的工作。
這家云通信公司的團隊已經(jīng)將這種自動化技術(shù)向前推進了一步。他們開發(fā)了一個GitHub應(yīng)用程序,該應(yīng)用程序利用該工具的API來監(jiān)視該公司應(yīng)用程序主要分支的更改和提取請求。當(dāng)拉取請求合并時,它將自動導(dǎo)入項目以進行掃描。當(dāng)創(chuàng)建、刪除或重命名項目時,它也會做出反應(yīng),觸發(fā)適當(dāng)?shù)陌踩胧?。該公司現(xiàn)在已經(jīng)開放了該工具的源代碼,這可以讓其他人從其創(chuàng)新中受益。
一家在線旅行社對其系統(tǒng)是否存在安全漏洞十分關(guān)注。該公司正在經(jīng)歷以上提到的大規(guī)??焖侔l(fā)展的情況,因此需要采用自動化技術(shù)。該公司一位軟件工程師指出:“以我們目前的經(jīng)營規(guī)模,人工審查代碼和配置是一場噩夢?!痹摴緵Q定構(gòu)建自己的儀表板應(yīng)用程序,以便開發(fā)人員和管理人員能夠通過API調(diào)用來收集信息,從而為開發(fā)人員和管理人員提供跨項目安全所需的可見性。
由于在管道流程方面需要協(xié)助,促使一家美國媒體公司創(chuàng)建了自己的內(nèi)部應(yīng)用程序,該應(yīng)用程序通過Cloudtrail檢測新的容器映像,掃描它們中的漏洞,并使用其安全工具的API來獲取結(jié)果和處理這些信息,為相關(guān)團隊和開發(fā)人員創(chuàng)建Jira票證。該公司的平臺工程總監(jiān)表示,該業(yè)務(wù)可以處理數(shù)千個容器映像以及多達7000個代碼存儲庫。只有通過盡可能多地實現(xiàn)工作流程的自動化,才能確信風(fēng)險得到了持續(xù)發(fā)現(xiàn)和緩解。
不斷實現(xiàn)自動化
隨著企業(yè)不斷實現(xiàn)自動化,必須考慮多種因素才能獲得最佳效果。首先,這很可能會影響安全工具的整體選擇,并且希望自動化工具有更強的適應(yīng)性。在制定決策時,功能強大且文檔齊全的API的可用性似乎并不總是被優(yōu)先考慮,而是創(chuàng)建完全可以滿足企業(yè)需求的安全自動化工具。對于其他企業(yè)(通常是規(guī)模較小的企業(yè)),選擇的編程語言所固有的SDK的可用性將是絕對必要的。
當(dāng)這家媒體公司開發(fā)自己的內(nèi)部應(yīng)用程序時,該公司平臺工程總監(jiān)強調(diào)的第二個關(guān)鍵點是仔細考慮自動化的結(jié)果。如果一次掃描可以檢測到數(shù)千個漏洞,那么簡單地出現(xiàn)故障單,要求解決所有漏洞問題,可能會很快造成低級別作業(yè)的日志阻塞,并讓開發(fā)團隊感到沮喪。與其相反,系統(tǒng)會過濾掉不可修復(fù)或無法利用的漏洞,并根據(jù)這些漏洞對應(yīng)用程序安全性的影響程度對任務(wù)進行優(yōu)先級排序。該系統(tǒng)還使開發(fā)人員更輕松地處理故障單,提供有關(guān)補丁可用性的建議以及描述漏洞性質(zhì)的文檔鏈接。
關(guān)于自動化項目的最后一點是要確保始終記住目標是使工作盡可能輕松。創(chuàng)建新的流程、新的工具或跳轉(zhuǎn)的方法可能是必要的一步。在可能的情況下,盡量使用開發(fā)人員日常使用的工具,無論是通過IDE、存儲庫還是票務(wù)系統(tǒng)。當(dāng)自動化在不增加問題的情況下實現(xiàn)安全性時,這就是企業(yè)應(yīng)該努力實現(xiàn)的理想組合。