吳玉寧,王歡,2,蘇偉,2,嚴曄,秦雪
(1.長春理工大學 計算機科學技術學院,長春 130022;2.長春理工大學 信息化中心,長春 130022)
OpenStack身份認證安全性分析與改進
吳玉寧1,王歡1,2,蘇偉1,2,嚴曄1,秦雪1
(1.長春理工大學計算機科學技術學院,長春130022;2.長春理工大學信息化中心,長春130022)
OpenStack是一個開源的云平臺管理項目,旨在提供可靠的云部署方案和良好的可擴展性,但在重復失敗登錄、密碼強度、密鑰和數(shù)字證書管理等方面存在安全性問題。本文采用USB Key存儲用戶的密鑰及數(shù)字證書,保證了雙因子認證。采用基于角色的訪問控制進行業(yè)務鑒權,同時設置反向認證令牌,實現(xiàn)用戶和業(yè)務系統(tǒng)間的雙向認證。利用PKI在Keystone進行密鑰和數(shù)字證書頒發(fā)以及對數(shù)字證書的驗證,增強認證的安全性。實現(xiàn)了OpenStack身份認證安全性的改進。方案已在校園網(wǎng)云存儲平臺上應用,為OpenStack安全性改進提供了參考。
云計算;OpenStack;身份認證;安全性
OpenStack是由Rackspace和美國國家航空航天局合作研制的云計算管理軟件[1],并以Apache許可證授權,是一個開放源代碼項目,提供可靠的云部署方案,從而實現(xiàn)類似于亞馬遜云基礎架構服務。到目前為止,OpenStack已經(jīng)發(fā)行了11個版本,其系統(tǒng)功能也在逐漸完善。從Essex版本開始,Keystone開始為OpenStack提供統(tǒng)一的身份認證服務,其帶來的安全性問題也隨之被人們關注。OpenStack安全組織(OSSG)在每次發(fā)布的安全指南中,都會提出新的安全問題,但是研究人員并沒有給出明確的解決措施。
OpenStack是目前最火的開源IaaS方案,其本身的設計架構賦予了其高度的可擴展性[2]。由于其功能豐富,OpenStack中所包含的組件與其他開源平臺相比是相對較多的,各個組件都通過PasteDeploy來定制WSGI服務。每個組件可以單獨部署,對外提供服務,也可以在一起協(xié)同完成某項工作。OpenStack的6個核心組件如圖1所示。
圖1 OpenStack核心組件關系圖
界面(Horizon):為管理員和普通用戶提供一套訪問和自動化管理OpenStack各種資源的圖形化界面;
計算管理(Nova):是計算組織控制器,基于用戶需求為虛擬機(VM)提供資源管理,它由多個子服務構成,這些子服務通過RPC實現(xiàn)通信,各服務之間具有很松的耦合性;
網(wǎng)絡管理(Neutron):通過對物理網(wǎng)絡資源的劃分與管理,為每個租戶提供獨立的虛擬網(wǎng)絡環(huán)境;
鏡像管理(Glance):用來存放管理虛擬機鏡像和快照的服務,Glance支持兩種鏡像存儲機制,簡單文件系統(tǒng)和Swift服務存儲鏡像機制;
對象存儲(Swift):提供了高可用、持久性、大文件的對象存儲,適合存放靜態(tài)數(shù)據(jù);
身份認證(Keystone):為OpenStack的用戶提供身份認證、令牌管理和權限管理,以及基于用戶角色的訪問控制。
由圖1可以看出,OpenStack的各個組件之間都是交互的,Keystone是OpenStack架構中的重要組成部件,組件之間的通信都需要通過Keystone的認證來獲得目標服務。用戶訪問系統(tǒng)的用戶名是否正確,令牌的頒發(fā),服務端點的注冊,以及該用戶是否具有訪問特定資源的權限等。這些都離不開Keystone的參與。與OpenStack中其他項目一樣,Keystone表示一個抽象層[3],會提供插件接口,開發(fā)者可以利用其當前的身份驗證服務,也可以選擇其他的身份認證系統(tǒng)。由此可見Keystone的安全性將會影響到整個系統(tǒng)的安全性。
Keystone對全部租戶和用戶進行注冊,對用戶進行身份驗證并授予其身份驗證令牌,管理服務端點目錄,創(chuàng)建橫跨所有用戶和服務的策略。Keystone的認證是雙向的。首先OpenStack必須認證用戶的身份是合法的,同時有足夠的權限執(zhí)行相應的操作;其次用戶需要確定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對令牌相關數(shù)據(jù)進行簽名,從而每一個服務端點會保存一份簽名公鑰證書、CA公鑰證書以及證書吊銷列表,其認證流程如圖3所示。
首先Keystone初始化時,Keystone生成CA的公鑰CA.pem和私鑰CA.key。同時,產生Keystone自己的公鑰keystone.pub和私鑰keystone.key,然后對keystone.pub進行CA的簽名,生成keystone. pem。當用戶使用有效用戶名及密碼在Keystone通過認證后,Keystone就使用keystone.key對用戶的基本信息進行加密,并將密文作為Token返回給用戶。用戶向服務模塊發(fā)出服務請求時,服務模塊首先要拿到Keystone的證書keystone.pem,然后使用keystone.pub對其解密,獲取用戶的信息,進而判斷該用戶的合法性。此外還需要對用戶Token的合法時間,以及Token是否存在進行判斷。
圖3 PKI方式認證流程
2.3兩種認證方式的比較
UUID格式比較簡單,就是隨機地生成一串UUID作為Token的ID,而PKI格式是通過OpenSSL首先對Token的內容進行簽名,然后將簽名的結果作為Token的ID;UUID方式中每個請求都帶著一個Token,Token不管到哪個服務,該服務都會先去驗證Token的合法性,然后再去執(zhí)行用戶請求的操作,所以每個請求都會經(jīng)過Keystone,在大量業(yè)務場景下,會造成Keystone負載很重。PKI中沒有服務模塊再去Keystone發(fā)請求進行驗證的過程,因此PKI方式能減輕Keystone的壓力。
Keystone并沒有提供方法在重復失敗登錄時限制賬戶訪問[4],重復失敗登錄可能存在暴力破解攻擊行為。通過經(jīng)常審查日志,可以確定未經(jīng)授權擅自訪問的賬戶;用戶名/密碼是最常見的認證方式,Keystone沒有對用戶密碼提出明確的要求,如密碼的長度和字符的選定。利用外部的身份認證系統(tǒng)能使弱密碼的風險最小化;OpenStack的客戶端和服務器之間的通信是通過RESTful API來實現(xiàn)的。各個組件或者在命令行執(zhí)行Keystone命令時,都要通過Keystone Client來向Keystone服務器發(fā)送HTTP請求,在這個過程中,用戶名密碼以及通信協(xié)議可能受到攻擊。
3.1基于USB Key的身份認證
USB Key技術是一種雙因子認證技術,能夠保證身份認證的安全可靠。用戶只有同時擁有USB Key及PIN碼才能登錄系統(tǒng)。USB Key會由OpenStack用戶本人保管,即便USB Key丟失了,只要PIN碼沒被攻擊者竊取,用戶的身份就不會被仿冒;如果PIN碼被攻擊者竊取了,沒有USB Key硬件,攻擊者也無法代替合法用戶完成身份認證。將USB Key技術應用到Keystone中,能避免用戶使用弱密碼帶來的風險。
另外USB Key具有一定的數(shù)據(jù)存儲空間,用戶可以存儲密鑰及數(shù)字證書[5],用戶的密鑰一旦寫入不可讀出,USB Key的數(shù)據(jù)處理機制使得它成為密鑰和數(shù)字證書的安全載體。
改進方案基于USB Key技術,并結合PKI技術能有效保證OpenStack用戶身份和數(shù)據(jù)傳輸中安全性。PKI需要在Keystone中單獨實施,作為證書頒發(fā)機構,并且通過對數(shù)字證書進行加密運算,保證了數(shù)字證書傳輸?shù)谋C苄?。用戶使用USB Key存儲PKI頒發(fā)的密鑰和數(shù)字證書,只有持有USB Key的用戶才能對數(shù)字證書進行操作,這就杜絕了證書被非法復制的可能性,用戶的密鑰不會在網(wǎng)絡中傳播,所有有關密鑰的運算都將在USB Key中實現(xiàn),增強了OpenStack用戶身份認證的安全性。方案如圖4所示。
圖4 Keystone改進方案
方案中需要設置客戶代理,負責用戶與Keystone之間完成雙向認證。用戶訪問業(yè)務服務器的訪問Token需要客戶代理生成,業(yè)務服務器發(fā)送給用戶的授權Token也需要客戶代理負責接收??蛻舸磉€用于維護用戶與Keystone以及用戶與業(yè)務服務器之間的共享密鑰。Keystone和業(yè)務服務器之間設置業(yè)務代理,負責二者之間的密鑰協(xié)商工作,并維護共享密鑰,對用戶的訪問Token進行鑒權,并返回反向認證Token給用戶。
3.2業(yè)務鑒權
業(yè)務鑒權的主要工作包括業(yè)務系統(tǒng)對Open-Stack用戶的角色信息進行鑒別,以及用戶對業(yè)務系統(tǒng)的合法性進行反向認證。用戶向客戶代理申請并獲得訪問業(yè)務系統(tǒng)的訪問Token。用戶將訪問Token發(fā)送到業(yè)務系統(tǒng),業(yè)務系統(tǒng)會將訪問Token和業(yè)務系統(tǒng)標識一起發(fā)送給業(yè)務代理。業(yè)務代理驗證訪問Token和業(yè)務系統(tǒng)標識,并為業(yè)務系統(tǒng)生成反向認證Token;業(yè)務系統(tǒng)將反向認證Token反饋給用戶。用戶發(fā)送反向認證Token到客戶代理,客戶代理根據(jù)反向認證Token里包含的用戶標識和業(yè)務系統(tǒng)標識判斷業(yè)務系統(tǒng)的合法性并將結果返回給用戶。完成以上操作后,OpenStack用戶再發(fā)送業(yè)務訪問請求時,業(yè)務系統(tǒng)通過讀取請求中授權Token包含的用戶角色信息,對用戶采取基于角色的訪問控制[6]。
3.3證書頒發(fā)機構
在方案中PKI作為證書頒發(fā)機構,需要單獨在Keystone中實施。負責為OpenStack用戶頒發(fā)和管理用戶公私鑰及數(shù)字證書;向Keystone提供證書下載以及證書吊銷列表下載;實現(xiàn)業(yè)務系統(tǒng)對數(shù)字證書的在線驗證功能。
3.4工作流程
方案工作流程如下:
(1)首先由證書頒發(fā)機構分別為Keystone、用戶和業(yè)務系統(tǒng)頒發(fā)密鑰和數(shù)字證書。用戶使用USB Key存儲私鑰和數(shù)字證書;
(2)Keystone開始提供認證服務之前,需要通過PKI的服務接口,對全部用戶的證書進行下載。由于證書中包含用戶的信息,從而實現(xiàn)了Keystone對用戶統(tǒng)一管理;
(3)業(yè)務服務器啟動之前,需要與Keystone完成一次雙向認證,以及協(xié)商共享密鑰;
(4)業(yè)務系統(tǒng)向Keystone提交自己擁有的角色類型信息以及身份標識,從而為用戶分配角色;
(5)用戶在發(fā)送訪問請求前,先完成與Keystone的雙向認證,即使用USB Key,并輸入已知的PIN碼。認證通過之后,用戶獲得與業(yè)務服務器,以及與Keystone之間的共享密鑰,在這個過程中,業(yè)務系統(tǒng)的授權Token也會發(fā)送給用戶;
(6)客戶代理為用戶生成訪問Token,用戶向業(yè)務服務器發(fā)送訪問請求時,先提交此Token。業(yè)務服務器使用共享密鑰對Token合法性進行驗證,驗證通過后,用戶會得到一個反正認證Token,從而用戶和業(yè)務系統(tǒng)之間實現(xiàn)了雙向認證;
(7)完成與業(yè)務系統(tǒng)的雙向認證后,用戶對業(yè)務系統(tǒng)進行下一步訪問,業(yè)務系統(tǒng)通過Token中用戶角色信息,實施基于角色的訪問控制。
3.5改進方案安全性分析
(1)防范身份假冒攻擊。數(shù)字證書作為用戶唯一標識,PKI提供了驗證這些證書的服務接口,攻擊者可以通過接口下載到任意用戶的證書。但是攻擊者需要得到私鑰以向系統(tǒng)證明擁有的證書的合法性,由于私鑰存儲在USB Key中,攻擊者無法假冒身份完成與Keystone之間的認證。
(2)防范非法授權。方案中對授權Token進行了加密運算,加密密鑰只有Keystone和業(yè)務代理持有。為了抵御攻擊者對Keystone的攻擊,方案采用的是雙向認證機制,不僅Keystone要驗證請求者的身份,請求者也可以對Keystone的合法性進行驗證。
(3)防范DoS攻擊。用戶向Keystone發(fā)送登錄和授權請求時,需同時持有USB Key和PIN碼。否則Keystone可以拒絕此次請求,有效抵御了DoS攻擊。
為了方便信息化中心的日產管理,在學校校園網(wǎng)應用了此方案。方案部署環(huán)境使用了4臺服務器,Server1負責Keystone身份認證服務,Server2為PKI證書頒發(fā)機構,Server3和Server4為業(yè)務服務器,操作系統(tǒng)均為Ubuntu 14.04 LTS。各服務器配置信息如表1所示。
表1 服務器配置信息
實驗云平臺應用于信息化中心日常管理中,用戶使用云平臺前需從PKI下載個人數(shù)字證書及私鑰,并存儲至USB Key中。用戶在終端持有USB Key并輸入正確的PIN碼,通過云平臺驗證后,用戶可以向云平臺上傳自定義鏡像文件;創(chuàng)建并訪問云主機,向云主機添加云硬盤;用戶也可以創(chuàng)建快照,捕捉硬盤在某一時刻的狀態(tài),未來可以隨時恢復到這個狀態(tài)。通過實踐證明,改進方案在實驗云平臺實施,滿足了用戶對云存儲平臺的安全需求和使用需求。
本文重點對Keystone的身份認證機制進行了研究,分析了Keystone的安全性在整個系統(tǒng)中的重要性。設計了一套基于USB Key和PKI技術的改進方案,實現(xiàn)了對用戶的雙因子認證,保證了用戶密鑰和數(shù)字證書的保密性,采用基于角色的訪問控制進行業(yè)務鑒權,設置反向令牌,用戶和業(yè)務系統(tǒng)間也能實現(xiàn)雙向認證,OpenStack身份認證安全性得到了改進。改進方案已在校園網(wǎng)云存儲平臺上應用,下一步研究工作主要是將更多的身份認證技術引入到Keystone中,得到最佳的解決方案。
[1] 王霄飛.基于OpenStack構建私有云計算平臺[D].廣州:華南理工大學,2012.
[2] 姜毅,王偉軍,曹麗,等.基于開源軟件的私有云計算平臺構建[J].電信科學,2013(01):68-75.
[3]John Rhoton.發(fā)現(xiàn)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] 羅斌,裘正定.網(wǎng)絡身份認證新技術[J].計算機安全,2005(10):29-31.
[6] 從立鋼,郭利菊.云存儲系統(tǒng)安全技術研究[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