使用Docker保护软件供应链安全

在Docker内部,我们花了很多时间讨论一个话题:如何将运行时安全和隔离作为容器架构的一部分?然而这只是软件流水线的一部分。

我们需要的不是一次性的标签或设置,而是需要将安全放到软件生命周期的每个阶段。

由于软件供应链上的人、代码和基础设施一直在改变,交互也越来多,组织(公司)必须将安全纳入供应链的核心部分。

考虑一个实际存在的产品:如电话,仅仅考虑到最终产品的安全性是不够的。除了决定使用什么样的防盗包装,你可能也想知道材料的来源,以及他们是如何组装,包装,运输。因为,重要的是我们还要确保手机不被改造或运输途中被盗。

软件供应链几乎跟实际产品的供应链是相同的。你必须能够识别和信任原材料(代码、依赖、打包),把它们组装在一起后,将它们从海上、陆上或空中(网络)运输到一个存储地(存储库),以便将项目(应用)出售(部署)给终端用户。

确保软件供应链也十分相似。你需要:

  • 确定流水线中的所有东西,从人,代码,依赖关系,到基础设施
  • 确保一个一致和优质的构建过程
  • 在存储和运输中保护产品
  • 对材料清单的交付保证并验证最终产品

在这篇文章中,我们将诠释Docker的安全特性如何为软件供应链提供持续的安全。

身份

整个流水线构建在身份验证和访问控制之上 。从根本上说,你需要知道谁可以访问什么资产,可以使用哪些操作。

Docker 架构中的身份认证理念很清晰,它隐藏在软件供应链策略中:加密密钥允许发布者对镜像进行签名,以保证其来源的真实性。

一致的构建:好的输入= 好的输出

确定一致的构建允许你创建一个可重复的过程,并控制你的应用程序依赖和组件,以便使它更容易测试出缺陷和漏洞。当你对你的组件有一个清晰认识的时候,它变得更容易识别异常的组件。

要获得一致的构建,你必须确保你添加了优质的组件:

  • 评价依赖的质量,确保它是最新/兼容的版本,并用你的软件进行测试
  • 验证组件来自于你期望的来源,并且在传输过程中没有损坏或改变
  • 确定依赖后不要轻易改变,确保后续重建是一致的,因此如果一个缺陷是由代码或依赖的变化引起的,很容易被发现
  • 使用Docker Content Trust ,从可信的、有标识的基础镜像中构建你的镜像

使用签名”密封”构建结果

应用程序签名是从构建进行有效“密封”的一步。通过镜像签名,可以确保任何在接收端(docker pull)的签名验证与镜像发布者建立一个安全链。

这种关系保证了镜像在传输过程中不被改变、添加、或删除。此外,签名表明发布者“赞同”你拉取的该镜像是没问题的 。

在构建机器和运行环境上启用 Docker Content Trust后,一个策略就会生效:只有签名镜像才可以被拉取并运行在那些 Docker 主机上。

在组织中,签名的镜像向其他人传递一个信号:发布者(构建者)声明镜像是没问题的。

安全扫描和风控

CI系统和开发者都需要确认一件事情:构建工具与依赖一起工作,操作你的应用程序时,无论在成功还是失败,都有预期的行为。

但他们审查过依赖的漏洞吗?审查过子依赖或捆绑系统库的依赖吗?他们知道依赖的许可证吗?这种审查很难通过常规的方式来完成,因为提供错误修正和功能上是一个巨大的开销。

Docker 安全扫描有助于镜像的自动化扫描。因为这是发生在镜像被推送到registry之前,在容器被部署进生产环境之前的最后一次检查。

该功能目前在Docker Cloud 中可用,并且很快延伸到Docker Datacenter。安全扫描创建了一个清单,清单中包括镜像每一层的打包信息和版本信息。

这份材料清单被用于连续监测各种 CVE 数据库。确保该扫描不止一次地发生,并在爆出新漏洞时,及时通知使用镜像的系统管理员或应用程序开发者。

多重签名-- 把签名绑在一起

安全保证最强大的一点来自Docker Content Trust 签名,它允许多个签名者参与容器的签名过程。要了解这一点,想象一个简单的 CI 过程,通过以下步骤移动容器镜像:

  1. 自动化CI
  2. Docker 安全扫描
  3. 推送到 staging环境
  4. 推送到 production 环境

这里有四个阶段,每个阶段完成后,都可以添加一个签名,从而CI/CD 过程的每一个阶段都有验证。

  1. 镜像通过CI 吗?添加签名!
  2. Docker Security Scanning 确定镜像没有漏洞?添加签名!
  3. staging阶段中构建成功?添加签名!
  4. 验证所有3个签名的镜像并将其部署到生产中

现在构建被部署到生产集群之前,它可以加密验证,CI / CD过程各阶段已经签订了一个镜像。

结论

在软件生命周期的每个环节,Docker 平台都允许企业将安全纳入其中。从与用户建立信任,到基础设施和代码,docker模型给了开发者以及 IT团队足够的自由和控制力。

从构建安全的基础镜像,到扫描每一个镜像验证签名,每个特性都允许IT人员将信任植入到应用中。

当应用沿着正常的生命周期不断前行,安全信息也能够动态维护和更新,并在部署到生产环境之前通过风控检查。

作者:时速云

来源:51CTO

时间: 2024-09-15 20:02:00

使用Docker保护软件供应链安全的相关文章

基于 Docker 的现代软件供应链

[编者按]本文作者为 Marc Holmes,主要介绍一项关于现代软件供应链的调查结果.本文系国内 ITOM 管理平台 OneAPM 编译呈现,以下为正文. 3 月初,为了了解软件供应链的现状以及 Docker 在软件供应链发展中所起的作用,我们广泛调查了对 Docker 感兴趣的人群.今天上午,我们很高兴在此公布该调查的结果,您也可以点击此处获取报告详情. 调查方法 在此次调查中,我们采访了部署容器技术各个阶段的人员,并收到了 500 多位调查对象的反馈结果.他们都是从事开发和运维工作的专业技

专访阿里云资深专家易立,Docker技术将改变现代软件供应链

4月26日的云栖大会·南京峰会上,阿里云资深专家汤子楠发布了飞天专有云敏捷版(Apsara Stack Agility),此前美国Docker公司首席执行官Ben Golub 在曾在DockerCon 2017上宣布过这个消息. 这是阿里云和Docker公司合作之后的产物,是国内第一个支持Docker官方企业版(Enterprise Edition, EE)的容器类产品,包含从容器的创建到运行以及镜像的全生命周期管理,可以部署在企业自有数据中心环境内,特别适用于企业专有云及混合云场景. 专访阿里

Docker:软件的工业4.0模式?

最近一段时间,开源的容器应用引擎Docker在企业IT市场中风生水起.尽管容器(Container)技术并非一个新生事物,但是 Docker解决了利用LXC(Linux Container)来实现类似VM的功能,并且通过更加节省的硬件资源提供给用户更多的计算资源,实现集群架构下快速实现应用交付,因而得到了业界的追捧. Docker:软件的工业4.0模式 实际上,Container在英语中除了容器的意思之外,更为常见的用法是海运集装箱.我们可以把交付运行环境设想成海运,OS如同一个货轮,每一个在O

软件供应链平台汇新云

软件供应链平台汇新云,很多人在寻找软件供应链系统软件开发平台时,常常会选择去百度搜索"软件项目开发",看看哪些找软件服务商的平台专业实力比较强大靠谱.殊不知,并不是所有的软件供应链平台都会提供智能匹配与软件需求相符的软件供应商的. 软件供应链平台是不是都会找到符合客户要求的软件供应商呢? 汇新云IT软件供应链服务平台,主营的是"软件项目需求在线定制交易"业务,即面向国内外制造商.供应商.代理商以及零售商.软件需求方,在采购环节中提供一站式供应链服务,以此提高企业的物

谈谈软件供应链污染

本文原创作者:ArkTeam/Veronica,本文属FreeBuf原创奖励计划,未经许可禁止转载 2015年9月,XcodeGhost事件爆发,超过 4000个不同版本的苹果应用被感染,该事件影响了中国近一亿苹果手机用户,由此引发的软件供应链安全问题受到广泛关注,软件供应链污染也首次进入了大众的视野.本文对软件产品供应链污染进行简要介绍并围绕软件供应链污染危害.安全事件分析和防范几方面展开. 001 简介 鉴于业内目前对于软件供应链尚无明确的定义,本文结合广义的供应链概念以及本文的研究内容,姑

稳定软件供应链的关键是雇佣开源维护者

使用免费开源代码在短期内是一件很愉快的事情,但如果你要在长期内依赖开源代码,风险是很大的,甚至十分昂贵,除非你主动参与到开源社区.存在风险的原因 是:一个活跃的开发者社区会导致开发方向的多变,今天你依赖的API和特性明天可能就截然不同.减小风险的方法很简单:如果你的公司想要从长期消费开源代 码中受益,你需要作出有意义的贡献,能影响到项目的发展方向,而在开源项目中起到举足轻重作用的人是维护者.所以,稳定软件供应链的最简单方法就是雇佣维护者和主要开发者. 三星就是这么做的 ,它有一个开源团队.在该公

如果对限制网络连接,保护软件源码安全?

问题描述 公司为了保护软件源代码,需要达到以下效果:1.软件开发人员各有一台办公电脑,可以访问互联网:2.开发方式为:在办公电脑上通过远程桌面连接到远程服务器,或通过远程vmware虚拟机:3.远程服务器(或虚拟机)需要访问部分内网资源(如数据库),但不能访问外网或其它内网资源.请问该如何配置?多谢! 解决方案 解决方案二:不太懂不过帮你顶起啊解决方案三:有没有人了解,恳请回答,分不够可以加.我对网络了解很少,目前想到的就是用vmware的hostonly模式,但是缺点是开发服务器跟存放源码的服

智能终端不装未成年人保护软件 厂商或面临高额罚款

日前,国家网信办公布<未成年人网络保护条例(草案征求意见稿)>(下称意见稿),向社会各界征求意见.意见稿提到,国家鼓励并支持研发.生产和推广未成年人上网保护软件.智能终端产品应当预装未成年人上网保护软件,或为安装未成年人上网保护软件提供便利并采用显著方式告知用户安装渠道和方法,如违反本条例规定,制造商或进口商将被给予警告.责令限期改正,并处十万元以上五十万元以下罚款. 大量未成年人遭受网络不良信息茶毒 随着互联网技术的日新月异,网络走进千家万户并逐渐向低龄人群渗透,网络中的不良信息大量的涌入给

如何保护软件

问题描述 比如A自己开发一个软件,想用它卖给其它人,如何防止他人复制呢?法律方面有什么保护吗?技术方面呢?是不是给密码........ 解决方案 解决方案二:防止别人复制不现实软件的最重要的特性就是开发成功之后只需复制即可.如果你要防止他人复制那就会大大增加开发成本这就和你保护软件的初衷相违背要保护软件可以学习注册码的相关技术虽然不能做到100%保护解决方案三:加密狗注册表解决方案四:要是可以轻松的保护,就不会有哪么多的盗版软件了!解决方案五:加密软件,Xenocode对dll.exe加密,防止