吴玉宁,王欢,2,苏伟,2,严晔,秦雪
(1.长春理工大学 计算机科学技术学院,长春 130022;2.长春理工大学 信息化中心,长春 130022)
OpenStack身份认证安全性分析与改进
吴玉宁1,王欢1,2,苏伟1,2,严晔1,秦雪1
(1.长春理工大学计算机科学技术学院,长春130022;2.长春理工大学信息化中心,长春130022)
OpenStack是一个开源的云平台管理项目,旨在提供可靠的云部署方案和良好的可扩展性,但在重复失败登录、密码强度、密钥和数字证书管理等方面存在安全性问题。本文采用USB Key存储用户的密钥及数字证书,保证了双因子认证。采用基于角色的访问控制进行业务鉴权,同时设置反向认证令牌,实现用户和业务系统间的双向认证。利用PKI在Keystone进行密钥和数字证书颁发以及对数字证书的验证,增强认证的安全性。实现了OpenStack身份认证安全性的改进。方案已在校园网云存储平台上应用,为OpenStack安全性改进提供了参考。
云计算;OpenStack;身份认证;安全性
OpenStack是由Rackspace和美国国家航空航天局合作研制的云计算管理软件[1],并以Apache许可证授权,是一个开放源代码项目,提供可靠的云部署方案,从而实现类似于亚马逊云基础架构服务。到目前为止,OpenStack已经发行了11个版本,其系统功能也在逐渐完善。从Essex版本开始,Keystone开始为OpenStack提供统一的身份认证服务,其带来的安全性问题也随之被人们关注。OpenStack安全组织(OSSG)在每次发布的安全指南中,都会提出新的安全问题,但是研究人员并没有给出明确的解决措施。
OpenStack是目前最火的开源IaaS方案,其本身的设计架构赋予了其高度的可扩展性[2]。由于其功能丰富,OpenStack中所包含的组件与其他开源平台相比是相对较多的,各个组件都通过PasteDeploy来定制WSGI服务。每个组件可以单独部署,对外提供服务,也可以在一起协同完成某项工作。OpenStack的6个核心组件如图1所示。
图1 OpenStack核心组件关系图
界面(Horizon):为管理员和普通用户提供一套访问和自动化管理OpenStack各种资源的图形化界面;
计算管理(Nova):是计算组织控制器,基于用户需求为虚拟机(VM)提供资源管理,它由多个子服务构成,这些子服务通过RPC实现通信,各服务之间具有很松的耦合性;
网络管理(Neutron):通过对物理网络资源的划分与管理,为每个租户提供独立的虚拟网络环境;
镜像管理(Glance):用来存放管理虚拟机镜像和快照的服务,Glance支持两种镜像存储机制,简单文件系统和Swift服务存储镜像机制;
对象存储(Swift):提供了高可用、持久性、大文件的对象存储,适合存放静态数据;
身份认证(Keystone):为OpenStack的用户提供身份认证、令牌管理和权限管理,以及基于用户角色的访问控制。
由图1可以看出,OpenStack的各个组件之间都是交互的,Keystone是OpenStack架构中的重要组成部件,组件之间的通信都需要通过Keystone的认证来获得目标服务。用户访问系统的用户名是否正确,令牌的颁发,服务端点的注册,以及该用户是否具有访问特定资源的权限等。这些都离不开Keystone的参与。与OpenStack中其他项目一样,Keystone表示一个抽象层[3],会提供插件接口,开发者可以利用其当前的身份验证服务,也可以选择其他的身份认证系统。由此可见Keystone的安全性将会影响到整个系统的安全性。
Keystone对全部租户和用户进行注册,对用户进行身份验证并授予其身份验证令牌,管理服务端点目录,创建横跨所有用户和服务的策略。Keystone的认证是双向的。首先OpenStack必须认证用户的身份是合法的,同时有足够的权限执行相应的操作;其次用户需要确定OpenStack的其他组件是可信的。在Keystone中,有两种生成令牌(Token)的方式:UUID和PKI。
2.1UUID方式
UUID方式认证流程如图2所示。
图2 UUID方式认证流程
用户使用用户名及密码在Keystone通过认证后,Keystone就返回一个Token给用户,这个Token就是一个UUID。以后用户进行服务请求时,需携带此Token。服务模块收到请求时,会使用这个Token向Keystone进行验证。Keystone通过比对Token的合法性,将结果反馈给服务模块。
2.2PKI方式
Keystone利用PKI对令牌相关数据进行签名,从而每一个服务端点会保存一份签名公钥证书、CA公钥证书以及证书吊销列表,其认证流程如图3所示。
首先Keystone初始化时,Keystone生成CA的公钥CA.pem和私钥CA.key。同时,产生Keystone自己的公钥keystone.pub和私钥keystone.key,然后对keystone.pub进行CA的签名,生成keystone. pem。当用户使用有效用户名及密码在Keystone通过认证后,Keystone就使用keystone.key对用户的基本信息进行加密,并将密文作为Token返回给用户。用户向服务模块发出服务请求时,服务模块首先要拿到Keystone的证书keystone.pem,然后使用keystone.pub对其解密,获取用户的信息,进而判断该用户的合法性。此外还需要对用户Token的合法时间,以及Token是否存在进行判断。
图3 PKI方式认证流程
2.3两种认证方式的比较
UUID格式比较简单,就是随机地生成一串UUID作为Token的ID,而PKI格式是通过OpenSSL首先对Token的内容进行签名,然后将签名的结果作为Token的ID;UUID方式中每个请求都带着一个Token,Token不管到哪个服务,该服务都会先去验证Token的合法性,然后再去执行用户请求的操作,所以每个请求都会经过Keystone,在大量业务场景下,会造成Keystone负载很重。PKI中没有服务模块再去Keystone发请求进行验证的过程,因此PKI方式能减轻Keystone的压力。
Keystone并没有提供方法在重复失败登录时限制账户访问[4],重复失败登录可能存在暴力破解攻击行为。通过经常审查日志,可以确定未经授权擅自访问的账户;用户名/密码是最常见的认证方式,Keystone没有对用户密码提出明确的要求,如密码的长度和字符的选定。利用外部的身份认证系统能使弱密码的风险最小化;OpenStack的客户端和服务器之间的通信是通过RESTful API来实现的。各个组件或者在命令行执行Keystone命令时,都要通过Keystone Client来向Keystone服务器发送HTTP请求,在这个过程中,用户名密码以及通信协议可能受到攻击。
3.1基于USB Key的身份认证
USB Key技术是一种双因子认证技术,能够保证身份认证的安全可靠。用户只有同时拥有USB Key及PIN码才能登录系统。USB Key会由OpenStack用户本人保管,即便USB Key丢失了,只要PIN码没被攻击者窃取,用户的身份就不会被仿冒;如果PIN码被攻击者窃取了,没有USB Key硬件,攻击者也无法代替合法用户完成身份认证。将USB Key技术应用到Keystone中,能避免用户使用弱密码带来的风险。
另外USB Key具有一定的数据存储空间,用户可以存储密钥及数字证书[5],用户的密钥一旦写入不可读出,USB Key的数据处理机制使得它成为密钥和数字证书的安全载体。
改进方案基于USB Key技术,并结合PKI技术能有效保证OpenStack用户身份和数据传输中安全性。PKI需要在Keystone中单独实施,作为证书颁发机构,并且通过对数字证书进行加密运算,保证了数字证书传输的保密性。用户使用USB Key存储PKI颁发的密钥和数字证书,只有持有USB Key的用户才能对数字证书进行操作,这就杜绝了证书被非法复制的可能性,用户的密钥不会在网络中传播,所有有关密钥的运算都将在USB Key中实现,增强了OpenStack用户身份认证的安全性。方案如图4所示。
图4 Keystone改进方案
方案中需要设置客户代理,负责用户与Keystone之间完成双向认证。用户访问业务服务器的访问Token需要客户代理生成,业务服务器发送给用户的授权Token也需要客户代理负责接收。客户代理还用于维护用户与Keystone以及用户与业务服务器之间的共享密钥。Keystone和业务服务器之间设置业务代理,负责二者之间的密钥协商工作,并维护共享密钥,对用户的访问Token进行鉴权,并返回反向认证Token给用户。
3.2业务鉴权
业务鉴权的主要工作包括业务系统对Open-Stack用户的角色信息进行鉴别,以及用户对业务系统的合法性进行反向认证。用户向客户代理申请并获得访问业务系统的访问Token。用户将访问Token发送到业务系统,业务系统会将访问Token和业务系统标识一起发送给业务代理。业务代理验证访问Token和业务系统标识,并为业务系统生成反向认证Token;业务系统将反向认证Token反馈给用户。用户发送反向认证Token到客户代理,客户代理根据反向认证Token里包含的用户标识和业务系统标识判断业务系统的合法性并将结果返回给用户。完成以上操作后,OpenStack用户再发送业务访问请求时,业务系统通过读取请求中授权Token包含的用户角色信息,对用户采取基于角色的访问控制[6]。
3.3证书颁发机构
在方案中PKI作为证书颁发机构,需要单独在Keystone中实施。负责为OpenStack用户颁发和管理用户公私钥及数字证书;向Keystone提供证书下载以及证书吊销列表下载;实现业务系统对数字证书的在线验证功能。
3.4工作流程
方案工作流程如下:
(1)首先由证书颁发机构分别为Keystone、用户和业务系统颁发密钥和数字证书。用户使用USB Key存储私钥和数字证书;
(2)Keystone开始提供认证服务之前,需要通过PKI的服务接口,对全部用户的证书进行下载。由于证书中包含用户的信息,从而实现了Keystone对用户统一管理;
(3)业务服务器启动之前,需要与Keystone完成一次双向认证,以及协商共享密钥;
(4)业务系统向Keystone提交自己拥有的角色类型信息以及身份标识,从而为用户分配角色;
(5)用户在发送访问请求前,先完成与Keystone的双向认证,即使用USB Key,并输入已知的PIN码。认证通过之后,用户获得与业务服务器,以及与Keystone之间的共享密钥,在这个过程中,业务系统的授权Token也会发送给用户;
(6)客户代理为用户生成访问Token,用户向业务服务器发送访问请求时,先提交此Token。业务服务器使用共享密钥对Token合法性进行验证,验证通过后,用户会得到一个反正认证Token,从而用户和业务系统之间实现了双向认证;
(7)完成与业务系统的双向认证后,用户对业务系统进行下一步访问,业务系统通过Token中用户角色信息,实施基于角色的访问控制。
3.5改进方案安全性分析
(1)防范身份假冒攻击。数字证书作为用户唯一标识,PKI提供了验证这些证书的服务接口,攻击者可以通过接口下载到任意用户的证书。但是攻击者需要得到私钥以向系统证明拥有的证书的合法性,由于私钥存储在USB Key中,攻击者无法假冒身份完成与Keystone之间的认证。
(2)防范非法授权。方案中对授权Token进行了加密运算,加密密钥只有Keystone和业务代理持有。为了抵御攻击者对Keystone的攻击,方案采用的是双向认证机制,不仅Keystone要验证请求者的身份,请求者也可以对Keystone的合法性进行验证。
(3)防范DoS攻击。用户向Keystone发送登录和授权请求时,需同时持有USB Key和PIN码。否则Keystone可以拒绝此次请求,有效抵御了DoS攻击。
为了方便信息化中心的日产管理,在学校校园网应用了此方案。方案部署环境使用了4台服务器,Server1负责Keystone身份认证服务,Server2为PKI证书颁发机构,Server3和Server4为业务服务器,操作系统均为Ubuntu 14.04 LTS。各服务器配置信息如表1所示。
表1 服务器配置信息
实验云平台应用于信息化中心日常管理中,用户使用云平台前需从PKI下载个人数字证书及私钥,并存储至USB Key中。用户在终端持有USB Key并输入正确的PIN码,通过云平台验证后,用户可以向云平台上传自定义镜像文件;创建并访问云主机,向云主机添加云硬盘;用户也可以创建快照,捕捉硬盘在某一时刻的状态,未来可以随时恢复到这个状态。通过实践证明,改进方案在实验云平台实施,满足了用户对云存储平台的安全需求和使用需求。
本文重点对Keystone的身份认证机制进行了研究,分析了Keystone的安全性在整个系统中的重要性。设计了一套基于USB Key和PKI技术的改进方案,实现了对用户的双因子认证,保证了用户密钥和数字证书的保密性,采用基于角色的访问控制进行业务鉴权,设置反向令牌,用户和业务系统间也能实现双向认证,OpenStack身份认证安全性得到了改进。改进方案已在校园网云存储平台上应用,下一步研究工作主要是将更多的身份认证技术引入到Keystone中,得到最佳的解决方案。
[1] 王霄飞.基于OpenStack构建私有云计算平台[D].广州:华南理工大学,2012.
[2] 姜毅,王伟军,曹丽,等.基于开源软件的私有云计算平台构建[J].电信科学,2013(01):68-75.
[3]John Rhoton.发现OpenStack:Identity组件Keystone [EB/OL].http://www.ibm.com/developerworks/cn/ cloud/library/cl-openstack-keystone/.2014.
[4]John David Cooper.Analysis of security in cloud platforms using OpenStack as case study[D].Agder:TheUniversityofAgderFacultyofEngineering and Science,2013.
[5] 罗斌,裘正定.网络身份认证新技术[J].计算机安全,2005(10):29-31.
[6] 从立钢,郭利菊.云存储系统安全技术研究[J].长春理工大学学报:自然科学版,2014,37(03):132-134.
Security Analysis and Improvement of OpenStack Identity Authentication
WU Yuning1,WANG Huan1,2,SU Wei1,2,YAN Ye1,QIN Xue1
(1.School of Computer Science and Technology,Changchun University of Science and Technology,Changchun 130022;2.Information of Center,Changchun University of Science and Technology,Changchun 130022)
OpenStack is an open source cloud platform management program,designed to provide reliable cloud deployment and good scalability,but there are some security problems about repeat failed login,password strength,key and digital certificate management and so on.The paper uses the USB Key to store the user's key and digital certificate,which can guarantee the double factor authentication.The business authentication is based on the role of access control,while the reverse authentication token is set up to realize two-way authentication between users and business systems. Use the PKI in the Keystone to be responsible for the key and certificates and verification of digital certificates,which enhances the security of authentication.The improvement of the security of OpenStack identity authentication is realized. Finally,the security of the improved scheme is analyzed.The scheme has been applied to the campus network cloud storage platform,and it provides a reference for the improvement of OpenStack security.
cloud computing;OpenStack;identity authentication;safety
TP399
A
1672-9870(2015)05-0112-04
2015-06-24
吴玉宁(1989-),男,硕士研究生,E-mail:wuyuning0513@126.com
王欢(1987-),男,硕士,助理工程师,E-mail:wanghuan@cust.edu.cn