文献标识码: 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.
