作者:JFrog大中华区总经理董任远
随着联网设备硬件性能的日益提升及价格愈发低廉,物联网应用的复杂性随之提升。常用的容器化平台Docker能够帮助精简流程,助力开发人员更轻松地创建和维护物联网应用。本文将探讨Docker为物联网开发带来的优势,部署和维护应用程序时需考虑的挑战,以及如何将安全最佳实践应用于物联网。
Docker在物联网应用中的优势
轻量级且可扩展 —— Docker容器是轻量级的,由于其共享主机操作系统和资源,因此非常适合资源有限的物联网应用。其轻量级特性便于扩展,开发人员无需消耗大量系统资源能够快速部署应用程序的多个实例。
简化开发和部署 —— 开发人员能够通过Docker在从开发到生产的整个应用生命周期中创建一致的环境。通过将应用程序及其依赖项打包至单一容器中,开发人员可以确保应用程序在任意底层基础架构下都能始终如一地运行。这能够简化开发流程,使其在任何机器上都能运行,使物联网应用的部署和管理变得更加轻松易行。
Docker安全性 —— Docker使开发人员能够在容器中隔离应用程序及其依赖项,从而减少攻击面并提高安全性。通过在各自的容器中运行各个应用程序,开发人员能够限制安全漏洞的潜在影响,并更好地控制应用程序的环境。
正如《2023年JFrog安全研究报告》所述,大多数 CVE并非如其公开的严重性评级般严重。在应用程序上下文中通过智能扫描,开发人员能够处理相关的潜在漏洞,提高生产力。之后的“保证物联网应用安全”部分将对此进行详细介绍。
更便利的版本控制和回滚 —— 容器本身允许开发人员为应用程序的每次更新创建新的容器,从而使版本控制和回滚更易于管理。如果出现问题或添加了新功能,可以在更新上一版本的同时推送新版本。物联网设备可能会部署在具有挑战性的网络环境中,造成更新中断或失败的情形。如果更新失败,可能会使设备处于无法工作的状态,这时能够自动回滚到上一版本的能力就非常有用。JFrog Connect等物联网平台可提供自动回滚更新的功能。
加强协作 —— Docker通过提供可在团队成员之间共享的一致环境,使开发人员能够更轻松地在物联网项目上开展协作。开发人员可以快速启动包含所需依赖项的容器,从而更轻松地与其他团队成员共享,以进行测试和进一步开发。
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工具带来的可信度、速度和保护,进而实现无缝扩展。
以下是将安全最佳实践应用于物联网应用程序的方法及益处:
结论
Docker针对物联网应用程序的打包和部署提供成熟、高效的解决方案。通过利用面向物联网的Docker,可以简化开发流程,提高安全性并随时扩展物联网应用程序开发和部署。随着对物联网解决方案的需求不断增长,采用Docker将物联网应用程序部署到设备的做法将简化开发流程。将适用于物联网应用程序的Docker引入DevOps工作流,添加自动安全功能,这样物联网开发就将具有现代DevOps最佳实践的可靠性、安全性和敏捷性。