自2003年美国国家科学基金会投资830万美元支持的"网格虚拟化和云计算VGrADS"项目正式启动了云计算的研发序幕,十年间,云计算在全球各个领域取得了长足的发展,但是其安全问题却伴随着这种发展愈加凸显。在IDC(互联网数据中心)的一次关于"用户认为云计算模式的调整和问题是什么"的调查中,安全性以74.6%位居榜首,由此可见"安全性"已经成为了云计算发展必须面对的头号难题。事实上,业界针对云计算安全性问题的研究从未停止,也取得了令人瞩目的成就,其中,Amazon就是其中较为典型的代表。但事实却依然表明,即便先进如Amazon,仍然也无法摆脱安全性问题的困扰。 1含义 有关云计算,到目前为止,业界仍然没有一个公认的有关云计算的定义。一个比较通用的解释认为云计算包括三种含义。一种云的含义,指的是软件即服务(Softwareasaservice,简称SaaS),即可以在线访问的软件应用,销售力网、谷歌应用(GoogleApps)以及百会(Zoho)就提供这样的服务。云还有一个含义,指的是基础设施即服务(Infrastructureasaservice,简称IaaS),即向用户出租服务器,按时间计费,AmazonEC2就提供这样的服务。云的另外一个含义,指的是平带即服务(Platformasaservice,简称PaaS),即提供工具,让用户建造在宿主云中运行的软件。这些含义在技术圈子里非常通用,已经明确写入美国国家标准技术研究所(NationalInstituteofStandardsandTechnology,简称NIST)的标准性文件。一般认为,云计算是一种分布式并行计算系统,由一组通过各种网络技术相互连接的虚拟化的计算资源组成,通过用户和服务商预先制定的服务协议,作为一个动态的计算资源实体来提供各种服务。简单的说,云计算平台可以通过网络,利用分布式并行计算系统和虚拟化等技术为用户构建一个专用的可以近乎于无限扩展的资源池,为用户提供按需自助的、可计量的存储与计算服务,并具有可以随时根据用户需求对资源进行快速和弹性的提供与释放的能力。在云平台中,终端用户与服务器是对等关系,服务器可以根据客户端的实际需求而提供更为准确、个性化的服务。 基于上述设计思想,Amazon逐步推出了其领先世界的云服务架构。早在2006年3月,Amazon就发布了简单存储服务(SimpleStorageService,S3),这种存储服务按照每个月类似租金的形式进行服务付费,同时用户还需要为相应的网络流量进行付费。亚马逊网络服务平台使用REST(RepresentationalStateTransfer)和简单对象访问协议(SOAP)等标准接口,用户可以通过这些接口访问到相应的存储服务。2007年7月,Amazon推出了简单队列服务(SimpleQueueService,SQS),这项服务使托管主机可以存储计算机之间发送的消息。通过这一项服务,应用程序编写人员可以在分布式程序之间进行数据传递,而无须考虑消息丢失的问题。在开放了上述的服务接口之后,Amazon进一步在此基础上开发了弹性计算云(ElasticComputeCloud,EC2)系统,并且开放给外部开发人员使用。此后,经过多年的发展与完善,Amazon将其旗下的云服务进行了进一步整合,初步形成了包括弹性计算云(EC2)、简单存储服务(S3)、简单数据库服务(SimpleDB)、简单队列服务(SQS)、弹性MapReduce服务、内容推送服务(CloudFront)、电子商务服务(DevPay)以及灵活支付服务FPS在内的较为全面的云服务体系,其中EC2是Amazon云计算计划的核心。 2AmazonDynamo与EC2 经过多年发展,Amazon已经开发出一套颇为实用的云平台来支撑其各种云服务。Amazon平台所依赖的基础存储架构名为Dynamo,它也是Amazon云平台安全性保证的基础。Dynamo的实质是一款高可用的分布式Key-Value存储系统,其满足可伸缩性、可用性、可靠性。Dynamo主要解决了以下几个问题: (1)数据均衡分布问题。Dynamo采用改进了的一致性哈希算法,它引入了虚拟节点的概念,每个物理节点分配到哈希环上多个位置(Token),这样即可根据机器性能给它分配较多或较少的Token,同时节点失效时,它的负载可以由多个物理节点共同分担,因为它在环上有多个位置。同时,Dynamo将数据分区并等份存储,当数据被均匀存储到环上各节点后,Dynamo将冗余存储数据(备份数据)。依靠Dynamo所具有的平衡性、单调性和分散性,Amazon可以保证相邻的节点分别位于不同地区区域,即使某个数据中心由于自然灾害或断电的原因整体瘫痪,仍可以保证在世界上其他数据中心中保存有数据的备份。 (2)数据冲突问题。Dynamo系统选择牺牲一致性来换取系统的可靠性和可用性,解决该问题的方法就是运用了向量时钟原理。(如图1) 图1AmazonEC2的基本架构 (3)容错机制。Dynamo的容错机制包括两个方面,一是临时故障处理机制。Dynamo在数据读写中采用了一种称为弱quorum(Sloppyquorum)的机制,涉及三个参数W、R、N。其中W-代表一次成功的写操作至少需要写入的副本数,R-代表一次成功读操作需由服务器返回给用户的最小副本数,N-每个数据存储的副本数,满足R+W>N,用户即可自行配置R和W。该机制的优势在于更易于实现可用性与容错性之间的平衡。另一个是永久性故障处理机制,即Merkle哈希树技术。 (4)成员资格及错误检测。该问题的解决则是通过基于Gossip协议的成员资格检测机制来实现的。 正是依托于上述的各种解决机制,Dynamo最终为Amazon平台提供了一个看似安全可靠、始终可用的存储系统。在此基础上,EC2、S3等一批云服务应用才能得以部署实施。 简而言之,AmazonEC2是一个让使用者可以租用云端电脑运行所需应用的系统。其基本架构如图2所示。 图2向量时钟原理图 AmazonEC2给用户提供了一种虚拟的计算环境,用户可以在此运行基于Linux的应用程序。用户首先需要创建一个包含用户应用程序、运行库、数据以及相关配置信息的虚拟运行环境映像AMI(AmazonMachineImage)或者直接使用Amazon通用的AMI映像。同时,Amazon还提供另外一项Web服务--简单存储服务S3(simplestorageservice),向用户提供快速、安全、可靠的存储服务。用户只需要将创建好的AMI映像上传到Amazon提供的简单存储服务S3,就可以通过Amazon提供的各种Web服务接口来启动、停止和监控AMI实例的运行。用户只需为自己实际使用的计算能力、存储空间和网络带宽付费。AmazonEC2依托弹性块存储(ElasticBlockStore,EBS)、快照(Snapshot)、地理区域(RegionZone)与可用区域(AvailabilityZone)划分、弹性IP、弹性负载平衡(ElasticLoadBalancing)等关键技术,进一步提升了其云服务的安全性。 |