beauty_beast

上善若水 厚德载物

(转载)WebLogic Server 之安全(架构篇)

Posted on 2006-10-11 10:50 柳随风 阅读(1741) 评论(0)  编辑  收藏 所属分类: AppServer

WebLogic Server 之安全(架构篇)

本文来自http://www.chinaitpower.com/2005Nov/2005-11-23/209281.html
安全的变化可是WebLogic Server近期版本(7.0,8.1)最大的变化之一,全新的安全体系架构,既易于客户化安全解决方案的变化,又能实现细节和应用基础架构分离,使安全更易于部署,管理,维护和根据需求变化.同时也是支持最新的J2EE的标准和规范。本文试图从架构方面详细讲解WebLogic Server 7.0的安全体系及其相关细节,希望读者能对其机制有个框架层次和深度上的了解,文档参照了WebLogic Server 7.0的英文版手册,表述不当的地方,希望大家一起探讨。BTW,新出的WebLogic Server 8.1的安全架构完全和WebLogic Server 7.0一致。

WebLogic Security的基本特征

开放,灵活的架构。
1. 基于标准,易于理解的设计
2. 基于WebLogic Server应用的端对端的安全(从主机到浏览器)
3. 能与已存在的安全规则(Scheme)进行集成,从而有利于保护企业投资。
4. 安全的工具集成到一个灵活,统一架构的系统以便于在企业级进行安全管理
5. 通过将公司的业务规则和安全policies的对应,能方便实现根据业务需求客户化应用安全
6. 易于Security Policy的更新。
7. 易于客户化安全解决方案的变化。
8. 因为具有模块化的架构,因此安全架构能根据不同公司的特殊需求不断变化
9. 能够配置多个Security Provider
10. 安全实现细节和应用基础架构分离,使安全更易于部署,管理,维护和根据需求变化
11. 当前的WebLogic Security providers提供了和应用无关的可行的安全规则。(Scheme)
12. 使用WebLogic custom security provider进行客户化工作
13. 通过管理控制台进行统一的安全规则(Rule),Security Policy和Security Provider的统一管理
14. 对最新的J2EE安全技术的支持,包括JAAS(Java Authentication and Authorization Service),JSSE(java Secure Sockets Extensions),and JCE(java Cryptography Extensions)


易于使用:对最终用户而言,只需要登陆一次,就能访问所有资源(SSO),(限制在WebLogic Domain)
可管理:提供WebLogic security Provider,当前的Provider支持所有需要的安全功能,Security Data存放在WebLogic Server提供的LDAP Server中
客户化: WebLogic Security API,JAAS,JSSE custom security provider through SSPIs(WebLogic Server Security Service Provider Interfaces)

WebLogic Server Security从6.x到7.0的变化:

WebLogic Server 6.x WebLogic Server70
安全的API 非常多的已存在API不推荐使用,BEA建议使用基于J2EE规范的标准接口实现应用
JAAS认证 JAAS认证增强已提供对于IIOP和t3客户端访问的LoginModules
审计 无需实现WebLogic.security.Audit接口已在你的应用中加入审计功能,WebLogic Auditing provider已提供。
定义weblogic.xml和weblogic-ejb-jar.xml和weblogic-ra.xml中的安全需求 增强可以通过管理控制台定制
系统密码 没有指定的系统账号
ACL ACL已经不推荐使用,并由security policy代替
用户和组 仍然存在,并通过security policy将weblogic resouce赋予user,group或security role
6.x安全Realm 不推荐使用,但仍存在Realm Adapter当你进行安全的转换时
支持多个Security Provider
SSL 支持JSSE标准和TLS v1(Transport Layer Security)协议
支持J2EE JKS keystores

安全基础
Audit(审计):
提供对操作请求和请求输出的搜集,存储和发布,提供了对计算机行为的电子纪录。
在Security operations happens的前后,WebLogic调用Auditing Provider对特殊事件(基于audit criteria or serverity level)进行纪录同时写入LDAP Server,数据库或文件系统中。

Authentication(认证)
通过使用username/password组合来判断用户是否是一个系统的合法用户,主要回答"Who Are You?"的问题。

1. Principal & Subject
Principal认证通过后赋予用户或组的身份(Identity)Subject JAAS 要求通过subject,Container知道客户信息,包括pricipals
·Relationships Among Users, Groups, Principals and Subjects



成功的认证后,principal签名同时存在一个subject中,principal validation provider签名,并且Authentication Provider的LoginModule存放pricipal到subject中,当caller试图访问存在subject中的pricipal时,principal validation provider认证pricipal自签名后没有改变,然后principal回给caller.

2. JAAS
JAAS实现了java版本的PAM模块,允许应用和后层采用的认证技术,同时允许再不更改应用的情况下采用更新的或者变化了的安全认证技术。
WebLogic sever使用JAAS在胖客户端认证和内部认证,因此,只有客户化Authentication Provider的开发者和远程胖客户端需要直接使用JAAS, Thin 客户端和在container内的胖客户端(EJB throgh servelt)不需要直接使用JAAS.

·JAAS LoginModules
认证用户,发布Subject.不用于perimeter authentication

·JAAS Control Flags
Multiple Authentication provider configured
REQUIRED : 必须成功,如果失败,authentication继续其他的LoginModule(当前)
REQUISITE:必须成功,成功继续,不成功,将返回应用。
SUFFICIENT:不需要成功,如果成功,返回应用,如果失败,继续LoginModule List
OPTIONAL:允许成功或失败,但必须通过一个LoginModule

·CallBackHandlers
CallbackHandler 是为将参数或复杂对象传入方法中的一种高度灵活的规范。包括NameCallback:return username
PasswordCallback:return password
TextInputCallback: return 用户在Login form中输入的数据。
Security service将不同的Callback传入CallbackHandler要求获取不同类型的信息,CallbackHandler的实现决定如何根据不同的Callback获取和显示。

·Mutual Authentication
客户端和服务端都需要相互认证,WebLogic Server支持2-way SSL

·Identity Assertion Providers and LoginModules
当和LoginModules一起使用时,Identity Assertion provider支持Sigle-sign-on,LoginModule包含:

→ 客户化开发的Authentication Provider
→ BEA 开发的WebLogic Authentication Provider
→ 第三方的Authentication Provider

·Identity Assertion and Tokens
Identity Assertion Provider支持用户名的mapping,对应到weblogic server中的一个正确的token,能够开发Identitty Assertion Provider已支持多种token类型,但 只有一种为Active状态,同时只有一种Identity Assertion provider最终执行这一mapping的操作。

Authentication类型
WebLogic authentication provider支持的认证类型有:
用户名/口令认证:SSL,HTTPS
CA(Certification Authentication):当SSL或HTTPS客户请求发起时,WebLogic Server回应客户一个数字认证(digital certification),客户证实这个数字认证从而建立SSL联结,数字认证是由仍证机构CA发放。
Perimeter Authentication
主要用于应用服务器外的远程用户的认证过程
远程用户指定assert identity和相应得材料来完成。
Authentication agent能采用各种格式,VPN,Firewall,企业级认证服务。
Authentication agent处理认证过程同时导致artifact和token产生。Identity assertion的概联使weblogic server能使用perimeter authentication schemes提供的认证机制,比如Checkpoint's OPSEC,the emerging Security Assertion Markup Language(SAML), enhancement of Common Secure Interoperability(CSI)v2完成功能。



3. Authorization

Authorization在用户和weblogic 控制的资源中交互的进程,基于用户身份或其他信息。
Authorization主要回答的问题是"What can you access"

WebLogic resource:包含
管理资源
应用资源
COM资源
EIS资源
EJB
JDBC
JMS
JNDI
Server资源
URL资源
Web Service资源

·Security Policy
代替ACL,主要回答的问题是:Who have access to WebLogic resource?
当你将weblogic resource和用户,组,security role相关联时,Security Policy产生。
Security Policy存储在Authorization Provider的数据库中,当前的WebLogic Authorization provider存在LDAP Server中
BEA推荐在security role上建立security policy.

·ContextHandlers
从resource container中获取context和有关container的信息,为security provider做出访问或权限mapping决定的提供信息。

·Access Decisions
回答了"is access allowed?"的问题.Access Decision结果为PERMIT,DENY,ABSTAIN

·Adjudication
解决了当多个Authorization Provider提供授权时产生的冲突问题。Adjudication Server权衡多个Access Decision的结果,并且决定最终permit或者deny的结果。当唯一的Authorization provider返回结果为ABSTAIN时,Adjudication provider决定怎样处理。

·SSL
当前WebLogic Server支持1-way方式的SSL认证,使用管理控制台,能够配置2-way的SSL.
需要配置privite key,包括public key的数字证书(digital certificate),和至少由一个CA认证的数字证书(digital certificate),有可能需要安装root trusted CA's digital certificate.

为获取数字证书,自己生成public key,private key和认证签名请求(CSR)(包含public key),同时将CSR发到认证机构已得到签名的证书。
Public key存放在WebLogic domain目录下的文件系统中
Private key和通过认证的证书能存放在文件系统或通过WebLogic keystore provider提供的keystore中。

SSL提供
1) 应用间沟通的机制便于认证双方的身份
2) 应用间交换数据的加密。

Server authentication:WebLogic Server使用经过CA签名的数字证书,向客户认证。当客户不需要向Server证明自己的数字证书时,这种联接的方式叫1-way SSL认证。
Client Identity Verification:可选的,客户必须向WebLogic Server出示数字证书,WebLogic Server证实数字证书由CA发放同时建立SSL联结,这种方式叫2-way SSL认证。
Confidentiality所有客户的请求和Server的相应在网络上的传输都加密。
数据完整性:客户端和服务端传输的数据受保护。

SSL Tunneling
SSL是在基于IP协议上Tuneled.意味着每个SSL纪录被封装同时有使它在其他协议上发送的header来包装。

One-way/Two-way SSL认证
在One-way情况下,客户端通过两种方式检查数字认证
1. 检查数字认证在它的可信任认证机构中(CA)
2. 检查认证中的主机名和Server一致。

Domestic SSL和Exportable SSL
Exportable SSL支持512位证书和40-或50-位数据加密(标准支持)
Domestic SSL支持768位和 1024位证书和128位数据加密(Ask BEA Sales)

Security Realm(安全域)
Security Realm 包含整套保护WebLogic资源的机制,由一系列配置好的Security Provider,用户,组,security role,和security policy构成



·用户
当用户访问WebLogic Server时,通过JAAS LoginModule到认证提供者,如果通过认证,weblogic server通过一个线程将principal和用户相联,在用户线程开始执行代码前,WebLogic Server检查WebLogic resource的policy和principal以确认用户取得相应的要求的权限。

当定义一个用户时,WebLogic 对用户的密码进行加密,同时当WebLogic接收到客户请求时,客户端请求的密码被hash加密,同时和以存在的加密密码比较以判断是否符合。

·组
组是用户的逻辑组合。在一个Security Realm中,所有的用户和组必须唯一。

·Security Role
动态赋予用户和组,根据用户名,组的成员或一天中的某个时间。
能在一个WebLogic server的域中,针对单个应用定义资源。

在weblogic 6.x中,security role只能赋予web application 和 EJB, 在 70版本中,用户的security role能扩展到所有的WebLogic资源。

·Security Policy
Policy是WebLogic资源和用户,组,和Security Role的关联。用以保护WebLogic资源不收不被授权的用户访问。它代替了6.x中用的ACL

·Security Provider
对应用提供安全服务的模块,用以保护WebLogic资源,客户能够直接使用WebLogic Server直接提供的security provider,也能购买第三方的产品进行集成,或者开发自己的security provider.

Security Provider数据库
Security Provider数据库包含用户,组,role和policy,以及有些安全提供者使用的密码。比如Authentication provider要求用户和组的信息。Authorization provider要求安全policy方面的信息,Role Mapping Provider要求安全Role方面的信息,Credential Mapping provider要求resource Adapter用于联结后台的EIS系统的密码信息。这些信息都存放在数据库中。

Security provider的数据库在递一次使用security provider时候被初始化,所做的工作是
当WebLogic实例重起。
当一个security provider的Mbean被调用。

当你在一个security realm中配置了多个security provider,那么这些security provider将是用同一个security provider数据库。当你在不同的security realm中配置两个security provider或两个相同的security provider,他们将使用不同的provider database.,在一个时间只有一个security Realm处在激活状态。

·Embedded LDAP Server
Embedded LDAP Server被当前的WebLogic security provider使用作为数据库存储用户,组,role和policy. 是一个完整的LDAP Server,支持的操作有:
在LDAP Server中访问和修改
使用LDAP browser导入或导出安全的数据
被WebLogic security provider读写访问。
WebLogic Server不支持在Embedded LDAP Server中加入属性(Attribute)

WebLogic Security Provider Embedded LDAP Server Usage
Authentication Stores user and group information.
Identity Assertion Stores user and group information.
Authorization Stores security roles and security policies.
Adjudication None.
Role Mapping Supports dynamic role associations by obtaining a computed set of roles granted to a requestor for a given WebLogic resource.
Auditing None.
Credential Mapping Stores Username-Password credential mapping information.

·Security Provider的类型
Authentication Provider
主要用于:
用户名/密码的认证
直接和WebLogic Server基于证书的认证
通过外部的web server基于HTTP证书的认证代理

Identity Assertion Provider主要用于处理基于perimeter的认证和多个安全另牌(token)类型和协议。

在安全域中必须至少有一个Authentication provider,同时你可以配置多个Authentication Provider,意味着你有多个LoginModules,每个处理不同的认证。管理员配置不同的provider以便于当用户登陆系统时多个LoginModules怎样被调用。
Identity Assertion Provider
使用客户提供的可能存在于请求外的Token识别客户的身份。

WebLogic Security Service Architecture(架构)

Security Framwork



security framework提供的应用API被security和应用开发者定义安全服务使用,同时做为weblogic Container(Web和EJB),资源 Container和安全提供者间的中间层。

下面详细描述各层间的交互

·认证过程

当用户通过username/passwd组和登陆系统时,WebLogic建立信任同时对于每个JAAS请求回送包含principal的subject。

通过认证后,一个authentication context建立。


·Identity Assertion Process


主要用于perimeter authentication过程,当使用perimeter authentication时,外部系统传入token给Identity Assertion Provider.如果通过,Identity Assertion provider将token对应到相应的username,并将回送username到weblogic server,然后由WebLogic Server将username送回到JAAS的CallbackHandler并传递到每个配置的Authentication Provider的LoginModule模块,最后LoginModule能产生包含正确principal的Subject.

·Principal Validation Process



WebLogic将subject传递给principal validation Provider,后者将对principal进行签名并通过WebLogic Server把他回送客户的应用。以后principal validation provider将用来证明经过签名的subject中的principal没有被别人改过。


Authorization process



Authenorization process最初由用户或系统要求使用WebLogic Server资源时触发。Resource Container处理被请求的资源。 Resource Container调用WebLogic Security Framwork同时传递给它相应的请求subject和请求resource的信息。WebLogic framework调用配置的role mapping provider,同时将传递的信息转换成相应的格式,由Role Mapping provider回送role的列表给WebLogic security framework, Authorization provider决定subject是否有访问相关资源的权限,如果配有多个Authorization provider,WebLogic security framework决定任何有冲突的访问判断传递给Adjudication Provider,最后由Adjudication Provider决定最终的访问许可。

·Role Mapping Process



WebLogic security framework调用每个role mapping provider以得到请求的role list,如果security policy指定请求赋予相应的role,role就被加入到subject可用的role list中,同时role list 返回给WebLogic security framwork做为下一步访问控制的判断。

·Auditing Process



Authentication Provider除了提供认证服务外,需要发送audit事件,初始化AuditEvent对象(包含audit的event类型和audit的级别),Authentication Provider随后调用Audit Provider,同时传递AuditEvent对象,当AuditEvent和Auditing Provider配置的需要Audit的信息相同时,将被记录到文件系统,数据库或其他存储介质中。

·Credential Mapping Process



最初由应用组件(包括jsp,ejb,resource adapter)访问EIS系统(包括Oracle,SQL Server或其他)调用 WebLogic security framework时引发。应用组件传递subject(who),weblogic resource(what)和需要的credential。WebLogic security framework将请求传递给credential mapping provider,credential mapping provider处理请求,并将数据库中的credential回送weblogic security framework,最后将credential返回给组件层,组件层使用credential以访问EIS系统。

·weblogic security provider

缺省自带的security provider,如果不能满足你的需求,可以自己开发客户化的security provider.
→ 从weblogic.security.spi包中实现正确的SSPIs(security service provider interface)以生成security provider.
→ 建立Mbean的定义文件(MDF),使用Weblogic MbeanMaker工具生成Mbean类型。

weblogic authentication provider

代替了6.xFile realm的功能,支持用户名/密码认证,利用embedded LDAP Server存储用户和组的信息。

支持LDAP Authentication访问外部的LDAP 存储(Open LDAP,Netscape iPlanet,Microsoft Active Directory,Novell NDS)

WebLogic Identity Assertion Provider

支持X.509认证和CSIv2(CORBA Common Secure Interoperability version 2)身份认证。
WebLogic Identity Assertion provider验证token 的类型,然后将X.509数字认证和x.501的单一的名字和WebLogic 的用户名相对应。同样指定一信任的客户principal列表便于CSIv2的身份确认。统配符*用于指定所有的信任的principal.如果客户没有列入到信任的principal中,CSIv2 Identity Assertion将失败。
支持的token类型有

→ AU_TYPE -- WebLogic authenticationdUser
→ X509_TYPE X.509客户端
→ CSI_PRINCIPAL_TYPE CSIV2 principal name
→ CSI_ANONYMOUS_TYPE CSIV2 anonymous identity
CSI_X509_CERTCHAIN_TYPE CSIv2 X.509 certificate chain identity
→ CSI_DISTINGUISHED_NAME_TYPE CSIv2 distinguished name identity

WebLogic principal validation provider
WebLogic authorization provider
WebLogic adjudication provider
WebLogic role mapping provider
·WebLogic auditing provider
WebLogic credential mapping provider
以上provider功能在前面已经做了基本介绍。在此省略。

·Weblogic keystore provider
使用sun公司sdk提供的keystore实现,利用标准的JKS keystore类型,将keystore做为文件(每台机一个)来保存。有两种keystore 文件
→ 一个文件保存CA认证(CA certificates)
→ 另一个文件保存server的private key

·WebLogic realm adapter provider
主要用来提供和6.x安全域的兼容。Realm Adapter提供
Authentication(include Identity Assertion Provider)
Authorization
Auditing
Adjudication

仅仅用于升级且不建议使用。

 作者简介
聂健是(dev2dev ID: ericnie) Horizon Software Ltd. 技术顾问

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


网站导航: