云计算概念及其虚拟化带来的安全挑战“云计算”和“虚拟化”是目前IT建设中备受关注的两个概念,同时也的确是标志着IT技术发展进入了一个新的阶段,而这两个抽象的概念是通过数据中心的构建和管理需求相互联系起来。“云计算”这个概念是近年来兴起的新理念,其目标是将计算和存储简化为像公共的水和电一样易用的资源,用户只要连上网络就可以方便地使用,按量付费。但是这个目标的实质内容,则是在上个世纪中叶就已经有提出了。就如同“虚拟化”的提出也是在上个世纪60年代IBM在360就已经初步实现,也就是随着软硬件技术的发展,近几年虚拟化才得到广泛地应用。1.什么是云计算数据中心1.1.云计算的来源“云计算”为何被称为“云”计算,有一种有趣的说法:我们在画网络拓扑图时,通常用一朵云表示互联网,表示那些网络中对用户透明、不需要关心的网络转发过程,因此在选择一个名词表示基于互联网的新一代计算方式的时候,就采用了“云计算”这个名词。当然这个解释并不太准确,因为这朵“云”里面不仅包含了网络,更包含了计算、存储、服务和软件等元素。云计算用于云描述包括网络、计算、存储等在内的IT基础设施,以及包括操作系统、应用平台、Web服务等在内的软件,这样是为了强调对这些资源的运用而不是他们实现的细节。1.2.云计算的定义云计算的概念提出时间并不太长,对其解释也是百家争鸣,这里我们采用IBM的解释。IBM认为云计算是一种共享的网络交付信息服务的模式,云服务的使用者看到的只有服务本身,而不用关心相关基础设施的具体实现。云计算是一种革新的IT运用模式,其核心原则是:硬件和软件都是资源,并封装为服务,用户可以通过互联网按需地访问和使用。云计算包含四个关键要素:硬件和软件都是资源,通过互联网以服务的方式提供给用户。这些资源都可以根据需要进行动态扩展和配置。这些资源在物理上可以是分布式的共享方式存在,但最终在逻辑上以单一整体的形式呈现。用户按需使用云中的资源,按实际使用的量付费,而不需要管理它们。1.3.云计算的分类及层次架构1.3.1.按服务类型分类所谓云计算的服务类型,就是指其为用户提供什么样的服务;通过这些服务,用户可以获得什么样的资源;以及用户该如何去使用这样的服务。按照云计算的服务类型,云计算可以分为三类:基础设施云(InfrastructureCloud)典型的范例是AmazonEC2。这种云为用户提供底层的、接近于直接操作硬件资源的服务接口。通过调用这些接口,用户可以直接获得计算和存储能力,而且非常灵活,几乎不受逻辑上的限制,但是用户需要进行大量的工作来设计和实现自己的应用。顺便提一下,Amazon的EC2采用的是XEN的虚拟技术来构建其数据中心的。平台云(PlatformCloud)典型的范例是GoogleAppEngine。这种云为用户提供一个托管平台,用户可以将他们所开发的和运用的应用托管到云平台中。但是这个应用的开发和部署必须遵守该平台特定的规则和限制,如编程语言、框架、数据存储模型等。通常,能够在该平台上运行的应用类型也会受到一定的限制。比如GoogleAppEngine主要为Web应用提供运行环境。但是,一旦客户的应用开发和部署完成,所涉及的其他管理工作,如动态资源挑战等,都将由该平台层负责。实际上某些应用云的厂商也逐渐向平台云上发展,例子就是八百客,这是一家复制Saleforce成功经验的国内CRM应用云供应商,目前也开始向客户提供开发平台,从而实现向平台云供应商的迁移。(我们都知道应用程序的最大问题就是客户需求在细节上的善变性和差异性,八百客将开发平台交给客户自己去处理,应该说是一种非常好的策略,也符合互联网的Open趋势)应用云(ApplicationCloud)典型范例是Saleforce.com,这是一家由Oracle前VP创建的一家CRM供应商。这种云为用户提供可以为其直接使用的应用,这些应用一般是基于浏览器的,针对某一特定的功能。应用云最易被用户使用,因为都是开发完成的软件,只需要进行一些定制就可以交付。但是其灵活性也是最低的,因为一种应用云只是针对一种特定的功能,无法提供其他功能的应用。1.3.2.按服务方式分类云计算作为一种革新性的计算模式,同时也带来了一系列的挑战。首先是安全问题,其次是可靠性问题,最后还有监管问题。有些企业希望自己的IT部门完全被公司所掌握,不受外界的干扰和控制。虽然云计算可以通过系统隔离和安全保护措施为用户提供有保障的数据安全,通过服务质量管理来为用户提供可靠的服务,但是有可能不能满足用户的所有预期。针对这一系列的问题,业界按照云计算提供者与使用者的所属关系,将云计算分为公有云、私有云和混合云。一般来说,对安全性、可靠性及其IT可监控性要求高的公司或组织,如金融机构、政府、大型企业等,都是私有云的潜在使用者。因为他们已经拥有了规模庞大的IT基础设施,因此只需要进行少量的投资,将自己的IT系统升级,就可以用于云计算带来的灵活性与高效。除此之外,他们也可以选择混合云,将一些对安全性和可靠性需求较低的应用,如人力资源管理等,部署在公有云上,来减轻自身IT基础设施的负担。有相关分析指出,一般中小型企业和创业公司将选择公有云,而金融机构、政府机构和大型企业则更倾向于私有云或混合云。1.3.3.云计算的架构与云计算中的基础设施云、平台云和应用云相对应,典型的云计算架构分为三个基本层次:基础设施层、平台层和应用层。基础设施层基础设施层是经过虚拟化后的硬件资源和相关管理功能的集合。云的硬件资源包括了计算、存储和网络等资源。基础设施层通过虚拟化技术对这些物理资源进行抽象,并且实现了内部流程自动化和资源管理优化,从而向外部提供动态、灵活的基础设施层服务,即IaaS。(我们的安全设备也是位于这个层次上的)平台层介于基础设施层和应用层之间,具有通用性和可复用性的软件资源的集合,为云应用提供了开发、运行、管理和监控的环境。平台层是优化的“云中间件层”,能够更好地满足云的应用在可伸缩性、可用性和安全性方面的要求。应用层是云上应用软件的集合,这些应用构建在基础设施层提供的资源和平台层提供环境之上,通过网络交付给用户。云应用种类繁多,第一类主要是满足个人用户的日常生活办公需求,如文档编辑、日历管理、登录认证等;第二类主要面向企业和机构用户的可定制解决方案,比如财务管理、供应链管理和CRM等;第三类是由独立软件开发商或开发团队为了满足某一特定需求而提供的创新型应用,一般是在公有云平台上搭建。对于云供应商来说,交付的层次越高,其内部需要实现的功能就越多。例如AmazonEC2为用户提供的是虚拟化的硬件资源,并提供对这些资源的管理;GoogleAppEngine除了需要对硬件资源进行抽象和管理外,还要为用户提供统一的应用开发和运行环境;对SalesforceCRM,不仅要提供对底层硬件和上层软件平台的支持,还要为用户开发立即可用的软件或者软件功能模块。除了上述的划分为,也有一些派生子服务,比如由网络设备供应商提出的Communication/ConnectionasaService,CaaS;对运行环境提供监控的MonitorasaService,MaaS;还有安全即服务SaaS(这和软件即服务SaaS的缩写相同)。1.4.云计算的基础在技术层面上,云计算之所以出现,是有6个方面的推动:芯片和硬件技术的飞速发展,使得硬件能力激增、成本大幅下降。虚拟化技术已经成熟。SOA架构的广泛应用。SaaS模式的流行。网络带宽和可靠性有了质的提高。Web2.0技术的流行改变了人们使用互联网的方式。其中虚拟化技术是云计算中最关键、最核心的技术基础。2.虚拟化虚拟化概念的提出是在上个世纪的50年代,60年代的时候IBM在大型机上实现了虚拟化的商用,随着硬件技术的提升,基于X86体系架构的服务器虚拟化技术在本世纪蓬勃发展。虚拟化技术的普及直接为数据中心的整合提供了基础。2.1.虚拟化的定义关于虚拟化定义的表述方式也有很多,我们还是采用IBM的定义,“虚拟化是资源的逻辑表示,它不受物理限制的约束”。这里,资源可以是各种硬件资源,如CPU、内存、存储、网络;也可以是各种软件环境,比如操作系统、文件系统、应用程序等。虚拟化的主要目标是对包括基础设施、系统和软件等IT资源的表示,访问和管理进行简化,并为这些资源提供标准的接口来接收输入和提供输出。2.2.虚拟化的类型基础设施虚拟化基础设施虚拟化包括网络虚拟化、存储虚拟化。网络虚拟化是指将网络的硬件和软件资源整合,向用户提供虚拟网络来连接的虚拟化技术。网络虚拟化可以分为局域网络虚拟化(VLAN)和广域网络虚拟化(VPN)。存储虚拟化是指为物理的存储设备提供一个抽象的逻辑视图,用户可以通过这个视图中的统一逻辑接口来访问被整合的存储资源(RAID、NAS、SAN)。系统虚拟化系统虚拟化即是在同一台物理机上运行多个独立的操作系统。在操作系统内部看来,与使用直接安装在物理计算机上的操作系统没有显著差异。系统虚拟化的核心思想是使用虚拟化软件在一台物理机上虚拟出一台或多台虚拟机。虚拟机是指使用系统虚拟化技术,运行在一个隔离环境中,具有完整硬件功能的逻辑计算机系统,包括客户操作系统和其中的应用程序。系统虚拟化最大的价值就在于服务器虚拟化。另外还有新的变形,即虚拟桌面VDI。目前主流的服务器虚拟化产品有:思杰的XEN;IBM的PowerVM、zVM;微软的Hyper-V;VMWare的ESXServer。软件虚拟化业界公认的软件虚拟化技术主要包括应用虚拟化和高级语言虚拟化,比如JAVA。3.服务器中虚拟网络层的引入带来的安全挑战服务器虚拟化后,在服务器内部增加的虚拟网络层,对于传统的数据中心安全架构带来两方面的挑战:在同一物理服务器上的多台VM间,可通过服务器内部的虚拟网络之间通信,这短路掉了传统的数据中心防火墙的安全防护。在传统的数据中心内,不同的应用分布在不同的物理服务器上,在靠近物理服务器的位置会部署安全设备比如防火墙,用以提供隔离、状态防护、入侵检测等安全保护。当服务器虚拟化后,在物理服务器内部存在多个虚拟机VM,每个虚拟机承载不同应用;同时,物理服务器内部,还由于虚拟化引入了新的虚拟网络层,具体就是一个虚拟交换机,同一物理服务器内部的不同虚拟机间的流量可以通过内部的虚拟交换机直接通信,不再通过外部的物理防火墙,因此原有的安全防护机制失效了。且不提我们在管理上,期望监控应用间的通信情况时,也无法实现。VM在同一数据中心内的不同服务器间迁移、或者跨数据中心站点的迁移时,传统的数据中心防火墙上预先配置的安全策略无法跟随,这带来安全漏洞。在传统数据中心里,为服务器提供安全防护的防火墙等设备,都是基于安全策略,针对具体服务器做好了固定的配置。而在虚拟化的数据中心里,出于负载均衡、资源动态调整、高可用性、服务器硬件维护甚至是节约电源的目的,虚拟机会在数据中心内手工或者动态地迁移,即虚拟机从一台物理服务器迁移到另一台物理服务器,此时外部防火墙无法感知虚拟机的位置变化,因此针对具体应用的安全策略无法跟随,这又导致的新的安全漏洞。4.业界针对此安全挑战的解决方向4.1.虚拟防火墙方向首先我们在部署FW时,希望防火墙越靠近服务器(应用)越好,既然服务器虚拟化在服务器内部引入了新的虚拟化层,那么在服务器内部的虚拟网络层中再增加虚拟防火墙,提供物理世界中的防火墙相同的功能。目前我们看到的有Altor公司的虚拟防火墙(该公司已被J公司收购),该防火墙利用hypervisor提供API(如VMWareESXServer提供的VMSafeAPI)进行了实现。但由于目前的hypervisor有多种类型,比如VMWare的/XEN/Hyper-V,都需要针对上述虚拟化平台分别开发。另外,我们注意到了新的开源项目OpenVSwitch,该项目不仅实现了基本的2层交换机功能,而且希望实现为多层交换机,也提供部分防火墙功能,目前已经可以实现基于ACL的安全保护。4.2.802.1Qbg兼容的解决方向就像我们上面提到的,这个安全