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