楊 燦,李秦偉,葉延婷
(1.貴州大學(xué) 大數(shù)據(jù)與信息工程學(xué)院,貴州 貴陽 550025;2.貴州大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,貴州 貴陽 550025)
Mitaka版OpenStack的授權(quán)管理分析與研究
楊 燦1,李秦偉2,葉延婷2
(1.貴州大學(xué) 大數(shù)據(jù)與信息工程學(xué)院,貴州 貴陽 550025;2.貴州大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,貴州 貴陽 550025)
研究分析Mitaka版OpenStack云平臺的訪問控制機制、用戶及角色管理模型,針對其缺乏層次管理、云用戶缺乏授權(quán)等問題,在默認(rèn)的OpenStack授權(quán)策略基礎(chǔ)上,提出加入?yún)^(qū)域管理員角色,并修改授權(quán)策略文件,賦予角色相應(yīng)的權(quán)限。實驗結(jié)果表明,區(qū)域管理員角色與設(shè)定的權(quán)限關(guān)聯(lián)成功,用戶可通過扮演該角色獲得相應(yīng)的管理員權(quán)限,對OpenStack在實際中的應(yīng)用具有參考價值。
OpenStack;RBAC;授權(quán)管理;區(qū)域管理員
OpenStack是由NASA和和Rackspace合作研發(fā)的開源云計算[1]平臺管理項目,作為 IaaS 層的云操作系統(tǒng),OpenStack為虛擬機提供并管理3大類資源:計算、網(wǎng)絡(luò)和存儲,目前第13個版本Mitaka已于2016年4月發(fā)行。本文主要以 VMware Workstation10作為虛擬機容器,以ubuntu-14.04.2-server-amd64.iso為底層操作系統(tǒng),參考OpenStack官網(wǎng)的指導(dǎo)說明搭建了基于Mitaka版本的OpenStack私有云平臺[2-4],在此基礎(chǔ)上對其授權(quán)管理進行分析研究。
OpenStack是一個分布式系統(tǒng),可由若干不同功能的節(jié)點組成。在本次實驗環(huán)境中,手動部署了控制節(jié)點controller1、計算節(jié)點compute兩個核心節(jié)點,每一個節(jié)點都是由單獨的虛擬機完成,云平臺的搭建過程在本文中不做詳細(xì)介紹,僅對部署的兩個節(jié)點簡要說明。控制節(jié)點作為OpenStack的主控節(jié)點,主要安裝了keystone、nova、glance、neutron以及dashboard等模塊,計算節(jié)點上則主要安裝了nova和neutron模塊。
1.1 用戶身份認(rèn)證及管理
在OpenStack云平臺中,負(fù)責(zé)用戶管理及認(rèn)證的是核心組件之一的keystone[5]。該服務(wù)通過檢查用戶的credential來確定用戶的身份,credential是由用戶名/密碼或者用戶名/API key組成,keystone驗證通過后會給用戶分配一個具有一定有效期的token供后續(xù)請求使用。
在Mitaka版本中,keystone組件由原來的V2版API替換為V3版API,支持域的創(chuàng)建和添加,域的實現(xiàn)對于租戶可進行更細(xì)粒化的管理,域的管理員可以通過儀表盤接口或者命令行創(chuàng)建項目、用戶、群組和分配角色等?,F(xiàn)有的OpenStack用戶管理模型如圖1所示。
圖1 OpenStack用戶管理模型
從圖中可以看出,一個項目只屬于一個域,一個用戶可以屬于多個項目,一個項目可以有多個用戶,具有不同的角色。此外,OpenStack也支持用戶組的創(chuàng)建,但在Web界面[6]只能為組添加用戶,無法管理權(quán)限,管理員需要使用命令行給用戶組賦予某一角色,進而賦予一定權(quán)限。域管理員作為全局用戶,負(fù)責(zé)項目、用戶、云資源等的管理,當(dāng)云用戶數(shù)量越來越多,身份關(guān)系也會越來越復(fù)雜,現(xiàn)有的管理模型顯然加重了域管理員的負(fù)擔(dān),不能夠滿足實際需要。
1.2 OpenStack授權(quán)
OpenStack默認(rèn)的授權(quán)設(shè)置只允許管理員創(chuàng)建項目資源,主要有兩種類型的授權(quán)策略,一種是以操作為主,指定訪問特定的操作標(biāo)準(zhǔn),另一種是以資源為主,對特定資源的訪問進行授權(quán)[7]。當(dāng)前OpenStack云平臺中,默認(rèn)有超級管理員、普通用戶這兩種角色,通過各組件中的policy.json來實現(xiàn)基于角色的訪問控制[8-9](Role Based Access Control, RBAC)。但與其余組件不同的是,keystone中的 RBAC 實現(xiàn)根據(jù)需求要做token 驗證,再做 policy 檢查,其請求處理過程如圖2所示。keystone對用戶名和密碼進行驗證,若成功則返回用戶令牌token。用戶發(fā)送訪問請求,驗證其令牌的有效性,返回結(jié)果與token相關(guān)的metadata,其中包含的service endpoints 決定了獲取的token能夠訪問的服務(wù)。用戶有沒有權(quán)限執(zhí)行該服務(wù)取決于 role 和 基于roles 的鑒權(quán),即policy.json策略文件 。
圖2 keystone驗證用戶請求
在身份服務(wù)中,token包含用戶能承擔(dān)的角色列表,以及每個角色可以訪問的資源或進行的操作。policy.json由應(yīng)用程序編程接口API負(fù)責(zé)調(diào)用并校驗的,用戶向API請求后,API通過token獲取用戶的role、project等信息,調(diào)用源碼文件keystone/policy/backends/rules.py中部分代碼。
class Policy(policy.PolicyDriverV8):
def enforce(self, credentials, action, target):
LOG.debug(’enforce %(action)s: %(credentials)s’, {’action’: action,
’credentials’: credentials})
enforce(credentials, action, target)
其中enforce(credentials, action, target)函數(shù)定義為:
def enforce(credentials, action,target,do_raise=True):
init()
extra = {}
if do_raise:
extra.update(exc=exception.ForbiddenAction, action=action,
do_raise=do_raise)
return_ENFORCER.enforce(action,target,credentials, **extra)
該函數(shù)驗證用戶的證書信息及操作的有效性,返回是否授權(quán)的決定。通過調(diào)用oslo_policy/policy.py文件中的函數(shù)self.load_rules(),遍歷policy.json文件讀取到data文本,調(diào)用load_json函數(shù)并解析生成一個rules字典,load_json函數(shù)定義如下。
def load_json(cls, data, default_rule=None):
rules = dict((k, parse_rule(v)) for k, v
in jsonutils.loads(data).items())
return cls(rules, default_rule)
字典的key為action(及操作的api接口函數(shù)),value為rule,rule包括基于角色的規(guī)則、字段規(guī)則、通用規(guī)則,字段規(guī)則和通用規(guī)則常用于基于角色的規(guī)則的補充。keystone根據(jù)特定的rule來檢查用戶是否具有操作權(quán)限,如果請求用戶的角色與policy.json中可執(zhí)行相應(yīng)操作的角色匹配成功,則該用戶就被賦予相應(yīng)的權(quán)限,由此實現(xiàn)基于角色的訪問控制。
OpenStack默認(rèn)角色有限,給予了超級管理員過大的權(quán)限,以用戶demo為例做簡單說明。demo用戶創(chuàng)建云主機[10]demo-instance,而超級管理員admin在不需要用戶demo許可的情況下可直接刪除該云主機且不可撤銷,在實際生產(chǎn)應(yīng)用中,如果管理員出現(xiàn)誤操作,將會對用戶運行在云主機當(dāng)中的數(shù)據(jù)、應(yīng)用程序等帶來巨大的損失,由此看來現(xiàn)有授權(quán)策略缺乏細(xì)粒度的授權(quán)[11-12],用戶的安全隱私也得不到保障。
在云計算中,需要合理定義系統(tǒng)管理人員的控制邊界,防止來自內(nèi)部的攻擊造成的危害。針對OpenStack管理員權(quán)限過大問題,文獻[13]通過對OpenStack現(xiàn)有安全機制進行研究分析,利用組簽名機制將匿名認(rèn)證和資源訪問控制兩個組件添加到OpenStack架構(gòu)當(dāng)中,以保障用戶的隱私安全及個性管理,在一定程度上限制了云管理員的權(quán)限。文獻[14]提出了層次化的系統(tǒng)模型,采用根權(quán)威-域權(quán)威的授權(quán)架構(gòu),結(jié)合改進的定長密文加密算法實現(xiàn)授權(quán)。文獻[15]則針對用戶管理問題,修改OpenStack云平臺用戶管理機制,采用LDAP目錄存儲,實現(xiàn)了樹形層次的云用戶管理。
綜合以上討論,設(shè)想云用戶租用云資源之后,如果可以作為區(qū)域管理員(Regional Administrator)擁有一定的權(quán)限來管理租用的云資源中的用戶、角色、權(quán)限、數(shù)據(jù)和虛擬客體資源等,一方面能限制超級管理員的過大權(quán)限;另一方面也保護了用戶的隱私。因此可基于RBAC模型,添加區(qū)域管理員角色Radmin,利用該角色來管理云平臺的部分權(quán)限,為證明方案的可行性進行驗證。
超級管理員在不同功能組件中具有不同的權(quán)限,本文以keystone組件[16]為例,超級管理員具有管理服務(wù)、域、項目、用戶、角色、證書、令牌等權(quán)限,在用戶管理方面,超級管理員可以添加、查看、刪除用戶以及為用戶修改密碼等?,F(xiàn)假設(shè)區(qū)域管理員角色是Radmin,賦予角色查看指定項目下所有用戶的權(quán)限。
打開VMware Workstation,開啟兩節(jié)點所在的虛擬機,使用Xshell5遠程連接已搭建好的OpenStack云平臺。首先,在控制節(jié)點使用admin權(quán)限,分別創(chuàng)建項目test作為OpenStack訪問控制測試,區(qū)域管理員角色Radmin, test項目管理員u, test項目普通用戶u1,并為用戶u添加Radmin角色,為用戶u1添加user角色,如表1所示。
表1 用戶、角色分配表
創(chuàng)建用戶admin、u、u1的環(huán)境變量文件admin-openrc.sh,u-openrc.sh,u1-openrc.sh方便加載不同用戶,在此僅給出用戶u的環(huán)境變量文件內(nèi)容,密碼是由openssl rand -hex 10生成的隨機數(shù)。
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=test
export OS_USERNAME=u
export OS_PASSWORD=6f976c243c13b93b98d5
export OS_AUTH_URL=http://controller1:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
在OpenStack默認(rèn)策略授權(quán)下,超級管理員用戶admin、test項目管理員u普通用戶u1分別請求查看test項目下的用戶列表,請求結(jié)果如圖3~圖5所示。
圖3 用戶admin請求結(jié)果
圖4 用戶u請求結(jié)果
圖5 用戶u1請求結(jié)果
根據(jù)策略需求,為使用戶u具有部分超級管理員的權(quán)限,修改policy.json文件,定義角色Radmin使其有效,授權(quán)策略identity:list_users的規(guī)則是admin_or_Radmin,因篇幅有限只給出部分代碼如下。
"Radmin": "role:Radmin",
"admin_or_Radmin": "rule:admin_required or rule:Radmin",
"identity:list_projects": "rule:admin_or_Radmin",
"identity:get_user": "rule:admin_or_Radmin",
"identity:list_users": "rule:admin_or_Radmin",
"identity:list_role_assignments":"rule:admin_or_Radmin",
再次查看請求查看test項目下的用戶,請求結(jié)果如圖6所示。
圖6 用戶u請求結(jié)果
由圖3~圖5可以看出在默認(rèn)授權(quán)策略下,只有超級管理員admin可以請求查看項目用戶列表,作為區(qū)域管理員和普通用戶均無法查看。對比圖4和圖6,在修改策略文件后,用戶u請求成功,可以查看項目用戶列表。說明Radmin角色與設(shè)定的權(quán)限關(guān)聯(lián)成功,用戶可通過扮演Radmin角色獲得相應(yīng)的區(qū)域管理員權(quán)限。
本文通過搭建和部署基于Mitaka版本的OpenStack云平臺,對其用戶管理和授權(quán)進行分析研究,設(shè)想添加區(qū)域管理員角色以改進云用戶缺乏管理權(quán)限問題,下一步會針對超級管理員和區(qū)域管理員的權(quán)限分配、分級授權(quán)等問題進行分析研究,為OpenStack其他組件的授權(quán)改進提供參考。
[1] 劉正偉,文中領(lǐng),張海濤.云計算和云數(shù)據(jù)管理技術(shù)[J].計算機研究與發(fā)展,2012(S1):26-31.
[2] 時瑞鵬.基于OpenStack的私有云計算平臺的搭建[J].中國科技博覽,2014(24):337-338.
[3] 趙保華.OpenStack構(gòu)建下的云計算平臺實現(xiàn)與研究[J].激光雜志,2014(11):117-119.
[4] 王游,溫艷琪,寧晨耕,等.基于OpenStack的高成熟度SaaS平臺[J].電子科技,2013,26(7):63-66.
[5] 熊微,房秉毅,張云勇,等.OpenStack認(rèn)證安全問題研究[J].郵電設(shè)計技術(shù),2014(7):21-25.
[6] 王石玉.云計算在企業(yè)信息化的應(yīng)用[J].電子科技, 2012, 25(10):142-144.
[7] 李馥娟.基于OAuth的開放授權(quán)技術(shù)及在云計算中的應(yīng)用[J].計算機系統(tǒng)應(yīng)用,2015,24(4):228-232.
[8] 王于丁,楊家海,徐聰,等.云計算訪問控制技術(shù)研究綜述[J].軟件學(xué)報,2015,26(5):1129-1150.
[9] 趙明斌,姚志強.基于RBAC的云計算訪問控制模型[J].計算機應(yīng)用,2012,32(s2):267-270.
[10] 吳聯(lián)盟,王洪波,程時端.OpenStack虛擬機啟動機制研究[J].新型工業(yè)化,2012(8):28-32.
[11] 吳文康.云計算服務(wù)中基于角色的訪問控制授權(quán)安全性研究[D].長沙:湖南大學(xué),2013.
[12] 池亞平,王慧麗,元智博,等.OpenStack身份認(rèn)證機制研究與改進[J].吉林大學(xué)學(xué)報:信息科學(xué)版,2015,33(6):700-706.
[13] 陳瑩.OpenStack云服務(wù)平臺安全性分析與改進機制的實現(xiàn)[D].北京:北京大學(xué),2012.
[14] 楊庚,王東陽,張婷,等.云計算環(huán)境中基于屬性的多權(quán)威訪問控制方法[J].南京郵電大學(xué)學(xué)報:自然科學(xué)版,2014,34(2):1-9.
[15] 吳登攀.基于OpenStack云平臺的用戶管理系統(tǒng)設(shè)計與實現(xiàn)[D].成都:電子科技大學(xué),2015.
[16] 陳慧,李陶深,岑霄.OpenStack核心存儲件Swift與Keystone的集群整合方法[J].廣西科學(xué)院學(xué)報, 2015,31(1):73-76.
Analysis of and Research on Authorization Management of Mitaka Version OpenStack
YANG Can1, LI Qinwei2, YE Yanting2
(1.School of Big Data and Information Engineering, Guizhou University, Guiyang 550025, China;2. School of Computer Science and Technology, Guizhou University, Guiyang 550025, China)
This paper studies the existing access control mechanism, and the management model of users and roles of the Mitaka version OpenStack cloud platform. In view of the lack of hierarchy management and users authorization, the regional administrator based on the default authorization policy is introduced to modify the authorization policy documents and give authority to the role. Experimental results show that regional administrator role is associated with the permissions successfully, and the user can get the corresponding administrator privileges by playing the role.
OpenStack; RBAC; authorization management; regional administrator
2016- 10- 19
貴州省聯(lián)合基金(黔科合LH字[2014]7637)
楊燦 (1991-),女,碩士研究生。研究方向:云計算與訪問控制。李秦偉(1961-),男,教授。研究方向:云計算,信息安全。
10.16180/j.cnki.issn1007-7820.2017.05.043
TP311
A
1007-7820(2017)05-158-04