Docker赋能物联网:探索软件供应链的优势、挑战和安全性

作者: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工具带来的可信度、速度和保护,进而实现无缝扩展。

以下是将安全最佳实践应用于物联网应用程序的方法及益处:

  • 从小型公司到世界500强企业等各领域的软件开发人员都青睐开源软件,虽然开源软件广泛使用,但也存在一些固有风险,包括意外漏洞和恶意意图。因此,在软件供应链流程中构建软件成分分析(SCA)工具至关重要,能确保对通用漏洞披露(CVE)和恶意软件包进行检测并得当处理。在整个软件开发生命周期(从代码到部署)中,应尽早并经常进行漏洞和合规性扫描。
  • 安全性低的密码和默认密码是物联网设备中最常见的错误。对"秘密内容"(例如在开发/测试周期中出于便利而使用,但意外留在代码中的弱凭据/密码或硬编码加密密钥)的扫描应成为DevOps流程中的自动化部分。
  • 在周期早期发现问题的好方法是左移即在开发人员工作时帮助其避免漏洞,而不干扰其工作流,也不向其大量发送误报。静态应用程序安全测试(SAST)会分析源代码以查找漏洞,并在开发人员编写代码时向他们提供即时反馈,即针对正在使用的、潜在易受攻击的代码的智能提示,以及可能的补救建议。
  • 更好的方法是在开发人员开始工作之前,就对要求使用的开源软件包进行管理,并在其进入软件供应链之前对其进行预扫描,从而实现进一步的左移。这样就能在一个更安全、更可信的基础上启动软件开发周期。
  • 鉴于Docker应用程序固有的独立性,Docker容器非常适合执行漏洞上下文分析扫描。在整个应用程序的上下文中扫描Docker容器的漏洞,有助于消除对不适用漏洞的误报。通过最大限度地减少低风险干扰并突出高风险发现,上下文分析可以节省开发资源,使开发人员能够集中精力处理关键问题。
  • 虽然无法凡事尽善尽美,但及早发现问题比发布后处理问题更容易且成本更低。但是,如果在较长周期内发现问题的可能性较小,制定计划和补救流程就尤为重要。这需要一个强大的DevOps基础,追踪从代码、二进制文件和工件到部署的方方面面。此外,拥有能够找到所有受影响应用程序和相关软件包的自动化系统也很有帮助。建立端到端集成流程也将加快修复过程,将耗时从数天(或数周、数月)缩短至数小时。
  • 自动化对于速度至关重要。所有已部署设备的安全性都不应由人工流程来确保。一旦新的或更新的Docker镜像准备就绪,自动更新就应扩展到所有已知设备。我们可以创建并维护自定义脚本,或使用JFrog Connect等物联网平台来自动管理这些脚本。

结论

Docker针对物联网应用程序的打包和部署提供成熟、高效的解决方案。通过利用面向物联网的Docker,可以简化开发流程,提高安全性并随时扩展物联网应用程序开发和部署。随着对物联网解决方案的需求不断增长,采用Docker将物联网应用程序部署到设备的做法将简化开发流程。将适用于物联网应用程序的Docker引入DevOps工作流,添加自动安全功能,这样物联网开发就将具有现代DevOps最佳实践的可靠性、安全性和敏捷性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/86224.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C语言学习笔记---字符串函数】

C语言程序设计笔记---018 C语言字符串函数1、字符串函数1.1、strlen函数1.2、strcpy函数1.3、strcat函数1.4、strcmp函数1.5、strncpy函数1.6、strncat函数1.7、strncmp函数1.8、strstr函数1.9、strtok函数1.10、strerror函数 2、字符分类函数2.1、islower函数2.2、isdigit 和 …

docker镜像相关

docker镜像相关 docker镜像相关理解解释unionFS(联合文件系统)镜像加载原理docker镜像要采用这种分层结构 重点理解docker镜像commit 操作实例案例演示总结 docker镜像相关理解 解释 镜像是一种轻量级,可执行的独立软件包,它包含…

Vue基础知识点(面试可用):v-if和v-show的区别

① 简述v-if和v-show的区别? v-if 在编译过程中会被转化成三元表达式,条件不满足时不渲染此节点。元素销毁和重建控制显示隐藏。 v-show 会被编译成指令,条件不满足时控制样式将此节点隐藏(display:none) css样式控制…

【Datawhale课程笔记-简单学点大模型】模型架构

模型架构 参考地址:https://github.com/datawhalechina/so-large-lm/blob/main/第七章:模型架构.md 大模型之模型概括 语言模型的一开始就可以被看做是一个黑箱,当前大规模语言模型的能力在于给定一个基于自身需求的prompt就可以生成符合需…

Redis学习笔记--002

Redis的JAVA客户端 文章目录 Redis的JAVA客户端一、Redis的Java客户端的种类二、Jedis2.1、使用步骤2.2、Jedis连接池 三、[SpringDataRedis](https://spring.io/projects/spring-data-redis)3.1、介绍3.2、RedisTemplate3.3、SpringDataRedis使用步骤3.4、SpringDataRedis的序…

RabbitMQ工作模式——PubSub生产者及消费者

PubSub模式生产者代码 public class Producer_PubSub {public static void main(String[] args) throws IOException, TimeoutException {//1.创建连接工厂ConnectionFactory factory new ConnectionFactory();//2.设置参数factory.setHost("172.16.98.133"); ip 默…

JavaWeb 学习笔记 8:AJAX

JavaWeb 学习笔记 8:AJAX AJAX(Asynchronous JavaScript And XML,异步 js 和 XML)是一种用 js 代码异步(或同步)的方式请求服务端数据,并在页面显示或加载的技术。 1.快速入门 先看如何用纯 …

STM32-无人机-电机-定时器基础知识与PWM输出原理

电机控制基础——定时器基础知识与PWM输出原理 - 掘金单片机开发中,电机的控制与定时器有着密不可分的关系,无论是直流电机,步进电机还是舵机,都会用到定时器,比如最常用的有刷直流电机,会使用定时器产生PW…

Linux学习记录——삼십 socket编程---udp套接字

文章目录 UDP套接字简单通信1、服务端1、创建文件,写框架2、用命令行参数调起程序3、服务端运行逻辑 2、客户端1、创建套接字2、发送数据 3、测试4、通信5、加功能1、处理数据2、群聊 6、Windows下socket编程的不同 UDP套接字简单通信 1、服务端 1、创建文件&…

【C语言学习笔记---内存函数】

C语言程序设计笔记---019 C语言进阶之内存函数1、memcpy函数1.1、模拟实现memcpy 2、memmove函数2.1、模拟实现memmove函数 3、memset函数4、memcmp函数5、结语 C语言进阶之内存函数 前言: 通过C语言进阶前篇的字符串函数的知识,继续C语言的内存函数学习…

vue+element plus 使用table组件,清空用户的选择项

<el-table ref"tableRef"> .... </el-table> <script lang"ts" setup> import { onMounted, reactive, ref, nextTick } from vue const clearBtn () > {console.log(清空用户的选择项)tableRef.value.clearSelection() } </scr…

基于Java的酒店管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

洛谷P5660:数字游戏 ← CSP-J 2019 复赛第1题

【题目来源】https://www.luogu.com.cn/problem/P5660https://www.acwing.com/problem/content/1163/【题目描述】 小 K 同学向小 P 同学发送了一个长度为 8 的 01 字符串来玩数字游戏&#xff0c;小 P 同学想要知道字符串中究竟有多少个 1。 注意&#xff1a;01 字符串为每一个…

docker alpine:3.16 root权限安装Anaconda3-2020.07-Linux-x86_64和jdk

首先查看系统版本: rootfv-az454-287:/tmp# uname -a Linux fv-az454-287 5.15.0-1046-azure #53~20.04.1-Ubuntu SMP Mon Aug 28 14:17:23 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux rootfv-az454-287:/tmp# grep NA /etc/os-release NAME"Ubuntu" PRETTY_NAME&q…

【VIM安装ctags cscope】

一、安装软件包 sudo passwd root sudo apt install cmake python2-dev python3-dev build-essential cmake flex bison -y sudo apt install universal-ctags cscope vim git -y sudo apt install python-is-python3 -y sudo apt-get install build-essential libncurses-dev…

算法 - 栈和队列

算法 - 栈和队列 算法 - 栈和队列 栈 1. 数组实现2. 链表实现 队列 栈 public interface MyStack<Item> extends Iterable<Item> {MyStack<Item> push(Item item);Item pop() throws Exception;boolean isEmpty();int size();}1. 数组实现 public class A…

在c#中使用CancellationToken取消任务

目录 &#x1f680;介绍&#xff1a; &#x1f424;简单举例 &#x1f680;IsCancellationRequested &#x1f680;ThrowIfCancellationRequested &#x1f424;在控制器中使用 &#x1f680;通过异步方法的参数使用cancellationToken &#x1f680;api结合ThrowIfCancel…

Docker Compose初使用

简介 Docker-Compose项目是Docker官方的开源项目&#xff0c;负责实现对Docker容器集群的快速编排。 Docker-Compose将所管理的容器分为三层&#xff0c;分别是 工程&#xff08;project&#xff09;&#xff0c;服务&#xff08;service&#xff09;以及容器&#xff08;cont…

【论文阅读 09】融合门控自注意力机制的生成对抗网络视频异常检测

2021年 中国图象图形学报 摘 要 背景&#xff1a; 视频异常行为检测是智能监控技术的研究重点&#xff0c;广泛应用于社会安防领域。当前的挑战之一是如何提高异常检测的准确性&#xff0c;这需要有效地建模视频数据的空间维度和时间维度信息。生成对抗网络&#xff08;GANs&…

langchain +gpt 报错 SSLError

解决版本2种 一加入下面代码: https://www.zhihu.com/question/588395420 import os os.environ["http_proxy"] "http://127.0.0.1:7890" os.environ["https_proxy"] "http://127.0.0.1:7890"二降低urllib3版本 urllib3 1.25.11错…