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