使用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 过程,通过以下步骤移动容器镜像:
自动化CI
Docker 安全扫描
推送到 staging环境
推送到 production 环境
这里有四个阶段,每个阶段完成后,都可以添加一个签名,从而CI/CD 过程的每一个阶段都有验证。
1、镜像通过CI 吗?添加签名!
2、Docker Security Scanning 确定镜像没有漏洞?添加签名!
3、staging阶段中构建成功?添加签名!
4、验证所有3个签名的镜像并将其部署到生产中
现在构建被部署到生产集群之前,它可以加密验证,CI / CD过程各阶段已经签订了一个镜像。
结论
在软件生命周期的每个环节,Docker 平台都允许企业将安全纳入其中。从与用户建立信任,到基础设施和代码,docker模型给了开发者以及 IT团队足够的自由和控制力。
从构建安全的基础镜像,到扫描每一个镜像验证签名,每个特性都允许IT人员将信任植入到应用中。
当应用沿着正常的生命周期不断前行,安全信息也能够动态维护和更新,并在部署到生产环境之前通过风控检查。
本文由时速云翻译,如若转载,需注明转载自“时速云”
原文链接:https://blog.docker.com/2016/...
使用Docker保护软件供应链安全相关推荐
- 观点|通过短生命周期和最小权限原则保护软件供应链安全
聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 专栏·供应链安全 数字化时代,软件无处不在.软件如同社会中的"虚拟人",已经成为支撑社会正常运转的最基本元素之一,软件的安全 ...
- 基于 Docker 的现代软件供应链
2019独角兽企业重金招聘Python工程师标准>>> [编者按]本文作者为 Marc Holmes,主要介绍一项关于现代软件供应链的调查结果.本文系国内 ITOM 管理平台 One ...
- Kubernetes 时代的安全软件供应链
点击下载<不一样的 双11 技术:阿里巴巴经济体云原生实践> 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击上方图片即可下载! 作者 汤志敏 阿里云 ...
- Google 与 GitHub 结盟,为保护软件供应链而战!
出品:CSDN(ID:CSDNnews) 整理:章雨铭 责编:屠敏 4月7日,据谷歌透露,它一直在跟GitHub合作,创建一种防伪方法,用于签署源代码,解决像影响SolarWinds和C ...
- Google与GitHub 结盟,为保护软件供应链而战
整理 | 章雨铭 责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 4月7日,据谷歌透露,它一直在跟GitHub合作,创建一种防伪方法,用于签署源代码,解决像影响SolarWinds和Co ...
- 美国政府召开网络安全峰会,与私营行业巨头合力提振软件供应链和开源等安全...
聚焦源代码安全,网罗国内外最新资讯! 专栏·供应链安全 数字化时代,软件无处不在.软件如同社会中的"虚拟人",已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为 ...
- 美国软件供应链安全行动中的科技巨头们
本文 2987字 阅读约需 8分钟 软件供应链安全行动,科技巨头成为重要角色.现在美国已形成科技巨头与政府.开源社区等机构密切合作的态势. 我国软件供应链安全同样有众多科技和网络安全企业加入,未来 ...
- 美国政府发布《软件供应链安全客户实践建议指南》
聚焦源代码安全,网罗国内外最新资讯! 专栏·供应链安全 数字化时代,软件无处不在.软件如同社会中的"虚拟人",已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为 ...
- Linux 基金会发布《开源软件供应链安全报告》
聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 近期,Linux 基金会发布<开源软件供应链安全报告>,探索当前影响软件供应链的安全性和可靠性问题,并找到从何处着手以及如 ...
最新文章
- 华为交换机配置基本命令
- 牛逼!原来分布式事务可以这样玩!
- linux 快照备份导出,KVM之虚拟机几种备份方法(快照/克隆/导出)
- 推荐6个好用到爆的Pycharm插件
- ImageView倒影效果
- 诗与远方:无题(六十一)- 杂诗
- FastDFS 入门简介
- CSS3学习笔记-技术提示
- 安装完centos6没有eth0,只有回环地址
- iOS 修改状态栏颜色
- 区块链 用户身份权限模式 方案
- Linux基础学习-NFS网络文件系统实时文件共享
- 一步步编写avalon组件02:分页组件
- 我常用的分页存储过程
- html读写txt文件,JS读写文本文件示例代码
- [在线小说系统源码]精品微信小程序小说阅读器+后台管理系统|前后分离VUE[包运行成功]
- zuc算法代码详解_密码学算法之序列密码中的ZUC算法详解
- 利用计算机为祖国做贡献的人,李晓维:祖国,我把科研事业献给您
- java netbeans_Java初学者学习Netbeans介绍
- 2021年中国农副食品加工行业现状分析:营业利润同比增长3.7%[图]
热门文章
- python psutil 进行系统管理 no.2
- Html 小插件4 百度搜索代码
- Android自定义样式
- silverlight项目工作小结
- [1.1]用WebService返回歌曲的曲目信息.借鉴[星集工作室 张麟 Dephi版]
- 【ROS学习笔记】(四)订阅者Subscriber的实现
- 数据结构笔记(十三)-- 串的堆分配存储表示
- Eigen问题解决:eigen_assert_exception’ is not a member of ‘Eigen’
- C++ 常见错误(03) —— cout输出图像路径
- python predict_对Keras中predict()方法和predict_classes()方法的区别说明