刘国萍,刘建峰,谭国权
(1.中国电信股份有限公司北京研究院 北京 100035;2.北京市交通信息中心 北京 100073)
互联网技术的发展,企业客户对低成本、快速获取企业应用需求的快速增长,应用软件开发技术的成熟,催生了一种基于互联网提供软件服务的应用新模式——SaaS(software as a service,软件即服务)。
SaaS作为一种基于互联网的软件交付模式,软件在规模应用后的性能与运营成本是软件开发商和服务运营商共同关心的重点。成熟的SaaS软件开发商多采用一对多的软件交付模式,也就是一套软件供多个客户使用,此种方式称为单应用多重租赁 (single instance multitenancy)。相对于为单一企业提供的一对一软件交付模式(如早期的ASP模式和单租赁SaaS),多重租赁大大降低了软件的维护和升级成本,同时也增强了软件的可靠性和可扩展性。
多重租赁的SaaS服务通常基于一套标准软件向成百上千个不同租户提供服务,这要求SaaS服务在满足不同租户对诸如界面、业务逻辑、数据结构等的个性化需求的同时,还能够支持不同租户之间的数据和配置的隔离,从而保证每个租户数据的安全与隐私。即多重租赁SaaS在满足多租户间最大程度共享资源的同时,严格区分和隔离属于不同用户的数据,这不仅对SaaS应用平台在性能、稳定性、扩展性上提出了更高的要求,更对SaaS应用运营管理、服务接入、应用设计、数据存储、基础设施等每个层面的安全提出了更大的挑战。
SaaS服务的安全不仅与SaaS应用的部署、逻辑体系架构密切相关,还与SaaS应用运营管理架构密切相关。本文在分析构建SaaS服务体系架构链的基础上,提出多重租赁的SaaS服务分层二维安全模型,并针对分层模型探讨每个层面可能涉及的安全技术与策略。
在Philippe Kruchten提出的4+1软件架构视图[1]中,逻辑视图和部署视图是软件架构设计的两个重要视图[2],分别从功能设计和部署实施层面决定了SaaS系统的安全性。此外,对于SaaS应用,系统的运营维护对其安全性也有重要影响。图1从SaaS安全性角度出发,给出了以逻辑视图、部署视图、运营视图共同构建的SaaS应用服务体系架构链。
为了突出SaaS系统的多租户可配置与可扩展性,同时也为了更好地分析并构建SaaS系统的安全模型,逻辑视图采用了6层模型,与传统的4层模型相比,增加了配置管理层和数据模式选择层。配置管理层提供多租户灵活的配置管理能力,包括自定义表单、自定义工作流程、自定义数据结构和自定义报表及个性化界面等。数据模式选择层提供了多租户环境下对不同数据库类型和共享结构的适配和支持能力,提高了系统的可扩展性。SaaS逻辑视图从系统分层设计的角度,反映了SaaS系统每个层面上需要考虑的安全因素。
考虑到服务提供商的经济效益与客户的多样化需求,与传统系统相比,SaaS部署视图中增加了虚拟化抽象层。SaaS部署视图从系统部署的角度,反映了SaaS系统需要考虑的安全因素。
SaaS服务与传统的驻留于企业内部的应用有很大不同,以集中的离站式方式提供,因此在图1中,更强调行业监管、运维架构和服务流程对SaaS服务安全的影响。
SaaS服务安全包含SaaS应用系统自身安全 (包括基础设施、数据和应用软件)以及与SaaS应用相关的运营服务的安全(运营管理)。SaaS服务安全在服务的不同阶段,关注的重点不同,规划建设阶段侧重于对已知、常见的安全风险的检测与防护,而运行维护阶段则侧重于动态或未知安全风险的监测、预防与补救。
根据上述的SaaS服务体系架构链,给出如图2所示的SaaS服务安全二维模型。在该模型中,横轴给出了安全实施的重点阶段,纵轴给出了SaaS应用的安全层次划分。该模型便于分层次、分阶段地对SaaS服务的安全性进行分析研究。
SaaS服务安全模型的最底层是基础安全层,主要是机房、网络和硬件及操作系统层面的安全,这个层面除增加虚拟机安全隔离外,其他与传统应用的安全实施内容基本相同。基础设施层面的安全分两个阶段:一是服务规划部署阶段,如机房安全;二是服务运行阶段,如网络安全和主机安全等。
SaaS服务安全模型的第2层是数据安全,包含数据库自身及其他应用数据的安全,是SaaS服务安全的重点部分。这个层面的安全包括设计建设层面的数据库组件服务安全以及数据库访问安全等,在运行阶段主要考虑数据存储安全和数据传输安全。
SaaS服务安全模型的第3层是应用安全,主要是指应用程序自身及客户端访问安全。该层面的安全实施与传统的应用相比,没有增加更多新的内容。但由于SaaS服务用户数量庞大、租户情况各异,每一项安全内容都需要更加严密的设计与实施,尤其在运行阶段,服务提供商应加强对Web型SaaS应用的挂马监测,避免造成大范围的客户受损;同时客户侧也应加强自身安全意识,及时对浏览器漏洞进行修补。
SaaS服务安全模型的最上层是运营管理安全,该层在安全模型中是重要的一层,因为对于以服务为交付模式的SaaS服务而言,客户的隐私信息及重点数据均由服务提供商所掌握。服务提供商的运维体系是否健全、运维流程是否规范、行业监管政策是否完备以及服务审计是否有效等,都将影响到客户的合法利益及客户使用SaaS服务的积极性,从而影响了服务提供商的利益。
在上述SaaS服务分层二维安全模型中,涉及的安全内容较多,包括技术实施和运营管理,技术实施是基础,运营管理是重要保障。本文限于篇幅,仅从技术层面对SaaS服务涉及的安全内容进行分析探讨,包括基础安全、数据安全和应用安全3个层面。
在SaaS服务中,用户的数据和资料等都保存在SaaS服务器端,服务器端机房、传送服务的网络及存储数据的服务器安全技术实施不够严密,很容易遭到人为泄密或黑客攻击,租户隐私及数据安全就会受到威胁,所以SaaS服务的软硬件基础设施的安全是保证SaaS服务安全的基础。
(1)机房安全
SaaS服务的安全始于机房。机房的安全性包括气体灭火、联网电子锁防盗、24 h专人和录像监控、口令/门禁进入机房等。
(2)网络安全
SaaS服务的基础是网络。SaaS网络的安全性包括内外网隔离与访问控制(网络防火墙)、网络入侵检测、应用入侵防御(应用防火墙)、网络流量监测管理、安全审计、网络出口冗余备份等技术。
(3)主机安全
部署SaaS应用的主机包括Web服务器、数据服务器、应用服务器等,主机安全技术主要指主机系统与服务安全,如系统病毒防护、系统漏洞修复、主机防火墙、虚拟交换机、虚拟防火墙等技术。针对Web服务器,还需要利用主机入侵检测及主机审计技术提高其安全性。通过对数据库服务器的集群和备份,在保证服务高可用性的同时,也使得数据在遭到破坏的情况下,可通过备份信息得以恢复。
任何企业应用的数据对于用户来说都是一笔重要资产,SaaS服务使得用户通过网络集中存取数据,因此数据的丢失将导致用户资产遭受重大损失,同时也会对SaaS服务提供商失去信任,因此数据安全对用户和服务提供商至关重要。
(1)数据库服务安全
面向广大租户的SaaS服务,SaaS应用一般采用大型商用关系型数据库,如Oracle、SQL Server和 DB2等,相对MySQL等开源数据库,更加成熟、安全。
在数据库的设计上,多重租赁的软件有3种设计,每个客户公司独享一个数据库实例,或独享其中的一个模式,或多客户公司以隔离和保密技术原理共享一个数据库实例的一个模式。SaaS服务提供一般为最大化效益,一般采用后两种,应用设计时可通过诸如权限管理、SQL视图以及加密等“虚拟隔离”机制满足用户安全性需求。
(2)数据库访问安全
数据库安全依赖于数据库系统的访问控制。目前对数据库进行访问控制有3种机制:基于强制访问控制(MAC)的、基于自主访问控制 (DAC)的和基于角色访问控制(RBAC)[3]的机制。从安全性角度来说,在对 SaaS应用的数据库进行访问控制时,采用基于MAC和基于RBAC的方式,相对于基于DAC的方式安全性更高。
(3)数据存储安全
SaaS应用数据都存储在服务提供商侧的数据库管理系统中,而每个数据库系统中都存在一个超级用户,通常这个超级用户是软件运营商内部人员,因此对于担心企业应用数据会被运营商看到的租户来说,可以采用数据存储加密的方式,确保其数据的安全性,同时也可以避免由于数据库受到攻击导致的机密数据被窃。
传统的加密以报文为单位,加密解密都是从头至尾顺序进行。数据库数据的使用方法决定了它不可能以整个数据库文件为单位进行加密。数据库加密通常基于子密钥加密技术和秘密同态技术对数据库字段和记录进行加解密[4]。
数据存储安全除包括上述用户机密数据存储安全外,还应包括对退租用户的残留数据进行彻底清除。
对于多租户按需租用的SaaS服务,客户对服务的租用与退租行为将变得相对频繁,如何确保退租用户存储在服务器中的数据在重新租给新的用户之前能被彻底销毁,以防止机密信息的外泄,也是摆在租户和服务提供商面前的一个重要安全问题。目前通用的删除、格式化、重新分区、反复填写等技术并不能保证信息的彻底销毁,彻底的销毁需要首先对电子数据存储介质的底层进行分析,在分析其结构的基础上进行底层的覆盖写入,从而确保数据擦除后的电子数据具有不可恢复性。
(4)数据传输安全
对于B/S架构的SaaS服务,用户通常采用浏览器且通过互联网访问部署在软件运营商端的SaaS服务,这对于需要传输一些机密数据(如客户资料、财务资料)且对安全性要求较高的用户来讲,保证其在互联网上传输数据的安全可靠是一项非常重要的需求。
目前有两类技术可解决传输中的数据安全问题,第一类是基于隧道技术、加解密技术、密钥管理技术和使用者与设备身份认证技术,组建VPN,实现租户在公用互联网上建立一个临时的、安全的连接隧道,确保信息的安全传输;第二类是基于HTTP SSL实现客户端与服务器端通信数据的安全传输,在实际的数据传输前,通信双方进行身份认证、协商加密算法、交换加密密钥等。在数据的传输过程中,密钥应该定期更换。
(1)应用服务安全
在分层安全模型里,应用服务安全包括应用服务器安全和Web服务器安全。
应用服务器是指通过多种协议为客户端提供商业逻辑的服务组件技术,为应用程序的执行提供核心服务,如对CORBA的支持以及EJB容器等,并提供系统级的服务,如事务处理、安全服务、缓存服务、负载平衡、系统管理以及灾难恢复等功能。由于越来越多的用户使用各种设备,通过各种方式访问系统,这要求应用服务器不仅能提供良好的技术兼容性、扩展性、开放性和可靠性,还能提供足够高的安全性,应能确保应用数据的机密性、完整性和可用性,不让攻击者访问任何机密信息。SaaS服务提供商应选择一些主流商用应用服务器平台,如Weblogic Server、Websphere Application Server、Oracle9i Application Server等,它们均可提供较高的安全性服务,如用户和应用程序的认证、加密授权、审计、访问控制和会话管理等。
在B/S架构的 SaaS服务中,Web服务器 (即 B/S的服务端)用于接收用户HTTP服务请求,并作出响应。Web服务器作为直接面向客户端提供网页解析服务的组件,最容易成为外部攻击的目标,攻击者利用各种系统漏洞、口令破解等途径实施攻击,进行内容篡改、盗取管理员密码、数据库注入、网站挂马、木马植入、窃取数据等破坏活动。
为保证网站免受攻击、篡改,一方面需要SaaS应用的开发商在选择Web服务器时选择安全性相对较高的服务器组件,如IIS 7、Apache、OpenAngel等服务器;另一方面还需要在Web代码设计时充分考虑代码的安全性,开发时加强代码安全性检查与测试,如在保存通过文本框输入的数据之前进行必要的字符长度、数据类型、字符格式、特殊字符等严格检测,以避免缓冲溢出漏洞和SQL注入式漏洞。
(2)站点安全
对于B/S架构的SaaS服务,网站系统在运行时还需要利用数字水印技术、应用防护技术及增强型事件触发检测技术实现页面防篡改、防注入攻击,对网页内容进行实时监控,并在必要时进行网页自动恢复。
(3)身份认证
认证是指验证提供服务的服务器或访问服务的用户身份合法性的过程,授权是指对通过认证的对象授予访问特定服务或操作特定功能的权限的过程。身份验证和授权服务是保证SaaS应用系统安全性的基础。
SaaS应用系统需要提供完整的身份管理和登录服务。基于密码的认证在HTTP协议中是一种基本的认证方法,它提供了有限的安全性。对于安全性要求较高的场合,采用数字签名方式。使用SSL进行数字签名是安全认证的有效方法,通过第三方信任的认证机构发放数字证书,可以用来确认服务器或用户的身份。通过多个证书链可以提供更加灵活、安全的B2B安全需求。
(4)客户端安全
在上述安全分层模型里,SaaS应用客户端安全指客户端浏览器安全。随着B/S架构的流行,将有越来越多的SaaS软件采用浏览器方式提供访问。对基于浏览器的访问模式,普遍采用的安全技术包括Cookie加密、URL随机码、SQL等代码的注入防范等技术。同时,浏览器自身的及时升级及安全设置也是非常重要的。
SaaS服务安全涉及多个环节,从应用的设计、开发、部署到运行,每一个环节都需要严密考虑。它不仅是技术实施问题,更重要的是,还需要SaaS服务提供商内部健全而规范的信息安全管理流程和运维组织体系保证,以减少SaaS应用的数据及用户隐私内部人为破坏或泄露的概率。同时,SaaS应用安全还与社会整体安全环境相关,SaaS服务的用户应增强到自身隐私信息、服务账号和密码的保护意识,国家监管及执法部门应完善互联网网络攻击及诈骗等犯罪行为的相关立法。
SaaS应用的安全还来自客户内心的感知。服务提供商除从技术及运营管理层面保障SaaS安全外,还需要从客户安全感知方面加以增强,如提供实体的USB加密,以增强客户内心对SaaS服务的安全“感知”,逐步提升对SaaS服务安全的信任度。
1 Philippe Kruchten.架构蓝图——软件架构 “4+1”视图模型.https://www.ibm.com/developerworks/cn/rational/r-4p1-view
2 软件架构视图.http://wenku.baidu.com/view/6f9c2b4ae45c3b3567 ec8bf1.html
3 赵勇,田茂.多用户空间数据库的安全访问控制.计算机应用研究,2004(11)
4 数据库安全.兰州理工大学计算机与通信学院数据库原理与应用课件,2009
5 王茂光,丁颖.应用服务器的安全性研究.计算机工程与设计,2004(11)