原創(chuàng)|其它|編輯:鄭恭琳|2020-09-03 14:50:57.253|閱讀 335 次
概述:連續(xù)測試提供了一個(gè)框架,可以在生命周期的早期階段進(jìn)行測試??梢院喕瘻y試并使其在敏捷和連續(xù)過程中更少地成為抑制劑。需要做些什么?正確的自動(dòng)化應(yīng)用程序,并通過使用容器進(jìn)行安全的軟件開發(fā),將精力集中在應(yīng)用程序的最高風(fēng)險(xiǎn)領(lǐng)域。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
連續(xù)測試提供了一個(gè)框架,可以在生命周期的早期階段進(jìn)行測試。可以簡化測試并使其在敏捷和連續(xù)過程中更少地成為抑制劑。需要做些什么?正確的自動(dòng)化應(yīng)用程序,并通過使用容器進(jìn)行安全的軟件開發(fā),將精力集中在應(yīng)用程序的最高風(fēng)險(xiǎn)領(lǐng)域。
容器在左移測試中扮演重要角色。并成功地進(jìn)行了持續(xù)測試和DevSecOps一般。隨著容器化的開發(fā)和測試環(huán)境提供與部署一樣的好處,它們也對開發(fā)有所幫助。這里有一些:
容器在現(xiàn)代DevSecOps開發(fā)中扮演著重要角色,因?yàn)槿萜骺梢詭椭浖_發(fā)中的安全流程向左移動(dòng)。
帶有容器和持續(xù)測試的加速DevSecOps白皮書詳細(xì)介紹了利用容器進(jìn)行安全軟件開發(fā)以實(shí)現(xiàn)快速安全性的方法。這篇文章著眼于白皮書中討論的以下關(guān)鍵領(lǐng)域,以更好地將容器集成到軟件開發(fā)的開發(fā)和測試階段:
目標(biāo)是實(shí)現(xiàn)更好的安全性,同時(shí)最大程度地減少對日常工作流程的影響。
通過利用容器提供的一致性和可重用性,當(dāng)團(tuán)隊(duì)中的每個(gè)開發(fā)人員和測試人員都使用相同的配置進(jìn)行工作時(shí),連續(xù)的安全性測試最有效。將工具和相關(guān)的配置移動(dòng)到容器中可確保一致的使用,任何更改均會立即傳播。更智能的DevSecOps工作流程意味著從一開始就將“安全性”納入其中。
安全要求為開發(fā)人員增加了額外的工作量。您的管理方式使準(zhǔn)時(shí)安全的產(chǎn)品與較晚且不安全的產(chǎn)品有所不同。至關(guān)重要的要求是將安全性集成到現(xiàn)有的開發(fā)過程中,從而減輕負(fù)擔(dān),減少部分質(zhì)量和整個(gè)工作流程。
圖1:DevSecOps工作流程,其中包含安全控制和流程的容器化實(shí)現(xiàn)。
工作流程
工作流程始于安全的編碼策略。架構(gòu)師或負(fù)責(zé)人創(chuàng)建一個(gè)配置(可能基于由諸如UL-2900或PCI DSS之類的標(biāo)準(zhǔn)驅(qū)動(dòng)的CERT,CWE,OWASP等編碼準(zhǔn)則),以便團(tuán)隊(duì)的其他成員直接在其IDE中使用。這使開發(fā)人員能夠在提交到源代碼管理之前在其計(jì)算機(jī)上本地檢查代碼。他們可以在何時(shí)何地更便宜、更容易地發(fā)現(xiàn)并修復(fù)安全違規(guī)行為。
組態(tài)
通過容器映像復(fù)制相同的配置,以提供一致性,然后通過在構(gòu)建過程中執(zhí)行的分析來利用相同的配置。這項(xiàng)全面的分析超出了開發(fā)人員本地修改的代碼的范圍,并提供了一個(gè)安全網(wǎng)來控制交付管道,以確保不安全的代碼不會被提升到后續(xù)階段。
分析
最后,分析結(jié)果通過集中的報(bào)告和分析儀表板發(fā)送回開發(fā)人員的IDE。在這里,您可以跟蹤進(jìn)度,進(jìn)行課程更正并實(shí)時(shí)生成審核報(bào)告。
經(jīng)理和安全負(fù)責(zé)人可以基于中央儀表板中的CWE Top 25,OWASP Top 10或SEI CERT等安全標(biāo)準(zhǔn)評估項(xiàng)目。這些儀表板可以顯示趨勢信息并回答以下問題:
能夠回答這些和其他問題并采取行動(dòng),將開發(fā)團(tuán)隊(duì)從具有一定安全性的DevOps轉(zhuǎn)變?yōu)镈evSecOps。
盡管渴望提高安全性和質(zhì)量,但敏捷和持續(xù)的流程在早期采用和日常運(yùn)營中遇到了障礙。減慢敏捷過程的罪魁禍?zhǔn)淄ǔJ菧y試。之所以出現(xiàn)問題,是因?yàn)閳F(tuán)隊(duì)不完全了解每次迭代期間要測試的內(nèi)容。他們要么嘗試測試所有內(nèi)容,要么測試不足,要么只是猜測。這三個(gè)結(jié)果都是不可接受的,特別是從安全角度來看。智能測試執(zhí)行可進(jìn)一步幫助團(tuán)隊(duì)集中精力進(jìn)行測試,真正實(shí)現(xiàn)連續(xù)測試。
測試金字塔
測試金字塔定義了在項(xiàng)目上投入時(shí)間和精力的最佳位置。在理想的金字塔中,您將寶貴的時(shí)間和精力投入到金字塔基礎(chǔ)上的一套全面的單元測試套件中,并由API和服務(wù)測試提供支持。金字塔頂端是較少數(shù)量的基于系統(tǒng)和GUI的測試。這些測試需要人工干預(yù),例如UX測試。
圖2:理想的測試金字塔是建立在單元測試基礎(chǔ)之上的。重疊的倒金字塔反映了許多組織當(dāng)前的工作。
該金字塔經(jīng)常被倒置成蛋卷冰淇淋形狀。團(tuán)隊(duì)花費(fèi)大量時(shí)間和精力進(jìn)行脆弱和復(fù)雜的系統(tǒng)級GUI測試,這些測試需要實(shí)現(xiàn)和集成完整的功能。結(jié)果是測試團(tuán)隊(duì)無法在SDLC的早期階段連續(xù)執(zhí)行。
這在安全性方面尤其成問題。將安全測試留到開發(fā)的后期階段既昂貴又冒險(xiǎn)。成功進(jìn)行連續(xù)測試的關(guān)鍵是融化冰淇淋蛋筒。專注于為功能和安全性創(chuàng)建自動(dòng)化的單元和API測試,這些測試可以在開發(fā)人員實(shí)施新功能時(shí)連續(xù)執(zhí)行。
測試最佳做法
使測試金字塔正面朝上的最佳方法(與DevSecOps所需的最佳實(shí)踐很好地吻合)是采用以下測試最佳實(shí)踐:
API級測試提供了以更高的可重用性和更少的UI級更改對系統(tǒng)功能進(jìn)行測試的功能。這意味著自動(dòng)化過程會生成大量數(shù)據(jù)。為了支持決策,必須將這些數(shù)據(jù)匯總到集中的質(zhì)量視圖中。圖形化的儀表板提供了測試進(jìn)度的頂級視圖。您可以基于對數(shù)據(jù)的檢查,發(fā)現(xiàn)的缺陷和其他問題來創(chuàng)建其他工作項(xiàng)。
通過智能測試執(zhí)行來提高安全性
上面列出的最佳實(shí)踐缺少集中測試的方法。它對以下問題提出了答案:“要測試什么?”將測試重點(diǎn)放在開發(fā)人員在每次代碼更改后需要檢查的內(nèi)容上,對于加速測試,啟用連續(xù)測試和加快DevSecOps管道至關(guān)重要。
為了加快敏捷或連續(xù)流水線中的測試速度,團(tuán)隊(duì)需要在每個(gè)構(gòu)建基礎(chǔ)上執(zhí)行智能測試。它減少了團(tuán)隊(duì)需要執(zhí)行以解決每次新迭代引入的風(fēng)險(xiǎn)所需的測試集。測試影響分析提供的分析對于將測試僅集中在您絕對需要測試的內(nèi)容而不是the彈槍方法上至關(guān)重要。
只有通過智能,基于數(shù)據(jù)的決策才能實(shí)現(xiàn)連續(xù)測試。使開發(fā)團(tuán)隊(duì)專注于最少的測試集以確保每次迭代都覆蓋適當(dāng)?shù)姆秶?,這是將敏捷性重新帶回敏捷開發(fā)方法的關(guān)鍵。
圖3:Parasoft DTP提供的示例高級圖表,顯示通過、失敗、不完整和需要重新測試的測試分布。用戶可以單擊餅圖以查看更多詳細(xì)信息。
智能測試執(zhí)行使用測試影響分析來跟蹤針對應(yīng)用程序的手動(dòng)測試的執(zhí)行情況,以及與這些測試相關(guān)的捕獲的代碼覆蓋率信息。自動(dòng)化測試使用類似的技術(shù)。該分析指出需要執(zhí)行哪些手動(dòng)測試才能訪問每個(gè)新版本交付的已更改功能。因此,在他們的本地IDE的開發(fā)人員和測試人員級別,智能測試執(zhí)行至關(guān)重要。它使他們能夠集中精力進(jìn)行測試,消除猜測工作和其他“以防萬一”的工作。
為了實(shí)現(xiàn)有效的DevSecOps管道,開發(fā)人員需要獲得自動(dòng)化功能,從而消除了他們?nèi)粘9ぷ髦械姆爆嵐ぷ?。成功的安全性以及質(zhì)量和安全性開發(fā)需要來自單元測試、API測試、UI測試和SAST結(jié)果的快速反饋。另外,根據(jù)安全團(tuán)隊(duì)的最新發(fā)現(xiàn)對安全控制進(jìn)行微調(diào)。
容器對開發(fā)團(tuán)隊(duì)的好處擴(kuò)展到了開發(fā)人員的桌面。容器在開發(fā)人員、構(gòu)建、集成和部署環(huán)境中提供了一致且可重用的工具鏈(包括測試/SAST配置)。它們消除了每次更新配置時(shí)都更新本地工作站的需要。在基于容器的開發(fā)中,僅需要更新容器映像。整個(gè)團(tuán)隊(duì)受益。
基于團(tuán)隊(duì)的工具部署
基于團(tuán)隊(duì)的工具部署可以使用容器來托管存儲庫,不同的工具鏈(對于嵌入式軟件開發(fā)尤其重要)、SAST和測試工具。下面顯示了可能的容器化開發(fā)環(huán)境的說明性示例。
圖4:容器為開發(fā)人員提供了一種有效的方式,使其擁有一致的開發(fā)和測試環(huán)境。
開發(fā)人員真正開始加速安全開發(fā)的地方是通過本地“工作站”采用智能測試執(zhí)行。在代碼修改之間以及將任何更改提交到源代碼管理系統(tǒng)之前,都要加強(qiáng)良好的安全性和工程實(shí)踐(以在本地進(jìn)行并經(jīng)常進(jìn)行安全性分析和測試執(zhí)行)。此過程大大減少了對修改后的代碼的安全性和質(zhì)量的反饋循環(huán)。通常,它可以加快“編碼、測試、提交”工作流程。
消除不必要的測試
開發(fā)團(tuán)隊(duì)可以使用連續(xù)的測試工作流程來幫助集中測試工作,并確保他們僅執(zhí)行必要的測試。此外,使用SAST工具持續(xù)監(jiān)控代碼安全性對于確保團(tuán)隊(duì)遵守編碼標(biāo)準(zhǔn)以及棘手的漏洞不會逃避安全測試至關(guān)重要。
對SAST和測試結(jié)果的快速反饋和分析減少了連續(xù)測試中的摩擦。基于容器的開發(fā)環(huán)境提供的一致性意味著整個(gè)團(tuán)隊(duì)的結(jié)果是相同的。當(dāng)結(jié)果不匹配時(shí),它減少了“調(diào)試”不同開發(fā)環(huán)境的需要。將智能測試執(zhí)行功能帶到開發(fā)人員的桌面上,可真正加快安全軟件開發(fā)的速度。
容器是一種行之有效的執(zhí)行和部署方法。它們還支持版本控制和集中控制,從而在不同主機(jī)環(huán)境之間實(shí)現(xiàn)快速部署和可移植性。CI/CD對于DevSecOps管道中的安全開發(fā)也很重要,因?yàn)樗梢蕴峁в袃?nèi)置安全控制的可重現(xiàn)應(yīng)用程序環(huán)境。
連續(xù)測試提供了一個(gè)框架,可以在生命周期的早期階段進(jìn)行測試。有了正確的自動(dòng)化應(yīng)用程序并專注于應(yīng)用程序中最高風(fēng)險(xiǎn)的領(lǐng)域,就可以簡化測試,從而減少敏捷和連續(xù)過程中的抑制劑。通過提供一致的工具鏈、測試/SAST配置、開發(fā)和(本地)部署以及測試環(huán)境,使用容器進(jìn)行安全的軟件開發(fā)可將版本控制和可重用性的優(yōu)勢擴(kuò)展到開發(fā)人員桌面。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@ke049m.cn