Docker为整个软件生命周期提供安全保障

简介: 提到Docker的安全性和隔离性,人们关注点大多都在运行阶段。但是,运行时的安全问题仅仅是整个软件生命周期中的一部分,我们需要在整个软件生命周期都考虑安全问题。

作者:Docker Security Team 译者:廖煜

        提到Docker的安全性和隔离性,人们关注点大多都在运行阶段。但是,运行时的安全问题仅仅是整个软件生命周期中的一部分,我们需要在整个软件生命周期都考虑安全问题。管理者必须把安全作为一个关键因素考虑,并贯穿软件产品供应链的全过程,考虑当出现持续的人员流动、代码更新、架构变化时,如何保证安全。

        用生产手机的供应链打个比方,管理者不会仅仅考虑手机本身的安全性,他们还需要考虑供应链中各个环节的安全。比如,使用哪种防盗包装,原料来自哪里,如何组装、运输各种部件等等。除此以外,还需要保证手机不会在运输途中被掉包或被偷掉。

846b4a95-74a2-11e6-8b5d-0242c0a80002

        软件产品供应链与传统商品供应链几乎面临着同样的问题。管理者必须筛选原料(源码、依赖包、公共库),把原料加工成产品(应用程序),通过海陆空(互联网)把产品运输到仓库中(镜像仓库),并卖给最终用户(部署应用程序)。

        在软件产品供应链中,需要从以下几个方面加强安全管理:

  1. 鉴别供应链中的每个元素,包括发人员、开发语言、开发框架、依赖包等。
  2. 必须有一套高质量的编译流程,这套流程必须是固定的。
  3. 保证应用程序在存储和传输过程中是安全的。
  4. 在交付产品之前,保证应用程序是经过充分测试的。

        接下来,将介绍Docker在软件产品供应链中是如何保障安全的。

鉴别

        整个软件产品供应链的基础是鉴别和访问控制。管理者必须从根本上知道哪些人能够访问哪些资源,以及这些人能够用这些资源做什么。Docker提供了明确的鉴别概念,可以巩固软件产品供应链的安全性。镜像发布者可以使用加密秘钥对镜像进行签名,保证镜像的原创性、真实性以及发布源的可靠性。

固定的编译流程

        建立了固定的编译流程以后,开发者可以迅速的发布产品。可以方便的控制应用程序的依赖包和组件,并标准化测试过程。如果开发者非常清楚应用程序各个组件之间的关系,就可以很方便的定位Bug和异常。

88a5f659-74a2-11e6-8b5d-0242c0a80002

        建立固定的编译流程,需要从以下几方面考虑:

  1. 评估依赖包的质量,确保依赖包是最新的可编译版本。使用之前需要亲自测试。
  2. 确保使用的组件来源可靠,并且是完整没有被篡改的。
  3. 选择好依赖包以后就固定下来,如果应用程序后续版本出现问题,可以很方便的确定这个Bug是源码还是依赖包引起的。
  4. 使用安全的、经过签名的镜像作为基础镜像。

镜像签名

        通过镜像签名,可以在镜像发布者和镜像下载者之间建立一条安全传输通道,保证镜像在存储和传输过程中没有被篡改。发布者也会使用签名保证镜像是可用的。

8fb645bd-74a2-11e6-8b5d-0242c0a80002

        在编译环境和运行环境同时开启Docker Content Trust以后,在Docker宿主机上只会下载和运行经过签名的镜像。

安全扫描

        开发者会使用CI系统对每一个版本进行集成测试,但是一些更有价值的审查被忽略了。比如,开发者不会审查依赖包的漏洞;不会审查依赖包的子模块或依赖包使用的库函数;不会审查依赖包的license……在发布了bugfix和新功能以后,开发者已经精疲力尽,没有精力再做这些详细的审查。

9604b0cc-74a2-11e6-8b5d-0242c0a80002

        开启Docker安全扫描功能以后,镜像上传到镜像仓库时,Docker会扫描每一个镜像层,实现自动化审查。这个过程作为容器部署到生产环境之前的最后一道安全关卡,可以保证镜像的安全。目前只有Docker Cloud提供安全扫描功能,接下来Docker Datacenter也会提供这个功能。安全扫描时,会收集镜像所有层的信息,包括镜像层中的包信息和版本信息。这些信息用于和各种CVE(Common Vulnerabilities and Exposures)数据库进行交互,持续更新安全扫描规则。Docker会定期执行安全扫描,一旦发现应用程序使用的某个包出现安全漏洞,就会通知管理员和应用程序的开发者。

门限签名

        Docker中最强的一项安全保障技术是多方可以参与容器签名。这项技术源自Docker Content Trust的签名技术。假设一个CI过程有以下几步:

  1. 自动CI。
  2. Docker安全扫描。
  3. 准生产环境。
  4. 生产环境。

9bc5027f-74a2-11e6-8b5d-0242c0a80002

        每一步完成以后,都可以进行签名,后续步骤可以验证之前的签名。

  1. 镜像通过CI,添加CI签名。
  2. 镜像通过安全扫描,添加安全扫描签名。
  3. 通过准生产环境测试,添加staging签名。
  4. 验证前三个签名,并部署到生产环境中。

        当一个应用程序部署到生产环境之前,在CI/CD的每一个阶段都可以签名和验证。

结论

        Docker为企业提供了一套安全框架,贯穿软件的整个生命周期。从与用户建立互信到源码管理;从制作安全的基础镜像、扫描镜像层到签名镜像层。这套框架帮助开发者和IT部门灵活控制软件生命周期的各个环节,保障不同阶段的安全。

请使用手机"扫一扫"x
目录
相关文章
|
6月前
|
Kubernetes 监控 Docker
Docker 容器生命周期:创建、启动、暂停与停止
Docker 容器生命周期:创建、启动、暂停与停止
398 0
|
6月前
|
存储 数据管理 数据安全/隐私保护
《Docker数据管理:卷、挂载和持久化,保障容器环境数据安全》
《Docker数据管理:卷、挂载和持久化,保障容器环境数据安全》
182 0
|
25天前
|
JSON 缓存 程序员
Docker常用命令以及生命周期管理
Docker常用命令以及生命周期管理
45 2
|
1月前
|
负载均衡 容灾 安全
Docker Swarm总结+基础、集群搭建维护、安全以及集群容灾(1/5)
Docker Swarm总结+基础、集群搭建维护、安全以及集群容灾(1/5)
69 2
|
6月前
|
运维 安全 数据安全/隐私保护
《Docker安全加固:从多角度保障容器环境的安全性》
《Docker安全加固:从多角度保障容器环境的安全性》
170 0
|
2月前
|
KVM 虚拟化 Android开发
DP读书:鲲鹏处理器 架构与编程(十二)鲲鹏软件实战案例Docker+KVM的部署
DP读书:鲲鹏处理器 架构与编程(十二)鲲鹏软件实战案例Docker+KVM的部署
56 1
|
4月前
|
监控 安全 持续交付
Docker与容器化安全:漏洞扫描和安全策略
容器化技术,特别是Docker,已经成为现代应用程序开发和部署的关键工具。然而,容器化环境也面临着安全挑战。为了保障容器环境的安全性,本文将介绍如何进行漏洞扫描、制定安全策略以及采取措施来保护Docker容器。我们将提供丰富的示例代码,以帮助大家更好地理解和应对容器安全的问题。
|
4月前
|
安全 应用服务中间件 nginx
Docker安全性:最佳实践和常见安全考虑
Docker 的快速发展和广泛应用使其成为现代应用开发的热门选择,然而,容器环境的安全性也受到关注。本文将深入研究 Docker 安全性的最佳实践,包括容器镜像安全、容器运行时安全、网络安全等方面,并提供丰富的示例代码,帮助读者全面了解如何确保 Docker 环境的安全性。
|
4月前
|
安全 数据可视化 数据安全/隐私保护
猿创征文|docker本地私人仓库快速搭建后的安全优化(用户鉴权和简易的web界面开启)
猿创征文|docker本地私人仓库快速搭建后的安全优化(用户鉴权和简易的web界面开启)
39 0
|
4月前
|
Docker 容器
docker容器的生命周期管理常用命令
docker容器的生命周期管理常用命令
58 0