随笔 - 19, 文章 - 93, 评论 - 17, 引用 - 0
数据加载中……

SAML:集中身份管理的秘诀

SAML:集中身份管理的秘诀

<>http://www2.ccw.com.cn/05/0505/e/0505e04_1.asp</P>
SAML:集中身份管理的秘诀
<>
<B>■ 晓晨 编译</B>

</P>


<>


<P>身份管理是个复杂问题。它包括口令维护、用户配置和访问控制管理。本文着重介绍了身份管理中被SAML大大简化了的一部分,即基于角色的访问控制(RBAC)。越来越多的厂商在支持RBAC,因为它可以让管理员简化访问控制列表。
<P>曾经调查过一个数据:内部用户和外部伙伴同时在使用的口令有多少?回答居然超过15个。当然,他们可以把这15个口令全记在脑子里,每次需要访问新的资源、新的应用或者新的数据库时,找到相应的管理员。管理员会随叫随到,永不休假,而且始终会有后备管理员。当用户离开公司、被解雇或伙伴转眼间变成对手后,管理员总是会被告知要迅速取消他们的访问权限。在这种理想情况下,我们知道,CIO们总是会因为得到了用户反映的能非常容易地访问数据的夸奖而开心不已。
<P>解决这些问题的一个方法是身份管理。身份管理是指对用户配置、口令和访问控制的管理。访问权限通常存放在不同的位置,不同的应用和资源有着不同的访问控制列表。身份管理必须控制分布在不同位置上的数据、人员和资源的使用情况。过去,身份管理功能由许多不同的系统完成,比如,某一个程序处理用户的配置,另一个程序管理口令,轻型目录访问协议(LDAP)可保存验证信息,而每个应用程序(或管理员)则维持不同的用户访问控制列表。那时,维护、同步及更新这些不同功能是一件费力又费钱的事。
<P>为此,有人开发了结合身份管理等多项功能的验证/授权(AA)Web服务,向整个企业推行联合的单次登录方案,向加强身份管理这一目标迈出了第一步。这种AA Web服务是一种系列的多级服务,可以让用户登录一次,然后就可以调用Web服务、访问很多应用系统和数据资源。这种方法有两大好处:首先,它有助于简化身份管理,因为它把对访问控制的管理从本地的多个应用系统转移到了管理中心,如LDAP。其次,它提供了让Web服务可以访问数据的一般的方法。
<P><B>集中是关键</B>
<P>使用LDAP作为管理中心的办法可采用Jericho Systems公司提供的规则集。这家软件公司开发的EnterSpace产品将SAML服务和规则引擎作为安全包的一个部分。之所以选择Jericho Systems,是因为这家公司提供的产品物美价廉,而且愿意迁就各种限制。利用EnterSpace,你可以结合使用SAML、规则集以及定制的规则,把身份管理的所有部分与作为管理中心的LDAP联系起来。
<P>集中及联系配置、口令管理和访问控制让生活更简单。把身份管理流程与作为参考点和管理中心的LDAP联系起来是很自然的事。不过,LDAP通常用于验证,而不是用于授权。SAML便于把LDAP验证和访问授权联系起来。 
<P><B>SAML的作用</B>
<P>2002年11月,结构化信息标准促进组织(OASIS)批准了SAML作为商业合作伙伴之间交换验证和授权信息的可扩展标记语言(XML)框架,尤其是借助Web服务交换的信息。有了SAML,多家公司管理的站点之间就可以实现基于Web的安全兼容,如单次登录。
<P>SAML利用基本的Web服务标准,如XML、简单对象访问协议(SOAP)和传输层安全(TLS),支持安全交换验证和授权信息。RSA、Netegrity、IBM、Oracle、BEA、Oblix和Jericho等厂商已承诺支持SAML,并正在把这项规范实施到各自的产品中去。
<P>“SAML断言”(SAML Assertion)使用SOAP消息里面的标题通过HTTP进行传输,在断言管理方和转发方之间传输安全信息。比如,用户在某一站点登录后,SAML断言会传输用户验证令牌,其中提供了通过验证登录远程站点验证的手段。SAML封包包括验证令牌和用户属性,可以对照用于验证和访问控制的规则引擎进行检验。
<P>值得一提的是,SAML不负责验证,它只负责传输被验证的信息。另外,SAML可使用不同的验证管理机构,比如LDAP、活动目录和RADIUS,允许使用不同的识别方法,如口令、生物检测术、公钥基础设施(PKI)、安全套接层(SSL)和Kerberos等等。随后,作为传输机制,SAML传输用户已通过验证的断言信息。相比之下,SAML既不进行授权,也不传输访问控制信息。
<P>不妨把SAML想像成电影里由彪形大汉看守的一道门。如果某个可疑的人过来说:“是Joe让我来的”,这意味着Joe验证了该人身份,门卫会把他引到玩扑克牌的地方。如果一位光彩照人的女演员过来说:“是Rudolph让我来的”,门卫会先检查Rudolph的贵宾访问列表,找到她的名字后,一路护送她观看赌场。最后,如果詹姆斯·邦德亮一下卡,看一眼扫描装置,就可能通过了身份卡和虹膜扫描的验证。然后,验证系统会与识别哪些特工有权进入的授权列表作一个对照。
<P><B>SAML的安全风险</B>
<P>SAML可能会受到三种广为人知的安全攻击:
<P>重放攻击(replay attack):如果恶意黑客劫持SAML令牌后进行重放,获得非法访问权,就会发生这种攻击;
<P>DNS欺骗:如果黑客截获SAML令牌后,发送虚假的DNS地址,就会发生这种攻击;
<P>HTTP链接攻击(HTTP Referrer Attack):如果黑客重新使用HTTP链接标记,就会发生这种攻击。
<P>利用定时会话可以减小或者消除这三种攻击的威胁。可以采用以下办法来消除攻击:令牌只用一次,并且把令牌使用情况记入日志,这样重新使用就会被标出来;使用IP地址避免DNS欺骗;使用安全超文本传输协议(HTTPS)和SSL/TLS,消除HTTP攻击。专家和分析师一致认为,这些风险是可以缓解的;SAML为断言提供了一种安全标准。
<P><B>过程简介</B>
<P>AA Web服务按顺序执行安全操作。使用用户名和口令对与LDAP服务器上的信息进行对照,就可以识别及验证用户的独特身份。每次登录会话都会创建携有验证信息和用户信息的SAML令牌。用户通过使用定义访问控制的规则,获得访问数据资源的授权,而Jericho Systems的EnterSpace规则引擎负责评估。
<P>这个大体上的流程如图1所示。评估工作包括解析来自SAML令牌的信息,规则基于策略创建而成。因为规则控制访问,并体现策略,所以引擎通过实施规则来执行策略管理。非常笼统地说,用户基于LDAP信息、用户信息和访问规则获得访问权限。此外,用户离开公司后,他们的由LDAP管理的所有账户会被注销,所有访问权同时被取消。这样,你就可以基于作为管理中心的LDAP来集中管理身份。

图1 安全作业顺序
<P>为了加以说明,不妨看看图2所示的几个步骤。用户登录到桌面机上的客户端后,客户端通过本地LDAP(图中没有显示)对其进行验证。然后,客户端向SAML服务方发送包括返回验证信息的请求,SAML服务方对信息打包处理后供Web服务使用。Web服务就会通过发送查询给LDAP服务器(图中没有显示)核实SAML令牌里的验证信息。一旦通过了核实,Web服务就根据规则引擎中的规则,允许访问数据资源。然后,Web服务返回响应给客户端,从而完成用户的请求过程。

图2 验证/授权Web服务过程的重要参与者
<P><B>工作原理</B>
<P>AA服务是一种复杂的Web服务,遵守面向服务架构(SOA)的原则。它基于HTTPS上的SOAP,两者都是非专利性的开放标准,独立于软件语言或者厂商系统。它们不需要使用、许可或维护的费用。利用SOA原则进行设计意味着,你可用模块化方式构建这项Web服务,为了使用和维护的方便性,必要时可以删除或者更换它。因此,你不必改动其他部分,就可以改动架构的任何部分。
<P>AA服务使用本地域LDAP进行验证及随后基于SAML的安全断言。SAML令牌用来把断言传输到可信资源,再由可信资源允许或拒绝对数据资源的访问。
<P>这种功能类似驾驶执照:机动车辆管理局(DMV)就是管理方(好比LDAP),负责核实你的身份及驾驶资格。交警充当可信资源,负责向DMV复核身份,然后根据目前的驾驶资格或者道路规则,批准或者禁止某驾驶员是否有权驾驶。
<P>AA服务在使用规则引擎评估授权规则时,以允许或拒绝访问数据资源限定条件的安全策略为基础。引擎规则对加强策略管理来说是核心所在。
<P>使用LDAP作为管理方还有助于实现身份集中管理。不是在单个资源处管理资源访问,而是使用LDAP和定义用户角色及相应数据参数(如部门和管理级别)的相应策略,来管理用户访问列表。
<P>以下是这个过程的几个重要步骤:
<P>第1步:用户登录。用户需要访问数据资源,于是使用SOAP客户端利用用户名和口令对进行登录。客户端把用户名和口令对(还有可能是其他安全因素)传送给LDAP进行验证。LDAP核实用户后,把信息返回给客户端。
<P>第2步:SAML令牌。SOAP客户端把返回的LDAP信息及其他用户信息传送给SAML客户端。该服务方会按正确格式把信息打包成SAML令牌,SAML客户端把令牌返回给SOAP客户端,然后SOAP客户端把SAML令牌和用户请求打包成SOAP请求。
<P>第3步:SAML会话开始。SOAP客户端开启定时的SAML会话,并发送SOAP请求给相应的Web服务,以满足用户需求。Web服务解析SAML令牌后,通过LDAP核实验证信息。这样,用户只要登录一次:每个Web服务都可以充当用户代理,并获得数据资源的信任,因为Web服务核实了请求信息。
<P>第4步: 授权。经验证后,Web服务发送请求给运行规则引擎的SAML服务器。SAML在这一步并不是绝对必要的,但对我们来说很方便。规则引擎评估用户参数后,确定授权用户的访问级别。评估工作基于体现一组预定访问策略的规则进行。访问级别核实信息返回给Web服务。
<P>第5步: 请求完成。Web服务请求数据源提供数据,把请求结果打包成SOAP响应,然后发回给SOAP客户端。SOAP客户端再把数据提供给用户,同时终止SAML会话。SAML令牌期满,不能重复使用。
<P><B>集中就是统一</B>
<P>总的说来,我们建立的基于SAML的AA Web服务依靠LDAP作为管理中心。使用LDAP和执行安全策略的授权规则引擎可以实现集中身份管理。集中身份管理的一个好处是,可以获得简化和统一的访问控制管理。
<P>集中身份管理意味着,你可以在某一个点管理访问控制列表。比如,终止某个员工的账户就可以终止与中央账户(这里是LDAP)相关的所有访问。这种Web服务为断言、认证和服务提供了通用服务。开发人员可以调用这种Web服务,允许Web服务访问所需的应用和数据资源。
<P><B>所汲取经验</B>
<P>SAML传输的是令牌,它不是验证或者授权机制。为了缓解风险,SAML系统使用定时会话、IP地址、HTTPS和SSL/TLS。安全Web服务非常复杂,涉及法律、安全和政治等方面。
<P>使用LDAP作为管理中心可以实现集中身份管理。规则引擎为访问控制和策略管理提供了有效而灵活的方案(它同时支持基于角色和基于属性的访问控制)。
<P>可以简化身份管理,首先是因为可以在LDAP处激活或者禁用账户。其次,可以避免费用,因为可以集中及减少验证应用,减少审查风险。最后,可以简化身份管理,是因为账户管理使用现有的LDAP服务,从而减少了开销、加强了同步。
(计算机世界报 第05期 B25、B26) </P></P>

posted on 2006-04-20 11:58 BPM 阅读(736) 评论(0)  编辑  收藏 所属分类: Java 安全标准


只有注册用户登录后才能发表评论。


网站导航: