1 绪论
1.1 课题研究背景和意义
SaaS(Software as a Service)服务模式是近年来兴起的一种软件应用模式,它与基础设施即服务(IaaS,Infrastructure as a Service),平台即服务(PaaS,Platformas a Service)都属于云服务[1],但却与 IaaS、PaaS 有着本质的区别。SaaS 服务通常部署在云上,客户通过互联网来获取软件服务,服务供应商负责了服务所需要的一切硬件设备和软件环境,并承担了软件更新发布,维护升级等工作[2]。对于SaaS 服务的使用者来说,只需根据自身业务的实际需要,按需向服务供应商购买服务,便可以立即享受到最新的技术应用。随着互联网的蓬勃发展,SaaS 服务的种类与产品已逐渐丰富和多样化,有许多面向个人和面向企业的服务,比如:文档在线编辑、照片管理、客户端关系管理、企业资源管理等,还包含了一些针对特定应用场景和应用领域的服务,SaaS 服务模式是未来互联网软件发展的趋势。为了进一步丰富 SaaS 服务的多样化,促进 SaaS 服务生态圈的发展,许多SaaS 服务企业都推出了自己的开放平台。
1.1 课题研究背景和意义
SaaS(Software as a Service)服务模式是近年来兴起的一种软件应用模式,它与基础设施即服务(IaaS,Infrastructure as a Service),平台即服务(PaaS,Platformas a Service)都属于云服务[1],但却与 IaaS、PaaS 有着本质的区别。SaaS 服务通常部署在云上,客户通过互联网来获取软件服务,服务供应商负责了服务所需要的一切硬件设备和软件环境,并承担了软件更新发布,维护升级等工作[2]。对于SaaS 服务的使用者来说,只需根据自身业务的实际需要,按需向服务供应商购买服务,便可以立即享受到最新的技术应用。随着互联网的蓬勃发展,SaaS 服务的种类与产品已逐渐丰富和多样化,有许多面向个人和面向企业的服务,比如:文档在线编辑、照片管理、客户端关系管理、企业资源管理等,还包含了一些针对特定应用场景和应用领域的服务,SaaS 服务模式是未来互联网软件发展的趋势。为了进一步丰富 SaaS 服务的多样化,促进 SaaS 服务生态圈的发展,许多SaaS 服务企业都推出了自己的开放平台。
2007 年 FaceBook 正式推出了开放平台,第三方开发者可以在这个开放平台框架上集成 FaceBook 对外开放的应用程序功能[3]。开放平台的出现,促进了互联网软件服务的多样化发展。开放平台就是把服务供应商自身的服务能力封装成一系列计算机能识别的数据接口对外开放,供第三方应用程序调用的一个公共平台[4]。实际上对外开放的,是提供服务的 API(Application Programming Interface)或者函数(Function)接口,也就是服务供应商提供的服务。在互联网信息爆炸式增长的今天,通过企业自身的力量来满足用户日益多元化的服务需求是很难做到的。开放平台的出现正好释放了企业的服务能力,通过引入外部优质应用,在吸引企业自身用户的同时,也促进了和第三方应用的合作,实现了互利共赢的良好局面。对于 SaaS 服务来说,由于 SaaS 服务多租户[5-6](Multi-tenancy)的特点,不同背景的租户对于 SaaS 服务的需求存在差异,使得 SaaS 服务供应商不得不扩展自身的应用服务,以提高用户黏合度。开放平台的特点正好契合了 SaaS 服务的这一需求,在扩展自身业务能力的同时也提高了用户黏合度,还能促进不同领域的 SaaS 服务走向合作[7-8]。SaaS 服务模式结合开放平台,适应了如今网络发展开放合作的趋势。
.............................
1.2 国内外研究现状
著名的 Salesforce 公司作为 SaaS 业务模式的创始者,是当今 SaaS 业务开展最成功的公司之一[12]。它通过开放 API,打造开放式的技术平台,系统性的将用户的实际业务需求整合进自身平台。在满足用户需求的同时,也为顾客和相关合作者提供了一个得以良性发展的生态系统,以此来带动企业自身的发展,并取得了成功。2015 年 8 月,阿里巴巴钉钉推出了基于商务工作关系和通讯的开放平台,与国外 SaaS 市场上的同类产品相似,在短时间内就取得了显著的成就。这一成就带动了国内 SaaS 服务生态圈的发展和变革,各大 SaaS 服务供应商纷纷推出了自己的开放平台。
1.2 国内外研究现状
著名的 Salesforce 公司作为 SaaS 业务模式的创始者,是当今 SaaS 业务开展最成功的公司之一[12]。它通过开放 API,打造开放式的技术平台,系统性的将用户的实际业务需求整合进自身平台。在满足用户需求的同时,也为顾客和相关合作者提供了一个得以良性发展的生态系统,以此来带动企业自身的发展,并取得了成功。2015 年 8 月,阿里巴巴钉钉推出了基于商务工作关系和通讯的开放平台,与国外 SaaS 市场上的同类产品相似,在短时间内就取得了显著的成就。这一成就带动了国内 SaaS 服务生态圈的发展和变革,各大 SaaS 服务供应商纷纷推出了自己的开放平台。
国外对于开放平台的研究和讨论起步较早,自从 FaceBook 在 2007 年 5 月举办的首届 F8 开发者大会开始,开放平台的概念正式进入大众的视野,随后迅速发展,逐渐形成了开放平台生态体系,并对当前整个互联网的产业格局产生了深远的影响[13]。FaceBook 的成功使得 Google,Twitter,Microsoft 等国外各大互联网巨头也相继推出了自己的开放平台,从而带动了互联网开放的热潮[14]。随着开放平台的发展,带来机遇的同时,所面临的安全问题也随之而来。由于第三方应用和开放平台之间通过 API 接口进行业务逻辑交互,在交互过程中出现信息泄露的风险也会更大。FaceBook 的开放平台因为系统漏洞,导致用户设置为隐私的链接不用认证也可以进行访问。谷歌的 OpenSocial API 开放平台首个应用程序也因为安全问题,上线 45 分钟后就被下架[15]。在实际的应用中,大多数企业为了保证第三方应用接入开放平台时更加方便和快捷,并没有对第三方请求进行严格的安全限制。据微软统计,自从 2009 年开放平台发展起来开始,木马病毒的主要传播途径就是开放平台中集成的第三方软件[16]。
国内开放平台的起步和发展相对国外都要晚,但是在国外开放平台热潮的带动下,国内开放平台也得到了高速的发展。人人网早在 2008 年推出了基于社交网络的开放平台发展战略,为国内开放平台的发展开创了先河,随后国内的互联网企业逐渐开始推出开放平台[17]。淘宝作为国内电子商务的代表,同年开始启动基于卖家、买家和用户数据的大淘宝发展战略,2010 年,淘宝正式走上了开放的道路。百度作为国内搜索服务的代表,发布了“框计算”概念,并在随后的几年时间里推出了百度地图,百度数据,百度移动等多维度的开放平台体系[18]。作为阿里巴巴旗下的子公司蚂蚁金服,通过蚂蚁金服开放平台,为中小型企业和第三方开发者提供了一系列完整的行业解决方案,仅半年时间便吸引了大量的中小企业商户入驻[19]。开放也为国内各大网站带来了安全隐患,淘宝开放平台曾因为安全问题,导致商品价格被营销软件修改为一块钱,许多卖家的商品都被以一块钱拍下[20]。新浪微博也曾因为安全漏洞,导致第三方程序可以轻易获得用户的相关隐私信息。据不完全统计,国内各大互联网企业开放平台都曾因为安全问题,而出现紧急修复升级的情况,导致这些安全性问题的原因,往往是因为第三方站点接入开放平台做资源引用而造成的。
.................................
2 相关理论知识和技术
2.1 访问控制理论研究
访问控制技术作为一种非常重要的信息安全技术,可以有效的防止用户对资源进行非法访问,保证系统资源得到合法有效的使用。访问控制的核心是安全控制策略,也叫权限策略,在统一的策略管理下,如果主体具有某一权限,并且符合权限的描述规则,那么主体就可以合法的访问客体。常见的访问控制模型主要有传统访问控制模型,基于角色的访问控制模型等。
2.1.1 传统访问控制模型

...........................
2 相关理论知识和技术
2.1 访问控制理论研究
访问控制技术作为一种非常重要的信息安全技术,可以有效的防止用户对资源进行非法访问,保证系统资源得到合法有效的使用。访问控制的核心是安全控制策略,也叫权限策略,在统一的策略管理下,如果主体具有某一权限,并且符合权限的描述规则,那么主体就可以合法的访问客体。常见的访问控制模型主要有传统访问控制模型,基于角色的访问控制模型等。
2.1.1 传统访问控制模型
传统的访问控制模型根据使用场景和对安全等级要求的不同,通常被分为自主访问控制模型(DAC,Discretionary Access Control)和强访问控制模型(MAC,Mandatory Access Control)两种类型[29]。
DAC 模型是一种比较基础的模型,由于它的结构比较简单,便于扩展,通常在许多软件系统中都提供了该模型。在 DAC 模型中,访问的主体对客体拥有很大的权限,主体可以直接决定是否有权限访问对应的客体,并且一个主体可以向另一个主体转让自己具有的权限,这种转让可以是直接转让,也可以是间接转让[30]。DAC 模型通常采用访问控制矩阵(ACM,Access Control Matrix)和访问控制列表(ACL,Access Control List)两种实现方式来表示主体对客体的操作规则[31]。访问控制矩阵中使用矩阵的行和列来对应访问主体与访问客体,二者交叉位置的内容代表主体对客体的操作规则[32]。而访问控制列表则由整个列表对应某个固定的客体,该表的内容就是主体对受控对象所具有操作权限。由于 ACL 表述直观,能更方便的理解和查询某个客体对应的所有权限主体,所以 ACL 是目前实现访问控制策略普遍采用的方式。关于 DAC 模型两种实现方式的详细介绍如下表 2-1所示:

...........................
2.2 认证与授权技术研究认证与授权是云计算中的两个基础概念,虽然两者经常一起出现,但是解决的问题却是有所区别的。认证主要解决“你是谁”的问题,计算机系统通常依靠与人绑定的某种凭证,来判断用户身份,最常见的认证就是登录系统时使用的账户和密码,通过账户和密码来验证用户身份。而授权主要解决的是“你能做什么”,在对进行用户身份验证完成后,根据一定的凭据和策略,赋予个体在一定范围内进行某些操作和行为的权利。在云计算环境中,通常将认证与授权技术配合使用,来保证系统的安全性。
2.2.1 OpenID 身份认证
OpenID 是一个以 URL 为身份标识的分散式身份验证框架,具有开放,分散等特点[44]。其核心思想是:用户预先在提供 OpenID 服务的应用上进行注册,得到该站点提供的账号,使用该账号,用户就可以登录所有支持 OpenID 的网站。由于在互联网中,使用 URL 就可以对网站进行身份认证标识,那么也可以让用户仅使用一个 URL,来作为其自身的身份认证标识,OpenID 正是基于这个原理而创建的[45]。URL 作为网络世界里的核心,为基于 URL 的身份认证提供了坚实的理论依据。OpenID 的去中心化主要体现在它不依赖于某个固定的网站来进行数字身份认证,任何网站既可以成为服务的提供者,也可以是服务的使用者。OpenID 的身份认证框架流程如下图 2-3 所示:

...........................
OpenID 是一个以 URL 为身份标识的分散式身份验证框架,具有开放,分散等特点[44]。其核心思想是:用户预先在提供 OpenID 服务的应用上进行注册,得到该站点提供的账号,使用该账号,用户就可以登录所有支持 OpenID 的网站。由于在互联网中,使用 URL 就可以对网站进行身份认证标识,那么也可以让用户仅使用一个 URL,来作为其自身的身份认证标识,OpenID 正是基于这个原理而创建的[45]。URL 作为网络世界里的核心,为基于 URL 的身份认证提供了坚实的理论依据。OpenID 的去中心化主要体现在它不依赖于某个固定的网站来进行数字身份认证,任何网站既可以成为服务的提供者,也可以是服务的使用者。OpenID 的身份认证框架流程如下图 2-3 所示:

...........................
3.1 访问控制与授权机制设计...........................................18
3.1.1 基于租户的访问控制模型........................................ 18
3.1.2 改进的 Oauth2.0 客户端授权................................19
4 开放平台安全机制的实践.................................................29
4.1 开放平台总体设计.........................................29
4.1.1 平台架构设计.................................... 29
4.1.2 平台功能设计....................................... 30
5 实践测试与分析................................46
5.1 测试环境...........................................46
5.2 测试内容..................................47
5 实践测试与分析
5.1结果分析
本节对第四章中实现的开放平台相关安全机制,进行了相应的测试。从访问控制,授权认证,服务限流与熔断,平台监控几个方面分别对开放平台的安全机制进行了测试,并对测试结果进行分析。
(1)不同租户下的角色集互相隔离,使得开放平台每一个用户对于资源的访问控制达到了 API 级别的控制,各个租户下的用户对各自的访问权限互不依赖,实现了开放平台的访问控制。
(2)改进后的 Oauth2.0 客户端授权流程中,对客户端隐私数据以及访问令牌进行加密传输,使得攻击者窃取到的信息无法破解,同时令牌发放和申请资源过程中传递的令牌加密值不一致,提高了攻击者窃取令牌换资源的难度,增加了开放平台安全性。
(3)限流实现了对高并发请求下的流量控制,熔断则实现了服务不可用时对开放平台进行熔断保护,防止雪崩,通过限流和熔断机制保障了开放平台稳定性。
(4)通过三个方面的监控实现,达到了对开放平台 API 调用和系统资源使用情况的监控,以便开发人员和运维人员及时排查和处理问题。
..........................
总结与展望
本课题主要针 SaaS 服务模式的开放平台的安全机制进行了研究,根据开放平台存在的安全性问题提出了一些改进设计,并在一个提供电子签名的 SaaS 服务上做了实践与测试。本文首先对本课题研究背景研究意义作了介绍,紧接着介绍了开放平台在国内外的研究现状,在此基础上进行了开放平台相关安全机制的改进与设计,并介绍了相应的关键技术。本文的研究内容主要包含了以下几个方面:
(1)对于 SaaS 服务模式的开放平台访问控制进行研究,根据 SaaS 服务的特点,采用了基于租户的访问控制模型,来实现开放平台的访问控制。
(2)针对 Oauth2.0 授权协议中的客户端授权模式,进行了改进,通过 HMAC摘要和 AES 加密来传输隐私信息,避免了密钥暴露和令牌被窃取的风险。
(3)设计了基于 Redis 和 Lua 脚本的令牌桶限流算法,实现了多进程之间协同控制,以达到在高并发情况下对开放平台流量限制的目的。
(4)采用了基于 Hystrix 的服务熔断保护机制,防止在开发者调用过程中出现级联调用失败,而导致开放平台崩溃,丧失服务能力。
(5)根据开放平台的实际需求,实现了针对开发者的调用记录统计和展示,针对系统管理员实现了 API 调用统计以及调用趋势展示,针对开放平台系统资源使用情况,基于 Zabbix 搭建了平台状态监控系统。
(2)针对 Oauth2.0 授权协议中的客户端授权模式,进行了改进,通过 HMAC摘要和 AES 加密来传输隐私信息,避免了密钥暴露和令牌被窃取的风险。
(3)设计了基于 Redis 和 Lua 脚本的令牌桶限流算法,实现了多进程之间协同控制,以达到在高并发情况下对开放平台流量限制的目的。
(4)采用了基于 Hystrix 的服务熔断保护机制,防止在开发者调用过程中出现级联调用失败,而导致开放平台崩溃,丧失服务能力。
(5)根据开放平台的实际需求,实现了针对开发者的调用记录统计和展示,针对系统管理员实现了 API 调用统计以及调用趋势展示,针对开放平台系统资源使用情况,基于 Zabbix 搭建了平台状态监控系统。
参考文献(略)