文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2015)02-0135-04
0 引言
任何一個(gè)授權(quán)系統(tǒng)至少需要同時(shí)解決認(rèn)證和授權(quán)兩方面的問(wèn)題,認(rèn)證決定用戶是否具有對(duì)某一系統(tǒng)或資源的訪問(wèn)權(quán)限,而授權(quán)則決定用戶能夠訪問(wèn)特定系統(tǒng)或資源的具體內(nèi)容。由于云計(jì)算服務(wù)構(gòu)建在具有極高擴(kuò)展能力的信息基礎(chǔ)架構(gòu)上,而且服務(wù)通過(guò)動(dòng)態(tài)、靈活的可配置資源按需提供,所以身份認(rèn)證和授權(quán)訪問(wèn)在云計(jì)算中將顯得更為重要。本文在分析云計(jì)算信息基礎(chǔ)架構(gòu)的基礎(chǔ)上,立足當(dāng)前技術(shù)現(xiàn)狀和應(yīng)用實(shí)踐,綜合傳統(tǒng)網(wǎng)絡(luò)中的SAML2.0、OAuth2.0和OpenID2.0等技術(shù)、標(biāo)準(zhǔn)與規(guī)范,提出了一種開放標(biāo)準(zhǔn)的云計(jì)算身份認(rèn)證模型,為云計(jì)算中信息資源的整合提供了一種組織管理架構(gòu)。
1 云計(jì)算環(huán)境中的身份認(rèn)證特點(diǎn)
云計(jì)算[1-2]是基于分布式計(jì)算、網(wǎng)格計(jì)算和虛擬化等技術(shù),在信息基礎(chǔ)設(shè)施和網(wǎng)絡(luò)應(yīng)用共同發(fā)展到一定階段時(shí)出現(xiàn)的一種新型信息服務(wù)方式,它使效用計(jì)算逐步變成了現(xiàn)實(shí)。與其他相關(guān)的主要技術(shù)相比,云計(jì)算中的認(rèn)證和授權(quán)具有以下特點(diǎn):(1)用戶管理采用集中式或委托第三方負(fù)責(zé);(2)資源管理采用集中式和分布式相結(jié)合的模式,當(dāng)采用分布式管理模式時(shí),系統(tǒng)之間一般采用內(nèi)部高速網(wǎng)絡(luò)、高性能專網(wǎng)或虛擬專用網(wǎng)(Virtual Private Network,VPN)安全通道等方式互聯(lián);(3)加強(qiáng)對(duì)用戶隱私的保護(hù),實(shí)現(xiàn)對(duì)身份信息的安全管理;(4)計(jì)算任務(wù)調(diào)度采用集中式或分布式;(5)云計(jì)算中為每個(gè)用戶按需提供資源,資源分布既分散又集中;(6)通過(guò)虛擬化技術(shù)屏蔽掉了不同操作系統(tǒng)之間的異構(gòu)性。
云計(jì)算統(tǒng)一身份認(rèn)證又稱為聯(lián)邦身份認(rèn)證(Federal Identity),它是一個(gè)端到端、可擴(kuò)展及前瞻性的實(shí)現(xiàn)身份驗(yàn)證與資源配置的信息基礎(chǔ)設(shè)施,是解決組織內(nèi)部以及組織之間身份認(rèn)證互信的基礎(chǔ)。云計(jì)算統(tǒng)一身份認(rèn)證是一個(gè)完整的、電信級(jí)的基于邏輯安全域的身份驗(yàn)證解決方案,在同一邏輯安全域中終端之間的信息交換不限使用哪一種協(xié)議,云計(jì)算統(tǒng)一身份認(rèn)證系統(tǒng)可分為身份提供者(Identity Provider,IdP)和服務(wù)提供者(Service Provider,SP)兩部分來(lái)部署,如面1所示。其中,IdP負(fù)責(zé)對(duì)云終端創(chuàng)建身份、進(jìn)行屬性過(guò)濾、管理認(rèn)證憑證和維護(hù)當(dāng)前會(huì)話,SP實(shí)現(xiàn)與IdP之間的屬性映射、身份關(guān)聯(lián)與屬性傳遞。
云計(jì)算統(tǒng)一身份認(rèn)證主要涉及認(rèn)證(authentication)、授權(quán)(authorization)和單點(diǎn)登錄(Single Sign On,SSO)3個(gè)方面。其中,認(rèn)證用于判定“訪問(wèn)者是誰(shuí)”,授權(quán)用于決定“訪問(wèn)者能做什么”,而SSO實(shí)現(xiàn)了用戶在一個(gè)邏輯安全區(qū)域內(nèi)的一次登錄、多次訪問(wèn)能力,即用戶只要正常登錄了邏輯安全域中的某一應(yīng)用系統(tǒng),就可以自由訪問(wèn)該域中其他應(yīng)用系統(tǒng)中的授權(quán)資源,SSO同時(shí)包含著認(rèn)證和授權(quán)兩個(gè)過(guò)程。
2 云計(jì)算中的身份認(rèn)證技術(shù)
2.1 基于SAML2.0的身份認(rèn)證
SAML(Security Assertion Markup Language,安全斷言標(biāo)記語(yǔ)言)[3-4]是身份認(rèn)證領(lǐng)域出現(xiàn)較早的基于XML語(yǔ)言的信息架構(gòu),其主要功能是實(shí)現(xiàn)邏輯安全域中IdP與SP之間的認(rèn)證和授權(quán)信息傳輸以及斷言形式表達(dá)。SAML提供了基于Web方式的SSO解決方案,是云計(jì)算尤其是私有云服務(wù)中整合不同應(yīng)用系統(tǒng)的首選方案。
SAML規(guī)范定義了基于XML的4種組件[4]:斷言(assertion)、協(xié)議(protocol)、綁定(binding)和配置(profile)。其中,SAML斷言分為認(rèn)證、屬性和授權(quán)3種類型,認(rèn)證斷言確認(rèn)用戶的身份,屬性斷言包含用戶的特定信息,授權(quán)斷言確認(rèn)用戶獲得授權(quán)。協(xié)議定義了SAML如何請(qǐng)求和接收斷言,主要涉及請(qǐng)求(request)和響應(yīng)(respond)兩種信息類型。綁定定義了如何將SAML請(qǐng)求和響應(yīng)信息映射到標(biāo)準(zhǔn)的報(bào)文和協(xié)議上。簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議(SOAP)是SAML中一個(gè)重要的綁定,另外SAML可以與HTTP、SMTP、FTP等主要協(xié)議實(shí)現(xiàn)綁定。如圖2所示,SAML斷言可以直接嵌入SOAP信息頭部,SOAP再嵌入到標(biāo)準(zhǔn)的HTTP報(bào)文后進(jìn)行傳輸。配置是對(duì)已定義的特定應(yīng)用實(shí)例的具體表現(xiàn),它由斷言、協(xié)議和綁定組合而成。
SAML規(guī)范中定義了3種不同的角色(role):用戶代理(通常為Web瀏覽器)、身份提供者(IdP)和服務(wù)提供者(SP)。用戶代理訪問(wèn)SP,當(dāng)SP接收到該訪問(wèn)請(qǐng)求后便向IdP發(fā)送身份認(rèn)證請(qǐng)求。此時(shí)IdP將要求該用戶提供類似于用戶名、密碼等能夠證明其身份的信息,并以此作為其合法性的斷言。當(dāng)SP從IdP獲取該身份斷言后,便可以決定是否為該用戶提供服務(wù)。在此過(guò)程中,因?yàn)橐粋€(gè)IdP可以同時(shí)為多個(gè)SP提供SAML斷言,在IdP緩存機(jī)制的支持下,實(shí)現(xiàn)了用戶在邏輯安全域中的SSO。
SAML使用SSL/TLS實(shí)現(xiàn)點(diǎn)到點(diǎn)的安全性,使用安全令牌來(lái)避免重放攻擊。僅從協(xié)議角度來(lái)看,SAML的工作原理類似于CAS和Kerberos,CAS協(xié)議依賴于CAS Server,Kerberos依賴于KDC,而SAML則依賴于IdP。
2.2 基于OAuth2.0的授權(quán)管理
OAuth(Open Authorization,開放授權(quán))[5]是一個(gè)開放標(biāo)準(zhǔn)的聯(lián)合協(xié)議,旨在幫助用戶將受保護(hù)的資源授權(quán)給第三方使用,且支持細(xì)粒度的權(quán)限控制。在授權(quán)過(guò)程中,OAuth不需要將用戶名和密碼以及其他認(rèn)證憑證提供給第三方,增強(qiáng)了授權(quán)過(guò)程的安全性。OAuth標(biāo)準(zhǔn)主要針對(duì)個(gè)人用戶對(duì)資源的開放授權(quán),也在組織內(nèi)部私有云服務(wù)網(wǎng)絡(luò)中發(fā)揮了其功能優(yōu)勢(shì),可以與OpenID、SAML等認(rèn)證技術(shù)配合實(shí)現(xiàn)開放標(biāo)準(zhǔn)的基于SSO的授權(quán)服務(wù)。
OAuth2.0定義了4種不同的角色:RO(Resource Owner,資源擁有者)、RS(Resource Server,資源服務(wù)器)、Client(客戶端)和AS (Authorization Server,授權(quán)服務(wù)器)。其中,RO是指能夠?qū)κ鼙Wo(hù)資源進(jìn)行授權(quán)的實(shí)體,一般是指一個(gè)具體的進(jìn)行授權(quán)操作的人或系統(tǒng)進(jìn)程。根據(jù)授權(quán)管理需要,授權(quán)操作既可以通過(guò)“在線授權(quán)”方式手動(dòng)執(zhí)行,也可以通過(guò)系統(tǒng)默認(rèn)設(shè)置自動(dòng)進(jìn)行“離線授權(quán)”。RS用于存放受保護(hù)資源,并處理對(duì)資源的訪問(wèn)請(qǐng)求。Client指第三方應(yīng)用(這里的Client作為“客戶端”理解時(shí)是針對(duì)RS而言的),它在獲得RO的授權(quán)許可后便可以去訪問(wèn)由RO管理的在RS上的資源。Client可能是一個(gè)Web站點(diǎn)、一段JavaScript代碼或安裝在本地的一個(gè)應(yīng)用程序。不同的Client類型可使用不同的授權(quán)類型進(jìn)行授權(quán),如授權(quán)碼許可(Authorization Code Grant)授權(quán)、Client憑證許可(Client Credentials Grant)授權(quán)等。AS用于對(duì)RO的身份進(jìn)行驗(yàn)證和資源授權(quán)管理,并頒發(fā)訪問(wèn)令牌(Access Token)。在具體應(yīng)用中,AS和RS一般由同一個(gè)服務(wù)器來(lái)提供服務(wù)。如圖3所示,OAuth2.0協(xié)議的基本工作流程如下:
(1)Client向RO發(fā)送“授權(quán)請(qǐng)求”(authorization request),請(qǐng)求報(bào)文中一般包含要訪問(wèn)的資源路徑、操作類型、Client的身份等信息。
(2)RO同意Client的授權(quán)請(qǐng)求,并將“授權(quán)許可”(Authorization Grant)發(fā)送給Client。一般情況下,在AS上會(huì)提供權(quán)限分配操作界面,讓RO進(jìn)行細(xì)粒度的在線授權(quán),或由系統(tǒng)自動(dòng)完成離線授權(quán)操作。
(3)Client向AS請(qǐng)求“訪問(wèn)令牌”(Access Token)。此時(shí),AS需要驗(yàn)證Client提交給自己的“授權(quán)許可”,并要求Client提供用于驗(yàn)證其身份的信息(多為用戶名和密碼)。
(4)AS在通過(guò)對(duì)Client的身份驗(yàn)證后,便向它返回一個(gè)“訪問(wèn)令牌”,只有持有訪問(wèn)令牌的Client才能訪問(wèn)資源。
(5)Client向RS提交“訪問(wèn)令牌”。
(6)RS驗(yàn)證“訪問(wèn)令牌”的有效性,具體由令牌的頒發(fā)機(jī)構(gòu)、令牌頒發(fā)日期、時(shí)間戳等屬性決定。當(dāng)驗(yàn)證通過(guò)后,才允許Client訪問(wèn)受保護(hù)的資源。其中,在令牌的有效期內(nèi),Client可以多次攜帶同一個(gè)“訪問(wèn)令牌”去訪問(wèn)受保護(hù)的資源。
在OAuth協(xié)議的整個(gè)授權(quán)過(guò)程中沒(méi)有直接用到第三方(Client)的私有信息,而是使用“訪問(wèn)令牌”和數(shù)字簽名方式,提高了協(xié)議的安全性。同時(shí),任何第三方都可以使用OAuth AS,任何服務(wù)提供者都可以組建自己的OAuth授權(quán)服務(wù)系統(tǒng),所以O(shè)Auth是一個(gè)開放的標(biāo)準(zhǔn)。目前,OAuth2.0已經(jīng)成為開放平臺(tái)認(rèn)證授權(quán)的事實(shí)上的標(biāo)準(zhǔn)。
2.3 基于OpenID的身份認(rèn)證
OpenID[6]技術(shù)的出現(xiàn)適應(yīng)了互聯(lián)網(wǎng)中分布式應(yīng)用與分散式控制的認(rèn)證特點(diǎn),由于它的開放、分散、自由以及以用戶為中心的特征,成為云計(jì)算中重要的數(shù)字身份認(rèn)證基本架構(gòu)。正如OpenID在其官方網(wǎng)站的介紹:OpenID以免費(fèi)、簡(jiǎn)捷方式實(shí)現(xiàn)在Internet中單一數(shù)字身份認(rèn)證,通過(guò)OpenID服務(wù),用戶可以登錄所有喜歡的Web站點(diǎn)。在云計(jì)算中,用戶需要以SSO方式同時(shí)登錄多個(gè)應(yīng)用系統(tǒng),實(shí)現(xiàn)以統(tǒng)一身份認(rèn)證為核心的開放應(yīng)用,無(wú)論是公有云還是私有云環(huán)境,OpenID都發(fā)揮了其功能優(yōu)勢(shì)。
與SAML不同的是,OpenID是一個(gè)以Internet框架為基礎(chǔ)的數(shù)字身份認(rèn)證規(guī)范,在Internet空間中,以URI(Uuniform Resource Identifier,統(tǒng)一資源標(biāo)識(shí)符)來(lái)命名、定位和標(biāo)識(shí)信息資源,OpenID采用了類似的方式,也以URI來(lái)標(biāo)識(shí)用戶身份的唯一性,而放棄了目前大部分系統(tǒng)基于用戶名和密碼驗(yàn)證的身份認(rèn)證方式,逐步實(shí)現(xiàn)用戶身份標(biāo)識(shí)與信息空間中資源標(biāo)識(shí)的統(tǒng)一。在OpenID認(rèn)證過(guò)程中,請(qǐng)求/應(yīng)答信息通過(guò)https協(xié)議在公共網(wǎng)絡(luò)中傳輸,OpenID認(rèn)證服務(wù)器成為整個(gè)認(rèn)證的中心,可以采取冗余方式提供服務(wù)保障,用戶身份信息全部集中在OpenID認(rèn)證服務(wù)器上,避免了分散存儲(chǔ)帶來(lái)的不安全因素。
OpenID主要由標(biāo)識(shí)符(identifier)、依賴方(relying party,RP)和OpenID提供者(OpenID Provider,OP)組成。其中,標(biāo)識(shí)符為http/https形式的URI(目前在互聯(lián)網(wǎng)中多使用URL)或XRI(eXtensible Resource Identifier,可擴(kuò)展的資源標(biāo)識(shí)符)[7-8],XRI是一套與URI兼容的抽象標(biāo)識(shí)符體系;RP是需要對(duì)訪問(wèn)者的身份進(jìn)行驗(yàn)證的Web系統(tǒng)或受保護(hù)的在線資源,依賴OP的身份認(rèn)證服務(wù);OP即OpenID認(rèn)證服務(wù)器,在為用戶提供和管理標(biāo)識(shí)符的同時(shí),還為用戶提供在線身份認(rèn)證服務(wù),是整個(gè)OpenID系統(tǒng)的核心。
在采用OpenID的網(wǎng)絡(luò)中,用戶首先需要向OP申請(qǐng)一個(gè)標(biāo)識(shí)符,之后當(dāng)訪問(wèn)受OpenID保護(hù)的RP時(shí),RP會(huì)將該訪問(wèn)重定向到OP。OP通過(guò)標(biāo)識(shí)符對(duì)訪問(wèn)者的身份進(jìn)行驗(yàn)證,無(wú)誤后將用戶訪問(wèn)返回到RP(同時(shí),OP也將驗(yàn)證結(jié)果告知RP)。
3 云計(jì)算身份認(rèn)證模型
根據(jù)當(dāng)前云計(jì)算的技術(shù)和應(yīng)用現(xiàn)狀,結(jié)合具體實(shí)踐項(xiàng)目,提出了融合SAML2.0、OAuth2.0和OpenID2.0接入標(biāo)準(zhǔn)和開放接口的云計(jì)算身份認(rèn)證模型,如圖4所示。該模型的建立,在為當(dāng)前云計(jì)算統(tǒng)一身份認(rèn)證提供基本服務(wù)架構(gòu)的基礎(chǔ)上,也為將來(lái)實(shí)現(xiàn)不同安全域(不同組織的資源系統(tǒng))之間的資源和管理整合提供了強(qiáng)有力的支持和適應(yīng)能力。例如,當(dāng)不同的安全域之間需要進(jìn)行整合從而形成更大范圍的邏輯安全域時(shí),原來(lái)的安全域只需要通過(guò)各自的身份認(rèn)證平臺(tái)進(jìn)行基于身份互信的訪問(wèn),各安全域中原來(lái)的認(rèn)證方式還可以繼續(xù)使用。
在圖4所示的模型中,OAuth是整個(gè)資源的授權(quán)管理中心,無(wú)論是單個(gè)“安全域”中的私有云服務(wù),還是基于整個(gè)邏輯安全域的公有云環(huán)境,OAuth都能夠滿足授權(quán)管理需要。本模型中同時(shí)提供了可供選擇的SAML和OpenID兩種身份認(rèn)證方式,其主要原因有兩點(diǎn):(1)考慮到SAML應(yīng)用的廣泛性和用戶的認(rèn)可度,尤其在通過(guò)私有云整合原有資源時(shí),SAML發(fā)揮了其優(yōu)勢(shì)。同時(shí),SAML也可以為OAuth授權(quán)信息的交換與傳輸提供安全保護(hù)。(2)考慮到用戶對(duì)資源標(biāo)識(shí)方式的習(xí)慣和接受過(guò)程,Open-
ID使用URI和XRI作為標(biāo)識(shí)符,順應(yīng)了Internet信息空間中對(duì)資源的定位和標(biāo)識(shí)要求,但考慮到云計(jì)算還處于起步階段,還需要考慮用戶和資源建設(shè)與管理者的已有習(xí)慣,改變是必須的,但需要一個(gè)過(guò)程。
圖4所示的云計(jì)算統(tǒng)一身份認(rèn)證模型是一個(gè)開放的標(biāo)準(zhǔn),其主要功能是將云資源服務(wù)以安全便捷的方式提供給眾多的用戶,并通過(guò)開放的接入標(biāo)準(zhǔn)將更多的資源和用戶加入其中,不斷擴(kuò)大邏輯安全域的范圍,真正將云計(jì)算提出的SaaS、PaaS和IaaS理念變成現(xiàn)實(shí)。該模型兼容早期主流的SSO方式,可對(duì)原有系統(tǒng)進(jìn)行平穩(wěn)升級(jí),在最大限度地保護(hù)用戶原有投資和體驗(yàn)的同時(shí),擴(kuò)大了可共享資源的類型、數(shù)量和范圍。該模型具有的開放性實(shí)現(xiàn)了更多“安全域”的無(wú)縫加入,具體體現(xiàn)在具體操作和技術(shù)細(xì)節(jié)兩個(gè)方面。其中,具體操作規(guī)定了IdP和SP加入邏輯安全域時(shí)需要滿足的條件,如怎樣建立信任關(guān)系、約定身份信息和服務(wù)信息的共享規(guī)則、規(guī)定互相之間彼此信任和保密等;技術(shù)細(xì)節(jié)主要規(guī)定了IdP和SP加入邏輯安全域時(shí)需要滿足的技術(shù)條件以及如何執(zhí)行接入工作的技術(shù)細(xì)節(jié),如必備的標(biāo)準(zhǔn)類庫(kù)及二次開發(fā)接口等。
通過(guò)采用本文提出的模型,在不影響用戶對(duì)現(xiàn)有基于OpenSSO的統(tǒng)一身份認(rèn)證系統(tǒng)正常使用的同時(shí),減少了應(yīng)用開發(fā)的工作量,并實(shí)現(xiàn)了原認(rèn)證系統(tǒng)與新建平臺(tái)的有機(jī)對(duì)接,而且保留了原有的Agent、反向代理(Reverse Proxy)、API接入等應(yīng)用模式。基于3種協(xié)議規(guī)范的認(rèn)證和授權(quán),使得在邏輯安全域中本單位的“安全域”可同時(shí)提供IdP和SP雙重服務(wù)功能。
4 結(jié)論
統(tǒng)一身份認(rèn)證與云計(jì)算的融合,使得統(tǒng)一身份認(rèn)證技術(shù)成為云計(jì)算的助推器和催化劑,同時(shí)統(tǒng)一身份認(rèn)證技術(shù)也在云計(jì)算中找到了新的位置和發(fā)展方向。本文在繼承和發(fā)展身份認(rèn)證與資源授權(quán)領(lǐng)域已有技術(shù)、標(biāo)準(zhǔn)和規(guī)范的同時(shí),針對(duì)云計(jì)算安全管理,并聯(lián)系云計(jì)算項(xiàng)目研究實(shí)際,提出了云計(jì)算統(tǒng)一身份模型,具有較好的應(yīng)用價(jià)值和一定的借鑒意義。從總體來(lái)看,云計(jì)算尚處于快速發(fā)展階段,云計(jì)算中與系統(tǒng)安全與用戶管理相關(guān)的大量關(guān)鍵問(wèn)題還需要深入研究。
參考文獻(xiàn)
[1] 羅軍舟,金嘉暉,宋愛(ài)波,等.云計(jì)算:體系架構(gòu)與關(guān)鍵技術(shù)[J].通信學(xué)報(bào),2011,32(7):3-31.
[2] 林闖,蘇文博,孟坤,等.云計(jì)算安全:架構(gòu)、機(jī)制與模型評(píng)價(jià)[J].計(jì)算機(jī)學(xué)報(bào),2013,36(9):1765-1784.
[3] OASIS.Security Assertion Markup Language(SAML) V2.0 echnical overview(committee draft 02)[EB/OL].(2008-03-25)[2014-09-24].https://www.oasis-open.org/committees/download.php/27819/sstc-saml-tech-overview-2.0-cd-02.pdf.
[4] OASIS.Security Assertion Markup Language(SAML) v2.0(OASIS standard set)[EB/OL].(2005-03-15)[2014-09-24].http://docs.oasis-open.org/security/saml/v2.0/saml-2.0-os.zip.
[5] Internet Engineering Task Force(IETF).The OAuth 2.0 authorization framework(RFC 6749)[EB/OL].(2012-10)[2014-09].http://www.rfc-editor.org/rfc/pdfrfc/rfc6749.txt.pdf.
[6] OpenID authentication 2.0-final[EB/OL].(2007-12-05)[2014-09-24].http://openid.net/specs/openid-authentica-tion-2_0.html.
[7] OASIS.Extensible Resource Identifier(XRI) resolution ver-sion 2.0(committee draft 02)[EB/OL].(2007-10-25)[2014-09-24].http://docs.oasis-open.org/xri/2.0/specs/cd02/xri-resolution-V2.0-cd-02.pdf.
[8] Joaquin Miller.Yadis specification 1.0[EB/OL].(2006-03-18)[2014-09-24].http://yadis.org/papers/yadis-v1.0.pdf.