热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

容器技术的安全挑战与解决方案

本文探讨了容器技术在安全方面面临的挑战,并提出了相应的解决方案。多租户保护、用户访问控制、中毒的镜像、验证和加密、容器守护以及容器监控都是容器技术中需要关注的安全问题。通过在虚拟机中运行容器、限制特权升级、使用受信任的镜像库、进行验证和加密、限制容器守护进程的访问以及监控容器栈,可以提高容器技术的安全性。未来,随着容器技术的发展,还需解决诸如硬件支持、软件定义基础设施集成等挑战。

容器是IT领域最热门的软件理念。共享虚拟机通用部分这一概念——包括共享操作系统,管理工具,甚至应用程序,减少了任意镜像占用内存的这一主要因素,同时节省了网络带宽与许多副本上加载的基本相同的代码。

这些节省意义很大,初步估计容器支持降低三到五倍的实例数量,相比于某些情况下的传统的基于虚拟机管理程序的方法显得更加有效,例如在VDI市场的应用。值得注意的是,容器的创建和部署仅需要虚拟机的小部分时间和空间。

容器在经济性方面要比基于虚拟机管理程序的虚拟化好很多,然而容器是一项新技术,不成熟且还需要经过很多我们了解的虚拟化方式普及中曾经遇到过的问题。虽然许多公司都在不同层面利用容器进行工作,大多数人还是会承认有一些担心。

爆发的担忧

最关键的问题是多租户保护。虚拟机管理程序已经远远超过了十年,而且更重要的是,经历了许多CPU的产品周期。英特尔和AMD已经在虚拟机管理程序中添加相应功能,防止有关的内存交叉使用的行为。

这些功能的保护系统在本地没有存储驱动器,但本地用于加速应用程序实例的出现,意味着数据会被擦除,特别是SSD的数据,可能会在不同租户间被暴露。虚拟机管理程序供应商随机应变,现在将区块标记成未写入的状态。如果一个实例试图读取某一尚未写入的区块,虚拟机管理程序会发送全零指令并隐藏相关区块的所有数据。

没有这些保护功能,虚拟机管理程序将很不安全,任何人可以通过其他实例来获取数据的访问权。在某一服务器中的所有容器间,共享某一单独的操作系统镜像,能将硬件内存保护措施无效化,这就是并不成熟的容器技术在发展中所遇到的存储问题。

这两个问题可以通过在虚拟机中运行容器来缓解。这将保护在某一虚拟机中的容器无法被其他虚拟机通过交叉内存漏洞访问,同时虚拟机管理程序提供了所需的存储保护。包括Azure在内的所有主流云与虚拟机管理程序,现在都支持容器技术。

保护机制可能需要一定成本,尽管如此,因为在大量构建虚拟机规模之时需要优先创建容器。这两项技术运行在不同的时间尺度上,容器部署时间以毫秒计算,虚拟机部署则以秒计算。即使存在这些限制,基于虚拟机的容器是一种可行的方法,也是截至目前最常见的部署方法。业内已经在努力发展轻量级的虚拟机管理程序。例如,英特尔纯净容器技术(Intel Clear Containers)是一个以创建容器为目的的虚拟机管理程序。在其他方面,它使用核心的同页合并来安全地共享内存页之间的虚拟机,从而减少内存占用。VMware还支持容器,鉴于该公司在虚拟化方面的优势,对许多部门的运营方面的信心有重要作用。

用户访问控制

除了多租户问题,容器还存在特权升级的风险,某一应用程序获得根访问权限后,便可以获得主机的控制权。另一个问题是一个拒绝服务(Denial-Of-Service)攻击,或者即使是某个由bug造成的问题,所有的资源都能被某一单一容器控制。这些问题在容器环境中更容易出现。举例来说,Docker与主机系统的共享其命名空间,这种情况在基于虚拟化管理程序的环境中是永远不会出现的。

越权攻击可以通过启动时选择普通用户而非根用户的方式来缓解。在Docker中,这表示要在启动命令中加入代码-u。通过去掉SUID来启动这一修正。容器间独立的命名空间可以有效限制恶意软件控制服务器的存储空间。控件组可用于设置资源限制,并阻止拒绝服务攻击吸收服务器的资源。

中毒的镜像

是容器免受攻击的另一重保护,特别是在私有云,是使用受信任的公共库的镜像。今天,几乎所有的混搭使用代码都是用公共库的源代码来构建应用程序。这节省了巨大的开发时间和成本,因此对于IT预算紧张的应用场景,此种方式就显得很有实践意义。然而,大量的安全隐患也同时存在。即使是“高级”的库也可能会传播恶意软件,并且在最近的案例中发现,这样的代码已隐藏在流行的代码库有很多年。

来自受信任库的代码仍然容易受到病毒的侵入。对当今所使用的任何环境,镜像的控制都是关键问题,而不仅仅针对容器。使用支持镜像签名的可信任库,并当镜像加载到库中时,使用这些签名来验证,通过验证后再放行进入容器。这些服务是用来进行签名验证的,同时正确使用这些服务将保护你免受恶意软件的渗透。Docker Hub和Quay是两款可以信任的公共容器注册室。

另一个问题在容器上不是很明显,但在使用容器的传统微服务环境下比较严重,即用户所期望控制它们所运行的程序混搭。这使得存储库控制有点像溜猫。兼具源标识和签名检查的强制用户级验证对于稳定和安全的环境至关重要。在GitHub的Docker安全测试是一种能够检查许多已知安全问题的功能。为用户访问而建设自己的验证镜像库可能是这种方法的最终体现,但缺点在于,程序员很难保持一致并且缺乏灵活性,而库管理员能够几乎可以确定绕过这一验证机制。任何存储库都必须具有非常严格的安全机制,当从第三方存储库获取镜像时,确保其对用户端没有写入权限。要提高镜像库的管理水平,可考虑使用泊Docker的注册服务器或CoreOS Enterprise Registry。

验证和加密

对镜像中的应用程序和操作系统的版本控制是与漏洞有关的区域。同样,这不仅是容器特有的问题,但容器极其快速的变革和Docker对操作代码结构的取代趋势,并将他们替换成新版本是需要很强的制度约束。错位的版本通常提供会提供攻击的可能。

镜像扫描工具可用来自动化镜像并完成文件验证。Docker上有Nautilus工具,而CoreOS上则有Clair工具。如何进行静态或动态下的镜像加密问题仍然悬而未决。一般来说,漏洞文件的加密保护越多,我们要对抗勒索软件就越困难。对于镜像,加密应该起到阻止病毒或木马攻击镜像代码,并且再加上签名扫描和验证列表,便可远离勒索软件。在这方面,镜像相对于虚拟机管理程序有着明显的优势。与周围许多的镜像文件相比,服务器上的加密和解密负载要少得多。

容器守护进行时另一个漏洞点。它是管理容器的进程,并且如果被攻陷,便可以访问系统中的任何内容。限制访问是在保证守护进程安全的第一步。如果守护进程在网络上运行,那么加密传输是必要的,而使用小型化的Linux配置能够有效减少被攻击的可能。

有了上述的这些,我们便有了创建容器和建立其镜像的安全环境的基础。保护运行中的容器栈仍需继续努力。在监控区有个很不错的初期活动处理方法,它为控制动荡的实例混合提供了第一步的可能。CAdvisor是一款很好的容器监控开源工具,同时Docker提供数据命令。这些工具能够独立保证数据过载,因此它们的输出需要输入合适的分析软件包,像Splunk或Sumo Logic’s Docker 日志分析应用程序那样。通过建立正常操作的基线,任何由于恶意软件造成的异常访问的痕迹,都可以阻止并修复。

容器技术在短短几年里已经有了长足的发展。安全的环境确实需要很强的制度约束,但显而易见的是容器社区在相关领域,如镜像管理方面处于领先态势。

我们可以期待在未来1-2代的CPU中将出现对容器的硬件原生支持,就像CPU和当今的虚拟机管理程序配合那样。当其成为现实时,我们可以期待简化的裸金属容器部署的实现。未来还有许多挑战,如将软件定义的基础设施集成到容器的生态系统之中。容器在安全方面与虚拟机技术持平,同时在灵活性和部署速度方面更胜一筹。

本文转自d1net(转载)


推荐阅读
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 科研单位信息系统中的DevOps实践与优化
    本文探讨了某科研单位通过引入云原生平台实现DevOps开发和运维一体化,显著提升了项目交付效率和产品质量。详细介绍了如何在实际项目中应用DevOps理念,解决了传统开发模式下的诸多痛点。 ... [详细]
  • 最近团队在部署DLP,作为一个技术人员对于黑盒看不到的地方还是充满了好奇心。多次咨询乙方人员DLP的算法原理是什么,他们都以商业秘密为由避而不谈,不得已只能自己查资料学习,于是有了下面的浅见。身为甲方,虽然不需要开发DLP产品,但是也有必要弄明白DLP基本的原理。俗话说工欲善其事必先利其器,只有在懂这个工具的原理之后才能更加灵活地使用这个工具,即使出现意外情况也能快速排错,越接近底层,越接近真相。根据DLP的实际用途,本文将DLP检测分为2部分,泄露关键字检测和近似重复文档检测。 ... [详细]
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • Startup 类配置服务和应用的请求管道。Startup类ASP.NETCore应用使用 Startup 类,按照约定命名为 Startup。 Startup 类:可选择性地包括 ... [详细]
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
  • 深入解析TCP/IP五层协议
    本文详细介绍了TCP/IP五层协议模型,包括物理层、数据链路层、网络层、传输层和应用层。每层的功能及其相互关系将被逐一解释,帮助读者理解互联网通信的原理。此外,还特别讨论了UDP和TCP协议的特点以及三次握手、四次挥手的过程。 ... [详细]
  • 探索电路与系统的起源与发展
    本文回顾了电路与系统的发展历程,从电的早期发现到现代电子器件的应用。文章不仅涵盖了基础理论和关键发明,还探讨了这一学科对计算机、人工智能及物联网等领域的深远影响。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 2018年3月31日,CSDN、火星财经联合中关村区块链产业联盟等机构举办的2018区块链技术及应用峰会(BTA)核心分会场圆满举行。多位业内顶尖专家深入探讨了区块链的核心技术原理及其在实际业务中的应用。 ... [详细]
  • 深入了解 Windows 窗体中的 SplitContainer 控件
    SplitContainer 控件是 Windows 窗体中的一种复合控件,由两个可调整大小的面板和一个可移动的拆分条组成。本文将详细介绍其功能、属性以及如何通过编程方式创建复杂的用户界面。 ... [详细]
  • 配置Windows操作系统以确保DAW(数字音频工作站)硬件和软件的高效运行可能是一个复杂且令人沮丧的过程。本文提供了一系列专业建议,帮助你优化Windows系统,确保录音和音频处理的流畅性。 ... [详细]
  • 在众多不为人知的软件中,这些工具凭借其卓越的功能和高效的性能脱颖而出。本文将为您详细介绍其中八款精品软件,帮助您提高工作效率。 ... [详细]
  • 本文详细介绍了C语言中的指针,包括其基本概念、应用场景以及使用时的优缺点。同时,通过实例解析了指针在内存管理、数组操作、函数调用等方面的具体应用,并探讨了指针的安全性问题。 ... [详细]
author-avatar
AT
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有