Docker賦能物聯(lián)網(wǎng):探索軟件供應(yīng)鏈的優(yōu)勢(shì),、挑戰(zhàn)和安全性
2023-09-19
作者:JFrog大中華區(qū)總經(jīng)理董任遠(yuǎn)
來(lái)源:JFrog
隨著聯(lián)網(wǎng)設(shè)備硬件性能的日益提升及價(jià)格愈發(fā)低廉,,物聯(lián)網(wǎng)應(yīng)用的復(fù)雜性隨之提升。常用的容器化平臺(tái)Docker能夠幫助精簡(jiǎn)流程,,助力開發(fā)人員更輕松地創(chuàng)建和維護(hù)物聯(lián)網(wǎng)應(yīng)用,。本文將探討Docker為物聯(lián)網(wǎng)開發(fā)帶來(lái)的優(yōu)勢(shì),部署和維護(hù)應(yīng)用程序時(shí)需考慮的挑戰(zhàn),,以及如何將安全最佳實(shí)踐應(yīng)用于物聯(lián)網(wǎng),。
Docker在物聯(lián)網(wǎng)應(yīng)用中的優(yōu)勢(shì)
1.輕量級(jí)且可擴(kuò)展 —— Docker容器是輕量級(jí)的,由于其共享主機(jī)操作系統(tǒng)和資源,,因此非常適合資源有限的物聯(lián)網(wǎng)應(yīng)用,。其輕量級(jí)特性便于擴(kuò)展,開發(fā)人員無(wú)需消耗大量系統(tǒng)資源能夠快速部署應(yīng)用程序的多個(gè)實(shí)例,。
2.簡(jiǎn)化開發(fā)和部署 —— 開發(fā)人員能夠通過(guò)Docker在從開發(fā)到生產(chǎn)的整個(gè)應(yīng)用生命周期中創(chuàng)建一致的環(huán)境,。通過(guò)將應(yīng)用程序及其依賴項(xiàng)打包至單一容器中,開發(fā)人員可以確保應(yīng)用程序在任意底層基礎(chǔ)架構(gòu)下都能始終如一地運(yùn)行,。這能夠簡(jiǎn)化開發(fā)流程,,使其在任何機(jī)器上都能運(yùn)行,使物聯(lián)網(wǎng)應(yīng)用的部署和管理變得更加輕松易行,。
3.Docker安全性 —— Docker使開發(fā)人員能夠在容器中隔離應(yīng)用程序及其依賴項(xiàng),,從而減少攻擊面并提高安全性,。通過(guò)在各自的容器中運(yùn)行各個(gè)應(yīng)用程序,開發(fā)人員能夠限制安全漏洞的潛在影響,,并更好地控制應(yīng)用程序的環(huán)境,。
正如《2023年JFrog安全研究報(bào)告》所述,大多數(shù) CVE并非如其公開的嚴(yán)重性評(píng)級(jí)般嚴(yán)重,。在應(yīng)用程序上下文中通過(guò)智能掃描,,開發(fā)人員能夠處理相關(guān)的潛在漏洞,提高生產(chǎn)力,。之后的“保證物聯(lián)網(wǎng)應(yīng)用安全”部分將對(duì)此進(jìn)行詳細(xì)介紹,。
4.更便利的版本控制和回滾 —— 容器本身允許開發(fā)人員為應(yīng)用程序的每次更新創(chuàng)建新的容器,從而使版本控制和回滾更易于管理,。如果出現(xiàn)問(wèn)題或添加了新功能,,可以在更新上一版本的同時(shí)推送新版本。物聯(lián)網(wǎng)設(shè)備可能會(huì)部署在具有挑戰(zhàn)性的網(wǎng)絡(luò)環(huán)境中,,造成更新中斷或失敗的情形,。如果更新失敗,可能會(huì)使設(shè)備處于無(wú)法工作的狀態(tài),,這時(shí)能夠自動(dòng)回滾到上一版本的能力就非常有用,。JFrog Connect等物聯(lián)網(wǎng)平臺(tái)可提供自動(dòng)回滾更新的功能。
5.加強(qiáng)協(xié)作 —— Docker通過(guò)提供可在團(tuán)隊(duì)成員之間共享的一致環(huán)境,,使開發(fā)人員能夠更輕松地在物聯(lián)網(wǎng)項(xiàng)目上開展協(xié)作,。開發(fā)人員可以快速啟動(dòng)包含所需依賴項(xiàng)的容器,從而更輕松地與其他團(tuán)隊(duì)成員共享,,以進(jìn)行測(cè)試和進(jìn)一步開發(fā),。
6.DevOps環(huán)境中的Docker和物聯(lián)網(wǎng) —— Docker只是DevOps環(huán)境中需要管理的另一個(gè)工具。因此,,Docker能夠受益于構(gòu)建,、測(cè)試以及安全和合規(guī)性檢查的流程自動(dòng)化,這些都是現(xiàn)代DevOps中公認(rèn)的最佳實(shí)踐,。
在物聯(lián)網(wǎng)應(yīng)用中使用Docker有諸多優(yōu)勢(shì),。通過(guò)采用Docker,開發(fā)人員可以簡(jiǎn)化工作流,,提高應(yīng)用程序安全性,,并確保在不同物聯(lián)網(wǎng)環(huán)境中實(shí)現(xiàn)一致的性能。Docker與現(xiàn)代DevOps實(shí)踐兼容,,成為了物聯(lián)網(wǎng)應(yīng)用開發(fā)和部署流水線不可或缺的一部分,。
Docker在物聯(lián)網(wǎng)中面臨的挑戰(zhàn)
Docker最初是為服務(wù)器和數(shù)據(jù)中心而設(shè)計(jì),但其憑借著簡(jiǎn)單、可移植性強(qiáng),、開銷相對(duì)較低等優(yōu)勢(shì)成為物聯(lián)網(wǎng)應(yīng)用的熱門選擇,。盡管如此,物聯(lián)網(wǎng)設(shè)備也有著自身需要考慮的挑戰(zhàn),。
·可擴(kuò)展性 —— 在少量設(shè)備上部署和更新Docker應(yīng)用程序鏡像非常簡(jiǎn)單,。但是,管理成百上千臺(tái)設(shè)備的部署則是一項(xiàng)挑戰(zhàn),。一種解決方法是開發(fā)自定義腳本,,但這需要持續(xù)的維護(hù),、測(cè)試和更新,。
另一種方法是投資于物聯(lián)網(wǎng)管理平臺(tái),在實(shí)現(xiàn)流程自動(dòng)化的同時(shí)提供全面的控制,。這種平臺(tái)可簡(jiǎn)化部署和更新,,并提供設(shè)備監(jiān)控、自動(dòng)報(bào)警,、安全遠(yuǎn)程訪問(wèn),、設(shè)備管理等附加功能,還能大幅節(jié)省時(shí)間,。
·內(nèi)存大小 —— 雖然Docker以輕量級(jí)容器而聞名,,但仍須考慮會(huì)影響Docker開銷的應(yīng)用鏡像。如果希望在樹莓派(Raspberry Pi)等相對(duì)低成本的硬件上運(yùn)行Linux,,可能需要具備足夠的能力以應(yīng)對(duì)大多數(shù)用例,。
·網(wǎng)絡(luò)帶寬和可用性 —— 物聯(lián)網(wǎng)設(shè)備分布廣泛,網(wǎng)絡(luò)連接水平參差不齊,。網(wǎng)絡(luò)訪問(wèn)可能具有挑戰(zhàn)性,。網(wǎng)絡(luò)速度可能很慢或時(shí)斷時(shí)續(xù)。設(shè)備將在不會(huì)針對(duì)公共IP地址的情況下在防火墻后面部署,。這就需要找到設(shè)備,,創(chuàng)建安全連接,并確保更新能正常運(yùn)行,,且需要對(duì)整體設(shè)備群進(jìn)行更新,。
如果網(wǎng)絡(luò)中斷導(dǎo)致更新失敗,適當(dāng)?shù)奈锫?lián)網(wǎng)平臺(tái)可以自動(dòng)回滾到之前的實(shí)例,,這樣設(shè)備就不會(huì)在更新之間處于無(wú)法運(yùn)行的狀態(tài),。不久前,Roomba真空吸塵器沒(méi)有按計(jì)劃進(jìn)行更新時(shí)就是這樣處理的,。
·安全性 —— 對(duì)安全性的思考常常是“事后諸葛亮”,。檢查與Docker相關(guān)的CVE并非每位開發(fā)人員的首要任務(wù)。他們的職責(zé)是開發(fā)應(yīng)用程序的功能,,而非檢查最新的漏洞,。因此,,在其編碼時(shí)通過(guò)一個(gè)內(nèi)置的后臺(tái)進(jìn)程從CVE數(shù)據(jù)庫(kù)中檢查潛在漏洞是一種有用的方法。更完善之處在于,,還可以通過(guò)執(zhí)行上下文分析,,避免出現(xiàn)過(guò)多不相關(guān)的誤報(bào)。
雖然Docker為物聯(lián)網(wǎng)應(yīng)用提供簡(jiǎn)單性,、可移植性和低開銷的優(yōu)勢(shì),,但對(duì)于可擴(kuò)展性、規(guī)模,、網(wǎng)絡(luò)帶寬和安全性方面提出挑戰(zhàn),。管理涵蓋眾多設(shè)備的部署可能具有挑戰(zhàn)性,但投資物聯(lián)網(wǎng)管理平臺(tái)能夠簡(jiǎn)化流程,,并提供設(shè)備監(jiān)控和安全遠(yuǎn)程訪問(wèn)等額外優(yōu)勢(shì),。
確保物聯(lián)網(wǎng)應(yīng)用安全
由于Docker容器相互隔離,因此當(dāng)一個(gè)容器被黑客攻擊時(shí)不太容易影響其他容器,。不過(guò),,容器內(nèi)的應(yīng)用程序并不能避免漏洞和攻擊。隨著物聯(lián)網(wǎng)的興起以及使用Docker的人越來(lái)越多,,物聯(lián)網(wǎng)項(xiàng)目已經(jīng)從小型概念驗(yàn)證實(shí)驗(yàn)變成企業(yè)軟件的重要組成部分,。這意味著必須遵循特定的發(fā)布流程,與此同時(shí)也能獲得現(xiàn)代DevOps工具帶來(lái)的可信度,、速度和保護(hù),,進(jìn)而實(shí)現(xiàn)無(wú)縫擴(kuò)展。
以下是將安全最佳實(shí)踐應(yīng)用于物聯(lián)網(wǎng)應(yīng)用程序的方法及益處:
·從小型公司到世界500強(qiáng)企業(yè)等各領(lǐng)域的軟件開發(fā)人員都青睞開源軟件,,雖然開源軟件廣泛使用,,但也存在一些固有風(fēng)險(xiǎn),包括意外漏洞和惡意意圖,。因此,,在軟件供應(yīng)鏈流程中構(gòu)建軟件成分分析(SCA)工具至關(guān)重要,能確保對(duì)通用漏洞披露(CVE)和惡意軟件包進(jìn)行檢測(cè)并得當(dāng)處理,。在整個(gè)軟件開發(fā)生命周期(從代碼到部署)中,,應(yīng)盡早并經(jīng)常進(jìn)行漏洞和合規(guī)性掃描。
·安全性低的密碼和默認(rèn)密碼是物聯(lián)網(wǎng)設(shè)備中最常見的錯(cuò)誤,。對(duì)“秘密內(nèi)容”(例如在開發(fā)/測(cè)試周期中出于便利而使用,,但意外留在代碼中的弱憑據(jù)/密碼或硬編碼加密密鑰)的掃描應(yīng)成為DevOps流程中的自動(dòng)化部分。
·在周期早期發(fā)現(xiàn)問(wèn)題的好方法是左移即在開發(fā)人員工作時(shí)幫助其避免漏洞,,而不干擾其工作流,,也不向其大量發(fā)送誤報(bào)。靜態(tài)應(yīng)用程序安全測(cè)試(SAST)會(huì)分析源代碼以查找漏洞,并在開發(fā)人員編寫代碼時(shí)向他們提供即時(shí)反饋,,即針對(duì)正在使用的,、潛在易受攻擊的代碼的智能提示,以及可能的補(bǔ)救建議,。
·更好的方法是在開發(fā)人員開始工作之前,,就對(duì)要求使用的開源軟件包進(jìn)行管理,并在其進(jìn)入軟件供應(yīng)鏈之前對(duì)其進(jìn)行預(yù)掃描,,從而實(shí)現(xiàn)進(jìn)一步的左移,。這樣就能在一個(gè)更安全、更可信的基礎(chǔ)上啟動(dòng)軟件開發(fā)周期,。
·鑒于Docker應(yīng)用程序固有的獨(dú)立性,,Docker容器非常適合執(zhí)行漏洞上下文分析掃描。在整個(gè)應(yīng)用程序的上下文中掃描Docker容器的漏洞,,有助于消除對(duì)不適用漏洞的誤報(bào),。通過(guò)最大限度地減少低風(fēng)險(xiǎn)干擾并突出高風(fēng)險(xiǎn)發(fā)現(xiàn),,上下文分析可以節(jié)省開發(fā)資源,,使開發(fā)人員能夠集中精力處理關(guān)鍵問(wèn)題。
·雖然無(wú)法凡事盡善盡美,,但及早發(fā)現(xiàn)問(wèn)題比發(fā)布后處理問(wèn)題更容易且成本更低,。但是,如果在較長(zhǎng)周期內(nèi)發(fā)現(xiàn)問(wèn)題的可能性較小,,制定計(jì)劃和補(bǔ)救流程就尤為重要,。這需要一個(gè)強(qiáng)大的DevOps基礎(chǔ),追蹤從代碼,、二進(jìn)制文件和工件到部署的方方面面,。此外,擁有能夠找到所有受影響應(yīng)用程序和相關(guān)軟件包的自動(dòng)化系統(tǒng)也很有幫助,。建立端到端集成流程也將加快修復(fù)過(guò)程,,將耗時(shí)從數(shù)天(或數(shù)周、數(shù)月)縮短至數(shù)小時(shí),。
·自動(dòng)化對(duì)于速度至關(guān)重要,。所有已部署設(shè)備的安全性都不應(yīng)由人工流程來(lái)確保。一旦新的或更新的Docker鏡像準(zhǔn)備就緒,,自動(dòng)更新就應(yīng)擴(kuò)展到所有已知設(shè)備,。我們可以創(chuàng)建并維護(hù)自定義腳本,或使用JFrog Connect等物聯(lián)網(wǎng)平臺(tái)來(lái)自動(dòng)管理這些腳本,。
結(jié)論
Docker針對(duì)物聯(lián)網(wǎng)應(yīng)用程序的打包和部署提供成熟,、高效的解決方案。通過(guò)利用面向物聯(lián)網(wǎng)的Docker,可以簡(jiǎn)化開發(fā)流程,,提高安全性并隨時(shí)擴(kuò)展物聯(lián)網(wǎng)應(yīng)用程序開發(fā)和部署,。隨著對(duì)物聯(lián)網(wǎng)解決方案的需求不斷增長(zhǎng),采用Docker將物聯(lián)網(wǎng)應(yīng)用程序部署到設(shè)備的做法將簡(jiǎn)化開發(fā)流程,。將適用于物聯(lián)網(wǎng)應(yīng)用程序的Docker引入DevOps工作流,,添加自動(dòng)安全功能,這樣物聯(lián)網(wǎng)開發(fā)就將具有現(xiàn)代DevOps最佳實(shí)踐的可靠性,、安全性和敏捷性,。
更多精彩內(nèi)容歡迎點(diǎn)擊==>>電子技術(shù)應(yīng)用-AET<<