考虑容器安全问题
容器是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(转载)

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
IBM抛弃分层计费模式 正式加入云存储价格大战
据悉,IBM同时与NetApp、Veritas以及红帽建立合作关系,显然已经决定加入这场云存储价格大战之中,但遵循的则是另一套有所区别的规则。 IBM认为,分层式云存储的设计思路在于假定用户会根据其长期以来的数据使用模式以极为有交且准确的洞察结论做出选择,这意味着选择其中最切合自身需求的存储层方案能够带来最为低廉的使用成本。然而IBM公司结合现代分析与认知工具,意识到客户可能需要频繁考量归档或者类归档型数据的存在,并将这部分数据传输至AWS Glacier或者Google Nearline等低成本存储服务以继续保持当前计费层的成本优势——这显然是种愚蠢的作法。 因此,IBM公司构建起其“Flex”存储方案。根据下图所示的计价草案,该产品为云存储资源提供了统一的价格,而不论客户的具体访问流量。蓝色巨人认为,尽管初期其每月每GB资源使用成本高于竞争对手,但随着时间的推移其最终仍将能够获得价格优势。另外,IBM公司还希望客户积极将数据投入云端,而不必考虑太多层级以及服务区选项。 IBM抛弃分层计费模式 正式加入云存储价格大战 IBM Flex云存储计费方案,蓝色巨人可能会在2017年第二季度...
- 下一篇
CIA:云端备份的安全准则
你是否全盘思考过将备份迁移到云端后会带来哪些改变?财务和技术方面的驱动因素会促使企业使用云以取代现有的备份方案。云帮助许多企业和机构实现了以往无法想象的灾难恢复方式。但是,在将备份的责任交托给云服务商之前,你应当要考虑清楚这些有关云备份安全的注意事项,其中包含数据的保密性、完整性以及可用性。我们将这三项简称为安全的CIA(即confidentiality、integrity 和availability)。 保密性 作为云备份过程中安全要素的第一项,保密性通常指加密,以及加密所用密钥。在多数云备份方案中,备份数据将在公共互联网环境中遍历传输。该过程中必须要有强加密手段,这是保证数据机密的唯一途径。所幸的是,我们有一项便于使用的协议标准,传输层安全协议(TLS)。通过良好的密钥管理,数据在传输过程中将完全保密。 那么对于云端的静态备份数据安全性呢?静态数据加密机制同样适用。大部分云备份会被存储在对象存储上,并在休眠时完成加密工作。关键问题在于:加密密钥和密钥管理者有多可靠? 无论云服务商能够提供什么,你都会想要有自己的强加密。理想状况下,密钥可以由自己管理,加密操作在数据离开站点时便已完成...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- MySQL8.0.19开启GTID主从同步CentOS8
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Hadoop3单机部署,实现最简伪集群
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2配置默认Tomcat设置,开启更多高级功能