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