探索中国CIO人才现状 | 第四季调研报告
SaaS应用中的多租户与安全技术研究
2014-03-04  作者:万方数据 

  1引言


  软件即服务"(softwareasaservice,SaaS)是随着互联网技术的发展和应用软件的成熟而兴起的一种新的软件应用模式,软件部署为托管服务,通过互联网存取。SaaS模式具有可配置、托管服务、单实例多租户等典型特点,与应用服务提供商fapplicationserviceprovider)、按需软件(ondemandsoftware)、托管软件(hostedsoftware)有一些相似,但区别也非常明显。SaaS是一种新的软件应用模式,它以软件租用、在线使用方式提供软件服务。软件厂商或供货商将应用软件统一部署在自己的服务器上,客户可以根据实际需要通过互联网向厂商订购所需的应用软件服务,按订购服务的多少和时间长短向厂商支付费用,通过互联网获得厂商提供的服务.用户不用再购买软件,而改用向提供商租用基于Web的软件来管理企业经营活动,且无需对软件进行维护。服务提供商会全权管理和维护软件,在向客户提供互联网应用的同时,服务商也提供软件的离线操作和本地数据存储.让用户随时随地都可以使用定购的软件和服务。


  根据计世资讯的研究报告,2007年国内SaaS市场规模达到1575亿元人民币,比2006年(1222亿元人民币)增长了28.9%。2008年,国内SaaS市场总体规模达到277.6亿元人民币,2009年则达到了354.2亿元人民币,增长率为27.6%,市场增速有所回落。与传统IT市场受经济环境影响非常大相对而言,SaaS市场可谓一枝独秀,市场持续保持高速、稳定的增长,培育了如阿里软件、金算盘、铭万软件、800CRM、Xtools、华美宏大、开启网、神码在线、金蝶友商网等一大批优秀的SaaS运营商。总体分析,未来3到5年,国内工具型SaaS将向普及应用的方向发展,管理型SaaS将会快速增长,未来管理型SaaS的市场占比将不断增加。


  2SaaS的发展历程


  研究SaaS的起源与发展历程有助于我们理解它的来龙去脉,为更好理解和解决SaaS发展中存在的问题、把握SaaS的发展趋势提供帮助。工具型SaaS起步相对较早,基本上是随着互联网的发展而产生且不断丰富和发展的,此类SaaS的用户数量庞大。目前已经比较成熟。实际应用包括网络游戏、搜索引擎、邮箱、在线杀毒等个人桌面应用,统一通信、网络视频会议、网络传真、在线办公等企业应用。这里主要研究管理型SaaS的起源与发展情况。


  当前备受关注的SaaS的概念最早出现在2000-2001年,当时以CitrixSystem等为代表的一些公司提出把软件当作一种服务来提供给客户,而非以产品的形式销售给客户,SaaS一词则是在2005年3月的一次主题研讨会上被首次提出的。自此以后,SaaS不断地被人们所关注,汇集了业界企业及专家学者的目光。


  SaaS应用于企业管理的思想在国外并不新颖,已经有了近10年的历史。在此期间,其表现形式各异,思想内涵也不尽相同。结合时代背景,企业管理的SaaS的发展大概可以划分为3个阶段。


  (1)萌芽阶段


  企业管理的SaaS最早可以追溯到20世纪90年代兴起的ASP模式,所谓ASP模式是指应用服务提供商通过网络向用户分发并且管理SaaS的一种模式。在此模式下,企业用户通过网络来访问和使用软件,既无需购买也不用亲自运行、维护这些软件,而是由一个新的角色——应用服务提供商购买、部署、运行、维护和负责升级软件。ASP模式是SaaS应用于企业管理的最初表现形式。虽然已经具备SaaS的部分核心思想,但是这个时期的ASP模式发展并不顺利,这与它的理念在当时过于新颖和技术水平发展不成熟有关。ASP模式在2000年前后事实上以失败告终。尽管经历了前期的挫折,但是经过早期ASP们的广泛宣传,ASP模式开始广为人知,接受程度缓慢提高。


  (2)调整阶段


  随后,一种称之为“按需软件”的理念日益成长,并携ASP模式的余温再次受到关注。按照按需软件的模式,客户可以根据自己的实际需求向SaaS提供商定购所需的SaaS,按定购的SaaS多少和时间的长短向SaaS提供商支付费用,并通过互联网获取SaaS。按需软件是SaaS在思想上的一次扩充,它将“按需”的思想和“服务”的形式结合在一起,形成了目前SaaS的核心。在此阶段,企业管理类的SaaS模式发展比较艰难.原有的ASP厂商们正经历着不断的整合与调整。但是,SaaS提供商们比以往更加摸准了、市场的需求.提出了更有针对性的服务。SaaS提供商们经历了早期的冲动与燥热.开始回归理性的方向,在市场中摸索前行。


  (3)稳步发展阶段


  经过一段时间的发展,随着社会对IT认识的逐步加深,人们逐渐认识到IT作为组织的非核心业务可以外包出去;同时,技术水平的提升使得基于Web的信息系统与传统的信息系统使用起来差别不大:用户开始认可并接受基于Web的信息系统。这些都为面向企业管理的SaaS重获生机提供了条件,SaaS在这样的时代背景下应运而生。SaaS秉承了“前辈”优秀的思想精髓.也吸取了它们在发展过程中的教训,一开始就将自己定位于向用户提供基于互联网的企业通用管理软件。为中小企业提供企业信息化服务。目前,SaaS发展迅速,以Saledorce.com等为代表的SaaS提供商开始向用户提出各类解决方案,以帮助企业向更高一级的信息化阶段迈进。以Microsoft、SAP、Oracle等为代表的传统IT厂商也纷纷加入这一阵营,开始将一些传统软件产品转向SaaS模式。2004年6月,Salesforce.com在纽约证交所成功上市,这无疑是一记宣告市场对SaaS认同的坚强锤音。


  为表示与之前ASP模式有所区分,国外开始普遍用SaaS取代ASP的说法,称之为“软件即服务”。我们可以看到,企业管理类的SaaS的发展并非一帆风顺,经历了一次曲线式前进、螺旋式上升的事物发展过程,如图1所示。对于国内SaaS市场,爆发仍然还需要一段时间,2015年左右将是SaaS市场发展的黄金时期,之后将进入市场成熟阶段。


  3多租户技术


  多租户作为SaaS的核心技术,本质上是一种应用程序模型,在该模型中所有的用户和应用可以共享同一个基础架构和代码平台。与传统的单租户程序相比,多租户的设计思想是:多个租户可以共享、运行在同一套硬件平台之上的单个应用软件实例,类似于Google的邮件服务。多租户的设计使得快部署、低成本的理想成为现实。由于角度上的差异,不同机构对多租户的理解存在一定区别。如Salesforce公司认为多租户是一种应用模型,所有的用户和应用共享一个单独、通用的基础结构和相同的代码:知名研究机构(AMRResearch)认为:一个应用的实例数据模型,被提供给多个客户使用:RightNow公司的观点则是:所有的应用共享一个高性能的服务器,成千上万的客户通过这个服务器访问应用。共享一套代码,同时又可以通过配置的方式改变特性。


  4SaaS安全技术


  当前,安全问题成为制约SaaS全面兴起的主要瓶颈。参考文献对SaaS模式下的数据安全进行了较全面的研究,对SaaS安全技术研究具有一定参考价值。企业用户在选择IT产品时,无论是传统软件还是基于SaaS的软件服务,最先考虑的就是安全性。


  SaaS的安全性主要分两个方面:技术安全和非技术安全。


  技术安全即物理安全,从机房安全开始。机房的安全性包括气体灭火、恒温恒湿、联网电子锁防盗、24h专人和录像监控、网络设备带宽冗余、口令进入机房等。服务器和防火墙的负载平衡、数据库集群和网络储存备份在近几年也成为标准安全性技术。主流SaaS运营商多采用双数据中心运营,其中一个机房数据中心为冗余备份。多城市多机房的模式可提高访问速度,但因大大增加安全管理隐患和维护成本,很少被成熟的SaaS企业采用。


  (1)数据库安全


  SaaS软件系统普遍采用大型商用关系型数据库和集群技术。在数据库的设计上,多重租赁的软件会有3种设计,每个客户公司独享一个数据库instance,或独享一个数据库instance中的一个schema。或多客户公司以隔离和保密技术原理共享一个数据库instance的一个schema。几乎所有SaaS软件开发商都选择后两种方案。也就是说。所有用户共享一个数据库license,从而降低了成本。数据库隔离的方式经历了instance隔离、schema隔离、partition隔离、数据表隔离到在应用程序的数据逻辑层提供的根据共享数据库进行用户数据增删改授权的隔离机制.从而在不影响安全性的前提下实现效率最大化。


  (2)应用程序安全


  应用程序的安全围绕Web服务器展开。比如Apache、IIS等。基于这些Web服务器,主流厂商多采用J2EE或.NET开发技术,并会采用特殊的Web服务器或服务器配置以优化安全性、访问速度和可靠性。有些厂商会采用PHP、Ruby等开发技术,相比之下,J2EE和.NET集成了更多、更成熟的安全技术。同样,Oracle、SQLServer和DB2在数据库层面相比MySQL等数据库也更加成熟。


  身份验证和授权服务是系统安全性的起点,J2EE和.NET自带全面的安全服务。J2EE提供ServletPresentationFramework,.NET提供.NETFramework,并持续升级,因多重租赁带来的整体升级效应。使所有使用者共同受益,并不需要支付额外的升级费用。应用程序通过调用安全服务的编程接口(API),对用户进行授权和上、下文继承。


  在应用程序的设计上.安全服务通过维护用户访问列表、应用程序Session、数据库访问Session等进行数据访问控制,并需要建立严格的组织、组、用户树和维护机制。


  平台安全的核心是用户权限在各个SaaS应用程序中的继承。Salesfowe或八百客等厂商的产品自带成熟的权限树继承技术,自2006年以来,已经实现大规模商业运营。而与第二种运营平台模式类似的集成需要专业的定制开发,相应的中间件技术或SOA总线技术还未成熟。


  ACL和密码保护策略也是SaaS软件成熟度的标志。客户可在自己的系统中修改相关策略。有些厂商还推出了浏览器插件来保护客户登录安全。而在最近半年,国外厂商频繁地开始让用户登录后回答自己预设的秘密保护问题和答案,也是一种安全的保护策略,因国内对这种密码保护策略的使用还不习惯,所以还没有广泛地推广开。


  (3)数据传输和客户端安全


  SaaS通过互联网而非企业局域网来传输数据和表格。SaaS和已经普及的网上银行和网银支付都采用SSL加密技术,加密位数随着硬件速度的提升而增加。主流厂商通常也会花大笔资金购买专用SSL加密设备。八百客、金蝶等国内厂商也提供类似网上银行的U盾客户端认证技术。


  SaaS软件都采用浏览器来访问,普遍采用的安全技术包括Cookie加密、URL随机码、SQL等代码的注入防范等技术。当然,浏览器及时升级也非常重要。


  成熟的SaaS系统也推出了可离线使用的客户端软件。虽然Salesforce用“不用软件”的口号吸引了很多关注。但其需要下载和安装的离线版也拥有10%左右的使用率。像RightNow等其他厂商,在客户端上做了更多的开发和实施工作。八百客的专用客户端还做了呼叫中心、VoIP电话、短信、电子传真和企业邮局的集成。这些专用客户端多采用本地数据加密、SSL传输加密等安全技术。


  相对而言。非技术安全才是最重要的,也是用户当前最担心的。把企业客户或运营资料全盘委托给服务商保管,还会遇到一些非技术性的困境,就是谁可以保证机密资料不被泄漏。换句话说就是,服务商能否值得信任。SaaS的特点是由服务商完成所有的系统维护。当服务商提供服务时,技术人员可以很方便地接触到用户的商业数据。这时就存在着用户对服务商的信任问题。


  随着互联网的应用不断深化,构建如图5所示基于用户视角的安全框架或安全解决方案也成为越来越多SaaS软件运营商关注的话题。有效地增强SaaS系统抵御风险的能力,提高SaaS系统整体运营效率是绝大多数SaaS运营商首要考虑的问题。


  5结束语


  随着互联网的迅猛发展,特别是Web2.0的兴起,将软件作为一种服务形式提供给客户的需求逐渐增加,软件产业正在形成新的SaaS模式。SaaS模式使得客户不再像传统模式那样在硬件、软件、人员上花费大量的投资,而只需按照自己想要享受服务的时间,签订服务合同。并且支出一定的租赁费用,通过互联网便可以享受到相应的硬件、软件和维护服务。享有软件的使用权及不断升级,它是网络应用最具效益的运营模式。本文在介绍SaaS的起源与发展过程基础上,重点研究了SaaS中多租户的实现方法,并从技术与非技术两方面对SaaS的安全性进行了较详细的分析。


  目前,实现多租户的方法主要有物理分隔(physicalisolation)、虚拟化(virtualization)、支持多租户的应用设计等。


  ·物理隔离方法,通过为每个Tenant配置独占的物理资源,实现在物理层面上的隔离。同时可以根据每个Tenant的需求,对运行在物理机器上的应用进行个性化。然而这种模式的软、硬件成本较高,只适用于大、中型企业。


  ·虚拟化方法,包括虚拟机(virtualmachine)和虚拟服务(virtualservice)。虚拟机模拟了物理机器,在一台物理机器上运行多个服务器环境和程序,各种物理资源被虚拟机共享。可以在每个虚拟机内对Tenant进行个性化。但当有成千上万个Tenant的时候,给每个Tenant都建立独立的虚拟机是不合理和没有效率的。虚拟服务的主要目的是为了减少为达到隔离目的而产生的独占性资源。与对OS层做整体的虚拟化不同.多个虚拟服务可以共享一些基本OS内核,例如各种驱动程序等。与虚拟机器一样,虚拟服务很难支持成千上万的客户.但在SaaS运营商优化机器资源分配等方面。却是一个很有用的技术。


  ·支持多租户的应用设计方法,主要通过应用本身来实现对多租户的支持。如共享应用实例是用在一个应用实例上,为成千上万个Tenant提供服务。Tenant间是隔离的,并且Tenant可以用配置的方式对应用进行定制。这种技术在资源利用率和配置灵活性上都较虚拟化的方式好,并且由于是一个应用实例,在管理、维护方面也比虚拟化的方式方便。


  对比以上几种多租户的实现方法可以看到,随着实现层面从物理机器到应用程序自身支持。资源利用率呈上升趋势,整体软、硬件的成本呈下降趋势,Tenant间的隔离程度呈下降趋势,资源利用率大幅提高。


  IBM公司的CarlOsipov等人则提出了服务供应商可以使用以下5种实现多租户的方法.


  (1)包含单一应用程序实例的共享中间件


  所有租户共享操作系统、服务器以及中间件和应用程序的单一实例。实现的方法是用租户标识参数对应用程序的单一实例进行参数化。例如,如果应用程序有Web服务接口和实现,那么在接口中的操作和数据对象中添加租户ID参数。如果应用程序使用数据库表,那么在每个数据库表中添加一个表示租户ID的新列。在这个模型中,有一些配置元素对于每个租户是独特的。例如。虚拟门户为每个租户提供不同的外观和感觉以及独特的数据库模式元素。


  (2)包含共享地址空间中的多个应用程序实例的共享中间件


  租户使用应用程序的不同实例.这些实例部署在中间件的单一实例中,共享单一操作系统进程(地址空间)。租户共享操作系统和服务器。


  (3)包含单独地址空间中的多个应用程序实例的共享中间件


  租户使用应用程序的不同实例.这些实例部署在中间件的不同实例中。租户共享操作系统和服务器。因为中间件实例是不同的,所以每个租户有自己的操作系统进程(地址空间)。因此,这个模型要求在操作系统层维持租户隔离。这种方法在相同的物理服务器上支持的租户数量比方法1和2少。


  (4)用多个VM映像实现虚拟化


  租户使用不同的虚拟映像以及应用程序、中间件和操作系统实例,但是共享物理服务器。近几年,服务器虚拟化技术在基于x86的服务器上得到了广泛应用,正在迅速地成为一种低成本的日常技术。多租户的技术困难之一是供应新的租户。为了供应新的租户,服务供应商必须执行可能漫长且复杂的安装和配置步骤。可以采用Virtualapliances(例如,VMWareVirtualApplianceforWebSphereApplicationServerNetworkDeploymentV7.0OpenBeta),在其中包含预先配置的与租户相关的操作系统和中间件,这有助于解决供应问题。


  (5)在单独的服务器上运行多个实例的ASP模型


  租户只共享数据中心的基础结构(比如供电和制冷),但是使用应用程序、中间件、操作系统和服务器的不同实例。在图3所示的示例中,租户A、B和C使用3个不同的应用程序实例AppA、AppB和Appc,它们在与租户相关的中间件实例、操作系统实例和物理服务器上运行。这种方法最适合那些要求为不同的租户提供充分隔离和定制的工作负载和场景。


  方法1、2和3都在多个租户之间共享中间件和应用程序组件,只是程度不同,方法3提供最强的租户隔离。共享中间件方法的运营成本相对较低。因为随着资源共享程度的提高(服务器、中间件和操作系统),要管理的组件数量会减少。与共享中间件方法相比,服务器虚拟化不需要为启用多租户进行大量代码开发。


  有关多租户技术的研究。有助于选择合适的方法并准备适当的体系结构,从而逐步实现这些目标。