APP下载

多租户SaaS架构安全风险及对策探析

2015-03-23陆阿妮

电脑与电信 2015年11期
关键词:租户实例架构

陆阿妮

(南京铁道职业技术学院,江苏 南京 210031)

多租户SaaS架构安全风险及对策探析

陆阿妮

(南京铁道职业技术学院,江苏 南京 210031)

随着信息技术的发展,传统的信息系统正逐渐被多租户的SaaS系统所替代。这种系统能显著减少企业的开发、实施和维护成本,也为客户减少了使用成本,但同时也面临着更多的安全问题。本文通过分析多租户SaaS应用系统架构的特点,详解了每种架构可能面临的安全风险,并给出了安全加固的建议。

多租户;SaaS;架构安全

1 引言

近年来,云计算技术得到了广泛的运用和推广。SaaS(软件即服务)是云计算的部署形式之一,要求开发商将软件部署在互联网上,用户通过在互联网上注册、订阅、定制自己的需求来使用服务。随着用户的增多,开发企业必然要考虑如何有效地降低部署和实施的成本。多租户应用(Multi-Tenancy Application,简称MTA)在帮助企业降低成本方面具有显著优势,逐渐成为云计算SaaS的首选架构形式。然而,MTA架构也存在一定的安全风险。因为大量的租户都在使用同一个应用实例,租户之间可能会出现数据错乱的情况,比如租户A访问到了租户B的数据。另外,传统的系统如果被攻破,只会丢失一个用户的信息,而在MTA系统中,攻击者可能通过攻击系统获取大量租户的信息,从而导致所有用户的信息丢失,这种后果非常严重。除此之外,多租户系统还涉及认证、授权、审计等一系列的安全风险和问题,需要我们关注。

2 多租户SaaS定义

SaaS是未来企业大型软件发展的趋势。所谓SaaS指的是Software as a Service,是一种通过Internet提供软件服务的形式。使用SaaS提供服务的软件,不再需要为每个企业单独部署一套软件系统,或者为每个用户购买一套硬件、中间件和数据库。它可以通过共享一套计算资源、存储资源、数据库资源和中间件资源,为大量的用户提供服务。

多租户是SaaS应用发展的必然方向。所谓多租户MTA,指的是云SaaS应用能够容纳不同的客户,并通过数据库对用户提供定制能力,满足不同客户的个性化需求。MTA应用架构的主要特点是多个用户共享同一个应用实例,而不是采用传统的为每个使用者部署一套应用的做法。通过使用MTA架构,企业开发者只需要同时维护一套应用服务的实例。一个或者少数几个数据库实例,即可高效地服务成千上万的用户。

从用户的角度看,使用SaaS应用时,不需要在购买后联系技术人员安装,招聘人员维护,只需要购买SaaS应用的许可,按照使用的服务范围付费即可。所以SaaS也能够显著减少用户使用信息系统的成本,提高效率。多租户的应用架构给用户的感觉是独占的,为其专门定制的,因为用户可以通过Internet很方便地登录、访问SaaS应用,并且定制其LOGO、流程甚至业务。但从开发企业的角度看,MTA应用实际是一个共享的架构,主要是共享了应用的服务层和存储层。MTA架构为开发商实施SaaS带来了极大的便利,只需要开发和维护一套应用代码、一套存储模型即可提供基于Internet的SaaS服务。

3 多租户架构安全风险分析

MTA应用数据库主要包括两种类型的数据:一种是元数据META-DATA,即存储了租户的配置信息,比如租户的基本信息、喜好的UI风格、工作流程、系统配置等等;另一种是应用业务数据,即具体的业务流程、业务定义数据。一般情况下,元数据是可以高度定制的,具有高度的灵活性,能够按照用户的各种需求通过配置选项达到要求,而不是重新开发一套代码来解决问题。所以说MTA架构最重要的就是META-DATA元数据存储的灵活性。

典型的多租户架构分为独立数据库、同一数据库不同表以及共享一个数据库一种表结构的不同架构模式。独立数据库架构是指给每个租户一套独立的数据库系统;同一数据库不同表架构是指所有租户共享一个数据库实例,但是用不同的表来存储不同租户的信息;共享一个数据库一种表结构的架构是指所有租户共享一个数据库实例、使用同一张表,仅用字段来区分租户的信息。除此之外,还存在混合型的架构模式,即有的租户的数据是独立数据库存储,有的租户数据用独立的表存储,而大部分租户的数据是采用字段来区分的。

3.1 独立数据库多租户架构

为每个用户建立独立的数据库,适用于对数据隔离性要求非常高的应用场景,比如银行、证券、保险行业。由于租户的数据涉及到非常重要的隐私,一旦信息泄露,后果将会非常严重,因此必须采用独立的数据库来进行保存,才能有效地保证数据隔离性。

多租户应用MTA通过独立数据库为各个租户提供应用服务,每个租户的请求处理顺序为:(1)租户访问MTA首页,通过Internet的应用层协议HTTP协议进行HTML form表单的提交;(2)MTA服务层通过META-DATA数据库获取租户的数据库信息,比如获取了DB-1为租户A的数据库名称;(3)服务层通过数据库连接池连接DB-1,获取数据库的连接,然后进行查询Select*from tbl_users where user_name='租户A'and user_passwd='********'。通过这一查询过程,能够校验用户的密码,获取用户的基本信息。如果校验失败,则返回登录页面,否则登录成功,继续查询META-DATA数据库,获取该租户的应用配置信息。

在这个过程中,首先要关注的安全风险是HTTP会话劫持。所谓会话劫持,就是某个恶意租户为了获取其他租户的信息,劫持了其他租户当前的会话,冒充了该租户的身份来获取其信息,进而造成了信息泄露。预防会话劫持的途径主要有以下几个方面:(1)HTTP会话尽量选择较短的有效期;(2)HTTP会话的cookie要求做到安全即http only,防止脚本读取;(3)服务器端要校验当前请求的用户信息和会话中信息的一致性。

其次要关注的是传输安全。即多租户共享的MTA架构,必然会有成千上万的租户同时访问系统,恶意的租户可能通过网络监听的方式来获取其他租户的账号密码信息,这必然造成信息泄露。所以实施MTA架构,一个很重要的安全点就是采用HTTPS部署,形成加密的通信,避免恶意中间人的嗅探攻击。

在这种独立数据库的方案中,还要防止SQL注入攻击。有预谋的SQL注入攻击,可能在登录的时候携带恶意构造的登录认证字符串,比如or 1=1,从而查询所有租户的信息,进而盗取其他租户的隐私。所以,要在MTA服务器端进行SQL注入的过滤,或者采用预编译的SQL,通过类型检查来防止SQL注入。

在认证的过程中,还要防止恶意的密码字典暴力攻击,即不断地尝试密码,直到找到一个正确的密码。这需要MTA应用在登录的时候结合采用图片验证码、短信验证码、问题验证、一次性口令验证码等方式来进行登录校验,当遇到可疑的登录尝试、不断失败的请求时,要果断地封堵此请求的再次登录。

最后,对于所有租户的登录、授权、操作都要有对应的审计记录。系统安全管理人员可以通过审计记录评估系统的安全程度,并有效杜绝网络入侵和网络欺骗行为。同时,还要确保审计记录自身的安全性,防止恶意用户进入系统修改或删除审计记录。

3.2 同一数据库不同表的多租户架构

同一数据库不同表的多租户架构的原理是共享一个数据库实例,包括META-DATA和其它业务相关的信息,同时为不同的租户建立不同的表,比如TBL_TENANCY001_META_DATA,TBL_TENANCY002_BUSINESS_DATA等等。如图1所示,此MTA架构的优势在于仅有一个数据库实例,便于整体的备份和恢复,维护成本低。缺点是开发工作量比传统的单用户架构要多一些。因为要管理不同用户的表结构,而且随着用户需求的发展,不同用户的表结构可能不同,这会导致代码的复杂性增加,增加开发企业的维护成本。

要访问这一MTA架构中的数据,租户首先需要访问MTA的首页,输入账号密码后,应用服务层通过META-DATA表获取租户的基本信息,判断密码是否正确。如果正确,则根据META-DATA反馈的表名称信息,到具体的表中获取用户的具体业务信息,从而完整地展现该租户的所有业务。

由于此MTA架构在一个数据库实例中部署,根据META-DATA中反馈的租户信息来获取表名称,从而访问表内的数据,所以根据META-DATA获取表名称的这个判断点的安全性非常重要。恶意租户可能会通过SQL注入获取所有的META-DATA中的租户表名称,从而获取其他租户的具体表,再通过SQL注入修改自己在META-DATA中的表名称,从而达到获取其他用户业务数据的目的。所以说,在此种MTA架构中的应用层,一定要通过过滤的方式防止各种类型的SQL注入,过滤的关键字包括各种SQL关键字(比如“and”、“or”)、单引号等等。

假设恶意租户通过攻击上述防御得到了其他用户的表名,那么系统还可以通过加密设置第二道防线。通过采用不同的密码对各个租户的表进行加密,并且定期变换密钥。就算恶意租户修改为其他租户的表名,他看到的仍然是加密后的数据,因为其不掌握其他租户的解密密码,从而无法获取到有效信息。这样能够彻底地保护租户的数据不被恶意访问。

此外,由于各个租户的信息保存在一张META-DATA表格中,如果某个租户在表格中存储了一段恶意的JAVASCRIPT脚本,其他租户如果看到了并点击了此脚本,那么可能会造成会话劫持或者权限提升攻击。防止这种脚本攻击的方式是在应用服务层做JAVASCRIPT脚本关键字的过滤,主要包括单引号、双引号、尖括号、SCRIPT关键字等;另外还要在HTTP响应返回给租户的时候,再次进行上述检查。

3.3 共享一个数据库一种表结构的多租户架构

当MTA开发企业觉得上述两种架构都太过于复杂,或者增加了开发、维护的成本,那么他们可以选择另外一种看起来更加简单的架构,即共享一个数据库实例,同时也只有一种表结构定义的架构。该MTA架构的优点很明显:简单易开发,即开发代码复杂度明显降低,开发成本也相应降低。但这同时也带来了安全方面的问题,如不容易隔离,数据容易串联,也不易维护。因为大量租户的数据融合在一张表中,牵一发而动全身,对于数据的安全性要求很高。

采用此架构后,租户通过MTA首页进行登录,应用服务层通过META-DATA表获取用户的TENANCY_ID信息。此TENANCY_ID代表该租户在整个系统中的唯一标识,通过此ID,可以在应用服务层查询业务表,获取业务数据。

由此可见,此架构很明显的一个安全风险就是SQL注入。如果恶意的租户想访问其他租户的信息,那么只需要知道对方的TENANCY_ID就可以了。这时,我们的MTA架构首先要从访问层进行控制,即客户端要保障COOKIE的安全性,确保COOKIE是SECURE HTTP ONLY的;其次要保证传输层的安全性,即采用HTTPS方式传输TENANCY_ID。最后就是防止SQL注入的关键字,包括AND、OR、单引号等等,都必须过滤。如果恶意的租户突破了上述防线,获取了对方的TENANCY_ID,我们还需要在服务层的会话管理中检查对方的身份,是否是真实租户的信息。

此种架构下,由于所有租户的信息都存储在一张表中,仅仅通过TENANCY_ID字段区分租户,就不能采用加密的手段来保障数据的安全。因为如果针对每行做不同密钥的加密,会导致查询和分析性能的严重下降,从而大大影响整个系统的性能。

4 结束语

多租户架构是SaaS发展的必然趋势,它能够为开发者减少开发和维护的成本,也为使用者减少了使用的成本。但是正因为其减少了硬件和平台的投资,也带来了很多安全的隐患,包括数据泄露、篡改、提升权限等安全风险。要想保障信息系统的安全性,就必须根据不同架构的特点,采取相应的安全措施,以防后患。

[1]徐子沛.大数据[M].广西:广西师范大学出版社.2012.

[2]孔兰菊,李庆忠,史玉良,等.面向SaaS应用基于键值对模式的多租户索引研究[J].计算机学报.2010(12):2239-2247.

[3]张一川,张斌,刘莹.支持多租约个性化业务定制的SaaS业务-租约模型[J].东北大学学报(自然科学版).2012(05):636-640.

Security Risk Analysis and Advice on the Multi-Tenancy SaaS System

Lu Ani
(Nanjing Institute of Railway Technology,Nanjing 210031,Jiangsu)

Traditional information system is being replaced by the SaaS system along with the development of the information technology.This architecture can dramatically decrease the cost of the development,implementation and maintenance of the enterprise.However,the problems come along with it.The security issues are concerned by the users in most cases.This article analyzes the architecture of Multi-Tenancy SaaS information system and gives security enhancement advice by inspecting the security risk of this architecture.

multi-tenancy;SaaS;architecture security

TP393.09

A

1008-6609(2015)11-0060-03

陆阿妮,女,山东昌邑人,硕士,讲师,研究方向:管理信息化。

猜你喜欢

租户实例架构
基于FPGA的RNN硬件加速架构
功能架构在电子电气架构开发中的应用和实践
多租户数据隔离及加密研究
基于多租户隔离的云安全建设
基于云服务的图书馆IT架构
WebGIS架构下的地理信息系统构建研究
基于MVC模式的多租户portlet应用研究*
完形填空Ⅱ
完形填空Ⅰ
企业多租户云存储平台的设计与实现