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