池亚平,王慧丽,元智博,张 健,李 欣,2
(1.北京电子科技学院通信工程系,北京100070;2.西安电子科技大学通信工程学院,西安710071)
OpenStack 身份认证机制研究与改进
池亚平1,王慧丽1,元智博1,张 健1,李 欣1,2
(1.北京电子科技学院通信工程系,北京100070;2.西安电子科技大学通信工程学院,西安710071)
针对OpenStack认证机制缺乏细粒度鉴权、数据库利用率和数据安全性不足的问题,在分析OpenStack平台架构、虚拟机生成实例流程,以及安全组件Keystone与其他服务组件间的交互流程的基础上,提出一个OpenStack身份认证改进方案。该方案将LDAP(Lightweight Directory Access Protocol)、RBAC(Role-Based Access Control)以及SSL/TLS(Secure Sockets Layer/Transport Layer Security)安全协议集成到Keystone安全服务组件中,加强了OpenStack对于用户和虚拟资源的身份管理的可扩展性和安全性。
OpenStack平台;Keystone服务;基于角色访问控制;轻量级目录访问协议;认证机制
OpenStack[1]是亚马逊Web服务[2](AWS:Amazon Web Services)的开源实现,一直以来,以其完全开源性引起国内业界关注,OpenStack社区已经成为开源社区活跃度最高的社区,目前OpenStack发展很快,现在已经发展到K版本,系统功能得到极大增强,并在访问控制方面有了很大扩充。OpenStack采用分布式架构,整个平台按照功能不同分为多个模块项目,项目之间通过消息队列中间件和Restful形式的应用程序编程接口(API:Application Programming Interface)进行交互通信。
随着OpenStack版本的不断更新,其安全性也得到很多前人的探索。国外对该平台研究重点在于易用性,包括资源调度、容错强度等方面,而非安全性。国内对于OpenStack的安全增强研究,主要有以下几方面:1)通过虚拟机实例监控和管理,如使用VPN(Virtual Private Network)技术保护虚拟机安全[3],以及通过获取监控的虚拟机的性能信息,实现云平台下的虚拟机监控方案[4];2)运用虚拟化技术强化虚拟网络管理和维护,实现虚拟资源隔离[5,6];3)利用传统信息安全技术强化平台安全性,如在Keystone安全组件中集成公钥基础设施(PKI:Public Key Infrastructure)技术[7]。此外,也出现了面向云存储安全的存储组件与安全组件集成的安全方案,利用IP地址获取访问令牌,利用该令牌实现用户的身份认证[8]。但针对OpenStack平台身份认证安全增强方案尚未见文献报道。
OpenStack在Essex版本之后开始全面支持Keystone,对于开发加强访问控制有天然的优势。但仍然存在安全漏洞和脆弱性。笔者以Keystone服务组件着手研究,深入分析OpenStack授权及鉴权安全机制。
云计算要求对大量的未知用户以及虚拟资源进行管理,不仅需要用户在访问云系统前进行授权,还需要在访问云系统的过程中根据实际安全需求进行权限的优化。笔者分析OpenStack身份认证和授权机制,以此基础设计云客户端的安全接入与虚拟实例的安全应用方案,完善OpenStack私有云平台的易用性和安全性。
1.1 OpenStack创建虚拟机流程分析
OpenStack由7个组件组成(见图1)。Horizon是基于OpenStack API(Application Program Interface)接口的网页实现,Nova提供虚拟主机服务,Swift提供对象存储服务,Glance提供镜像管理服务,Neutron提供虚拟机网络管理服务,Cinder提供块存储管理服务,Keystone提供认证管理服务,是OpenStack的认证组件,每个环节均通过Keystone安全认证其合法性。各组件间创建虚拟机流程如图1所示。
图1 Chart创建虚拟机流程Fig.1 Flow chart of creating virtualmachine
具体过程:1)Horizon通过Keystone获取Compute组件的统一资源定位符(URL:Uniform Resource Locator),并获取授权令牌(Token);2)携带授权令牌,发送创建虚拟机指令;3)nova-compute组件通过glance-api下载虚拟机镜像,Glance镜像中有缓存机制,以支持镜像从缓存复制到本地镜像目录,缓存机制可开启或关闭;4)Glance检索Swift存储的镜像;5)获取网络信息,决定虚拟机网络模式及建立网络连接;6)nova-compute发送启动虚拟机指令;7)虚拟机创建完成。
Keystone是OpenStack用来进行身份验证及高级授权的身份识别服务组件,Keystone提供OpenStack其他项目使用的身份识别、令牌、目录及策略服务。Keystone有两个主要功能:1)用户管理,即追踪用户及其权限;2)服务管理,提供可用服务API终端目录。
2.1 Keystone安全组件与其他服务组件的交互流程分析
调用OpenStack其他服务步骤如图2所示。1)客户端调用OpenStack服务将产生验证令牌,如图2中①和②所示;2)Keystone寻找并验证令牌,并从中获取相应的附加信息,如图2中③~⑤所示;3)其他组件与Keystone组件的交互以验证客户端信息如图2中所示。
图2 创建虚拟机流程中其他组件与Keystone交互认证流程图Fig.2 Flow of other services interactive authentication with keystone in the creating virtualmachine progress
2.2 Keystone令牌验证机制分析
图3 基于UUID的验证Token过程Fig.3 Process of verifying tokens based on UUID
Keystone在OpenStack的项目中提供了公共、统一的身份验证协议,使用基于令牌认证机制实现认证和授权。OpenStack的Keystone组件使用两种Token完成认证机制。G版以前使用通用唯一识别码(UUID:Universally Unique Identifier)Token完成验证过程,基于UUID的验证过程如图3所示,其中Token是一个序列号。
由图3可看出,客户端用户发送用户名和密码,Keystone验证通过后返回UUID作为验证令牌。用户获取云服务时,携带UUID令牌进行访问(图3中发送调用指令),Keystone根据令牌验证结果确定是否允许客户端访问(图3中请求执行/请求驳回)。
3.1 OpenStack认证机制安全性分析
经过以上分析,笔者认为OpenStack云平台具有如下几点安全问题。
1)OpenStack验证机制是基于用户名、密码以及明文传输,所有通信通过HTTP协议执行,没有较强安全机制的保护,容易受到这3方面的攻击,无法保证云环境下的数据安全。
2)OpenStack本身的身份认证机制对用户和虚拟资源达到细粒度的授权和鉴权。在Keystone安全组件的对象结构中,用户与角色、租户连接在一起,角色与群组连接在一起,所以不能对用户和虚拟资源达到细粒度的授权和鉴权,也不支持动态实时身份变化。
3)OpenStack本身的身份认证机制基于频繁的调用Keystone安全组件服务,在调用各个组件服务的过程中,可通过颁发的Token,避免重复调用Keystone API以及传回Token的冗余过程,提高效率。
4)数据库利用资源低,读取速度慢,数据库读取不安全。通过前面分析可知,在创建云桌面和云存储的过程中会频繁调用OpenStack的各个组件及其包含的模块,每个组件及模块被调用时都将调用Keystone API,在这个过程中,会大量且频繁地访问后端数据库。而OpenStack默认数据库为MySql数据库,而Mysql数据库是个关系型数据库,访问速度会随着访问量的增加而变慢。此外,外部进入数据库读取敏感信息,安全性得不到保障。
鉴于以上研究,笔者探索在云平台的可用性和易用性上,将细粒度身份认证和鉴权的身份认证机制融合到平台中,克服了数据库利用资源低、读取速度慢的缺陷及系统数据易被窃取的不足。
4.1 总体架构设计
鉴于OpenStack云平台认证机制存在的安全缺陷,笔者给出一种结合轻量级目录访问协议(LDAP: Lightweight Directory Access Protocol)及安全协议,强化基于角色访问控制(RBAC:Role-Based Access Control)机制的OpenStack身份认证机制改进方案,方案架构如图4所示。
图4 身份认证机制改进方案图Fig.4 Chart of identity authentication mechanism improvement project
4.2 Keystone交互认证流程改进方案
总体架构中第3部分身份管理平台由用户管理模块、授权管理模块、监控和审计模块、以及认证服务模块4个安全模块和1个LDAP数据库组成,并通过API将其与Keystone集成。同时采用TLS/SSL代替HTTP明文传输协议,保障系统的安全性。其他组件与Keystone组件的交互流程中认证过程如图5所示。
图5 改进的Keystone组件交互认证过程Fig.5 Improved interactive authenticating process between services and authenticating
4.3 引入基于PKIToken的认证机制
对比OpenStack云平台UUID Token验证机制(见图3),笔者引入了新方法验证Token,使用公钥基础实施(PKI:Public Key Infrastructure)Token。其认证机制过程如图6所示。
图6 基于PKIToken的认证机制Fig.6 Process of verifying tokens based on PKI
客户端发送用户和密码,Keystone验证后到身份认证平台验证API端点(图6中验证用户名、密码、租户)。API与Keystone组件互通,共享签名证书、撤销列表和CA数字签名。身份认证平台认证用户信息(图6中返回用户元数据、数字密钥和数字证书),Keystone根据令牌验证结果确定是否允许客户端访问(图6中请求执行/请求驳回)。在创建虚拟机的过程中,每调用一个服务都要通过Keytone认证,系统负担过重,在改进Token机制中,API端点可绕过Keystone直接验证用户的请求。此外,PKIToken以文件的形式出现,使用公私密钥对实现签名和认证。
4.4 集成LDAP目录服务
LDAP是一种组织和管理信息的机制,可用来描述用户和资源属性,采用LDAP针对用户和资源提供集中式的身份认证和授权。LDAP的授权功能主要采用访问控制列表,LDAP的身份认证主要有4种方式:匿名验证、基础验证、简单身份验证和安全层(SASL:Simple Authentication and Security Layer)验证、Kerberos验证。
该方案将LDAP的开源项目OpenLDAP作为存储Keystone组件中用户、租户、角色以及其他属性信息的数据库,并采用Kerberos验证作为其主要认证方式。
LDAP的优势体现在3点:1)易于获得数目不断增加的LDAP的客户端程序以访问LDAP目录;2)更加易于定制安全策略;3)使用认证服务支持安全传输层协议TLS(Transport Layer Security)加密LDAP传输,加强保密性和数据完整性。
KeyStone集成LDAP过程为:1)搭建OpenLDAP服务器并修改配置文件,设置具有管理员权限的账号;2)创建OpenLDAP对象,并为对象设置登录密码;3)更改keystone配置文件中后端,由默认的Mysql更改为LDAP;4)更改keystone配置文件中LDAP组织结构;5)添加OpenStack租户,在租户下创建用户,并将用户绑定到特定角色中。
4.5 强化RBAC机制的细粒度访问控制
RBAC是基于角色的访问控制,用户的权限通过角色赋予。在OpenStack认证改进方案中,通过定义策略规则实现访问控制以支持对API的保护。策略文件包含某些域中的某些角色对于某些服务的某些行为的权限。
4.6 集成HTTPs和TLS安全协议
HTTP的连接很简单,是无状态的,Https是HTTP的安全版本,是以安全为目标的HTTP。TLS被称为是SSL的继任者。
该方案在用户登录云桌面时使用HTTPS协议,并使用PKIToken,而非UUID Token,强化系统登录安全性能。LDAP数据传输使用TLS协议,防止数据传输过程中的数据篡改。使用TLS保证LDAP服务器与各个认证、管理和审计等组件间数据正确并完整传输。
5.1 系统部署方案
为测试设计方案的可行性,首先搭建OpenStack私有云平台(双节点),并在云平台上部署了身份管理平台。云环境集群部署方案如图7所示。
图7 云环境集群部署方案Fig.7 Cluster deployment project in cloud environment
5.2 方案功能测试
部署OpenStack云平台,将身份管理平台与其整合,完成自动管理方案,进行测试。
1)与Keystone集成的LDAP的目录结构需要按照Keystone映射的组织结构设置。在LDAP服务器中,管理员添加租户、用户,设置密码、角色及权限。图8为添加用户admin和ad。
图8 LDAP服务器中添加用户Fig.8 Add users upon LDAP server
图9 用户启动的虚拟云桌面Fig.9 The virtual cloud desktop that the user lauched
2)用户在客户端使用用户名 ad和密码进行登录。
3)用户启动Windows7系统虚拟云桌面如图9所示。
4)查看用户ad的Token,如图10所示,是一个文件,而不是序列号格式的UUID Token。
5)用户使用其他未在LDAP服务器中设置的用户名登陆以访问未授权虚拟资源时,平台显示错误,如图11所示。
图10 用户令牌Fig.10 The user’s token
图11 平台显示错误Fig.11 The platform displayed errormessage
本方案探索云计算新技术与密码技术的结合,尝试通过OpenStack云平台与各安全模块的整合,改变OpenStack原有的认证方式。体现在3点:1)引入PKI认证机制,增强使用令牌的安全性和扩展性; 2)集成LDAP目录服务,设计符合实际管理需求的组织关系,并利用其快速的查询和读取功能,提高数据库可用性;3)在LDAP上添加会话加密和目录服务器复制等功能,并与Kerberos联合提供安全性能。
[1]OpenStack Installation Guide for Ubuntu 12.04/14.04(LTS)[DB/OL].[2015-06-01].http://docs.openstack.org/ icehouse/install-guide/install/apt/content/.
[2]Amazon web services.An Introduction to High Performance Computing on AWS[DB/OL].[2015-08-01].https://d0. awsstatic.com/whitepapers/Intro_to_HPC_on_AWS.pdf.
[3]马友礼,陈世平.OpenStack云虚拟机安全策略研究[J].信息技术,2014(1):35-38. MA Youli,CHEN Shiping.Research of OpenStack Cloud VirtalMachine Security Strategy[J].Information Technology,2014 (1):35-38.
[4]刘飞宇.OpenStack云平台下的虚拟机监控与控制的研究与实现[D].成都:电子科技大学计算机应用技术学院,2013. LIU Feiyu.Research and Achieving Monitoring and Controlling Virtual Machine upon OpenStack Cloud Platform[D]. Chengdu:College of Computer Applications Technology,University of Electronic Science and Technology,2013.
[5]常立伟.Quantum中多租户隔离与网络服务扩展研究[D].成都:电子科技大学电子与通信工程学院,2013. CHANG Liwei.Research of Multitenant Isolation and Network Services Expansion in Quantum[D].Chengdu:College of Electronics and Communication Engineering,University of Electronic Science and Technology,2013.
[6]郭志斌,李璐颖,王志军.Openstack Trove与沃云数据库即服务对比[J].信息通信技术,2014(6):33-37. GUO Zhibin,LI Luying,WANG Zhijun.The Compare between Openstack Trove and Wo Cloud Database as a Service[J]. Information and Communication Technology,2014(6):33-37.
[7]熊微,房秉毅,张云勇,等.OpenStack认证安全问题研究[J].邮电设计技术,2014(7):21-25. XIONGWei,FANG Bingyi,ZHANG Yunyong,et al.The Research of OpenStack's Identitiy Security Flaw[J].Posts and Design Technology,2014(7):21-25.
[8]陈慧,李陶深,岑霄.OpenStack核心存储件Swift与Keystone集群的整合方法[C]∥广西计算机学会学术年会.中国,广西,北海:中国学术期刊电子杂志出版社,2014. CHEN Hui,LITaoshen,CEN Xiao.The Connection of OpenStack Core Storage Service Swiftwith Keystone Clusters[C]∥Guangxi Computer Society Academic Conference.Beihai,Guangxi,China:China Academic Journal Electronic Publishing House,2014.
(责任编辑:刘俏亮)
Research and Improvement of OpenStack's Authorization Mechanism
CHIYaping1,WANG Huili1,YUAN Zhibo1,ZHANG Jian1,LIXin1,2
(1.College of Communication Engineering,Beijing Institute of Electronic Technology,Beijing 100070,China; 2.College of Communication Engineering,Xi'an University of Electronic Science and Technology,Xi'an 710071,China)
Based on the analysis of the interactive process between the OpenStack's platform structure,generating process,securitymechanism and other service components,an improved ID authentication project is proposed to solve the deficiency of fine-grained authentication,low-usage of database and security flaw of data. This project integrates the LDAP(Lightweight Directory Access Protocol),RBAC(Role-Based Access Control),and SSL/TLS(Secure Sockets Layer/Transport Layer Security)into Keystone service,which strengthens the performance of Opentack's cloud platform in the aspect of the extension and security of ID management.
OpenStack;Keystone service;role-based access control(RBAC);lightweight directory access protocol(LDAP);authentication mechanism
TP39
A
1671-5896(2015)06-0700-07
2015-04-24
中央高校基本科研业务费专项基金资助项目(YZDJ1202);中央高校基本科研业务费基金资助项目(328201537)
池亚平(1969— ),女,河北沙河人,北京电子科技学院教授,主要从事网络安全研究,(Tel)86-13651012769(E-mail) chiyp_besti@163.com;通讯作者:王慧丽(1991— ),女,吉林公主岭人,北京电子科技学院硕士研究生,主要从事网络安全研究,(Tel)86-13146174290(E-mail)1018952306@qq.com。