4 Security-4 PDF

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 92

IBM Software Group, Business Partner Technical Support (BPTS)

WebSphere Software

WebSphere Application Server


Security

© 2011 IBM Corporation


WebSphere Software

议程

 安全概览
 WebSphere的安全模型
 Java EE应用程序安全性
 Java2 安全性
 认证
 Java Authorization Contract for Containers (JACC) 规范
 在WebSphere 中集成Tivoli Access Manager (TAM)

2 © 2011 IBM Corporation


WebSphere Software

安全基础

3 © 2011 IBM Corporation


WebSphere Software

认证 (Authentication)

 认证:指在特定的业务上下文中校验客户机是否合法的过程
– 客户机可以是终端用户,机器或应用程序

 认证机制:定义了安全信息的规则和安全信息在凭证(Credential)和标记(Token)中的存储格式
– 凭证是否传播到其它进程
– 当前支持的认证机制包括LTPA和Kerberos

 使用认证存储库来校验用户身份
– 存储库存储 userid, password 和其它用户信息
– 证书提供了另外一种形式的用户标识
– WebSphere支持以下种类的用户存储库
• Local OS
• LDAP
• 联合存储库
• Custom Registry
 可通过JAAS方式定制认证过程
4
© 2011 IBM Corporation
WebSphere Software

认证 (cont.)

 此外,WAS支持SSO,信任关联和安全上下文传播
– SSO :访问多个应用服务器上的资源时,只执行一次认证
– 信任关联:信任关联允许第三方RPSS作为前端认证服务器来为WAS提供Web HTTP请求
的认证
• 增强信任关联容许第三方RPSS在安全标识之外增加声明安全属性
– 安全上下文传播:指在多层的请求链上将客户机安全标识和安全属性从前端认证服务器传
播到后端WebSphere应用服务器

5
© 2011 IBM Corporation
WebSphere Software

授权

 授权指校验客户机是否有执行某项操作的适当权限的过程
– 授权信息可以以多种方式存储
• ACL, Capability lists

 基于J2EE用户角色的授权
– 在组装过程中,方法的许可权被授予特定角色
– 角色定义了应用程序中的权限集合
– 在部署阶段,实际的用户和组被映射到角色中

6
© 2011 IBM Corporation
WebSphere Software

访问抉择的示例

 要求用户提供凭证(用户名/密码)
 检查凭证是否有效,如果有效,则创建一个包含用户信息(包括用户所属的组)的主题
 从部署描述文件中获取方法调用所需要的角色r
 从绑定文件中获取用户对应的角色
 如果执行操作所需要的角色与分配的角色相匹配,那么访问将被允许
– 否则拒绝

调用Method() J2EE
请求
服务器

7 © 2011 IBM Corporation


WebSphere Software

WebSphere安全模型

8 © 2011 IBM Corporation


WebSphere Software

安全层次
HTML,
WebSphere/应用程序 命名,
Servlet/JSPs,
资源 管理
EJBs

访问控制
WebSphere 安全 WebSphere 安全

J2EE 安全API

CORBA 安全/ CSIv2


Java 安全
Java 2 安全

JVM 1.4 安全

平台安全 OS 安全

9 © 2011 IBM Corporation


WebSphere Software

Security 层次

10 © 2011 IBM Corporation


WebSphere Software

Java2, JAAS, J2EE 安全功能比较

 Java2 安全– 控制对系统资源的访问


– 基于代码的位置和谁对其进行签名来实施访问控制-而不是基于用户身份
– 在策略文件中定义
– 在运行环境中实施
 JAAS 安全– 身份认证和授权
– 基于当前用户(Principle)/主体(Subject)实施访问控制
– 在应用程序的代码中定义
– 通过编程实现
 J2EE 安全- 授权
– 基于角色的安全
– 在配置文件或应用程序代码中定义
– 通过运行时环境和/或编程方式实施

11 © 2011 IBM Corporation


WebSphere Software

WebSphere v6 安全

 安全配置和设置在ND单元中是整个单元有效的
– 部署管理器, 所有的节点代理以及所有的服务器都应用相同的安全配置
• 认证机制、存储库等等
– 在单个应用服务器上可以对某些安全设置进行覆盖
• 关闭应用程序安全
 必须启用全局安全

12 © 2011 IBM Corporation


WebSphere Software

WebSphere V6中的SSL (Secure Sockets Layer ,安全套接层)

 SSL提供了传输层安全性,可以保证信息的真实,完整(防篡改)和私密(加密)性,为客户机和
服务器提供安全的连接

 在WAS中,多个组件都用到了SSL
– Web容器中的内嵌的HTTP 服务器使用HTTP over SSL
– ORB 组件使用IIOP over SSL
– LDAP客户机使用LDAP over SSL连接到LDAP用户存储库

 管理:
– 可通过管理控制台,命令以及其它工具(IKEYMAN)完成SSL的各项配置
– 包括密钥库(密钥库,信任密钥库),证书,SSL属性等的配置
– 定义完成以后,可以在需要的时候使用SSL定义

13 © 2011 IBM Corporation


WebSphere Software

J2EE 应用程序安全性

14 © 2011 IBM Corporation


WebSphere Software

创建安全的J2EE应用程序:概述

 J2EE应用程序级别的安全性通过安全角色进行指定
 安全角色允许开发人员在抽象的级别指定安全设置
 安全角色应用到Web和EJB应用程序
– EJB methods 或 Web URLs
 可以通过以下方式进行安全性设置
– 在应用组装阶段通过部署描述符声明
– 在开发阶段应用程序调用标准API进行控制
 用户和用户组与J2EE安全角色的绑定通常在应用程序部署阶段完成
– 也可在应用程序部署完成后再行配置

15 © 2011 IBM Corporation


WebSphere Software

J2EE 安全角色:应用程序授权

Web Module
Servlets,
 通过J2EE安全角色进行授权 JSPs,
– 在抽象层定义安全性,不需要指定实际的用户或用户组 HTMLs

 安全角色应用到Web和EJB应用程序组件
– EJB 方法或 Web URIs EJBs

 用户和用户组与J2EE安全角色的绑定通常在应用程序安装阶段完 EJB Module



– 绑定信息可以存储在IBM绑定文件(默认)或使用JACC提供 J2EE
者(如TAM, Tivoli Access Manager)中 Security
Roles

Binding

Users/
Groups

16 © 2011 IBM Corporation


WebSphere Software

J2EE应用程序组件的安全控制

安全绑定 安全许可

EJB
Jack Method

Manager EJB
Method
Bob
EJB
Method

Teller Enterprise Java


Mary Bean (EJB)

Servlet

Customer
JSP
Clients
J2EE HTML,
通常由部署 安全角色 通常由应用组装人 GIFs,
实际用户/用户组 人员完成 员或开发人员完成
etc.

Web Components

17 © 2011 IBM Corporation


WebSphere Software

J2EE 安全: 基于角色授权的EJB


Roles Users and/or Groups
Security Role Binding Customer Clients, Jack
(Administrator) Teller Mary
Manager Mary, Bob

Assign Method permissions


(Assembler) Customer Specify Security Roles
(Assembler)
Roles Methods Teller
Customer getBalance()
Manager
Teller, getBalance() Specify Security Role
Manager Reference (Developer)
setBalance()
Manager create() Internal Name Security Role
Supervisor Manager
实现
Bank EJB public int getBalance(…) {
if (isCallerInRole(“Supervisor”)) {
By developer Perform Some Function
}
}
18
© 2011 IBM Corporation
WebSphere Software

EJB 应用程序编程API

 IsCallerInRole (String role-name)


– 如果bean调用者隶属于指定的安全角色则返回为true
– 如果调用者没有指定的角色,或者调用者未经过认证,则返回false
– 如果每指定角色被授权给Everyone,则该方法总是返回true
– 安全角色引用必须定义在部署描述符中
 getCallerPrincipal():
– 返回java.security.Principal 对象,其中包含调用者名称
– 如果调用者没有通过认证,则返回一个包含UNAUTHENTICATED名称的principal对象

示例:
public void myEJBmethod() {

// to get bean's caller using getCallerPrincipal()
java.security.Principal principal = context.getCallerPrincipal();
String callerId= principal.getName();
// to check if bean's caller is granted Mgr role
boolean isMgr = context.isCallerInRole("Mgr");

}

19 © 2011 IBM Corporation


WebSphere Software

J2EE 安全: 基于角色授权的Servlet, JSP


Roles Users and/or Groups
Security Role Binding Customer Clients, Jack
(Administrator) Teller Mary
Manager Mary, Bob

Assign Method permissions


(Assembler) Customer Specify Security roles
(Assembler)
Roles Methods URL Teller
Customer Post /Bank/Welcome/*
Teller Post, Put /Bank/Balance/*.jsp Manager
Specify Security Role
Manager Post, Delete, /Bank/* Reference (Developer)
Put
Internal Name Security Role
Supervisor Manager
implementation public doGet(…) {
if (isUserInRole(“Supervisor”))
Perform Some Function
else
Throw Security Exception
}
20
© 2011 IBM Corporation
WebSphere Software

Web应用程序编程API接口

 isUserInRole (String role-name):


– 如果远程用户被赋予了指定的安全角色则返回值为true,如果远程用户没有被赋予指定的
安全角色或用户没有通过身份认证,则返回为false
 getUserPrincipal(): 返回包含远程用户名的 java.security.Principal
 getRemoteUser(): 返回客户端用来身份认证的用户名

例如:
public void doGet(HttpServletRequest request, HttpServletResponse response) {
// to get remote user using getUserPrincipal()
java.security.Principal principal = request.getUserPrincipal();
String remoteUser = principal.getName();
// to get remote user using getRemoteUser()
remoteUser = request.getRemoteUser();
// to check if remote user is granted Manager role, using isUserInRole
boolean isMgr = request.isUserInRole("Manager");
}
21 © 2011 IBM Corporation
WebSphere Software

web应用程序身份认证的类型

 Basic
– 应用服务器向Web客户端(Browser)发送一个
501信号,客户端收到信号后弹出对话框提示
用户输入用户ID和密码

 Form based
– 使用定制登陆表单来来输入认证信息

 客户端认证
– 通过SSL安全连接将客户机证书发送给应用服
务器完成认证

22 © 2011 IBM Corporation


WebSphere Software

改变身份: Run-As

 Web 应用程序中的Servlet 或JSP在调用下游的进程或EJB的时候可以改变用户身份


– 这和EJB方法中提供的功能相类似
 这称作 “Run-As” 身份
 下面是两个 “Run-As” 选项

Run-As 选项 描述

Client Identity Bean将使用调用者相同的身份

Another Specified Role Bean将使用指定角色中的特定用户的身份


指定角色定义在部署描述符中,由组装人员完成配置
“Run-As”角色中的用户通常在部署时指定

23 © 2011 IBM Corporation


WebSphere Software

J2EE 安全性全景
WebSphere Application Server
EJB Container
Web Container CSIv2
Web HTTP(S) TCP/IP,
Clients Userid/password, Token Servlets, SSL Security
Or Client Certificate JSPs, HTMLs Server
J2EE
Security Security Token or
JAAS EJB Users/
CSIv2 Roles Identity Assertion
Clients s Groups
TCP/IP, SSL
JACC Provider
EJB Container
Userid/Password, binding
Token Credential Users/
Groups
Authenticate, Map Credential,
Authorize, Access Control
Authentication
Authentication
Authorization Authenticate User Registry
CSIv2 Protection Domain
Security Manager
Access Controller
Java 2 Security Permissions Java 2
Policy
Security Server Files

24 © 2011 IBM Corporation


WebSphere Software

Java2 安全

25 © 2011 IBM Corporation


WebSphere Software

Java 2 安全 JVM

Protection Domain
Java Security Manager System
Class Access Controller Resource
 提供应用程序对系统级别资源访问的访问 Java 2 Security
控制机制 Permissions

– 文件I/O, 网络连接(Sockets), 属性文件


等等 Java 2
– 基于策略 Policy
Files

 策略为不同签署者和/或代码位置定义了一
组许可权  Java代码需要访问某些系统资源
– 存储在策略文件中
 Java代码需要从Java2 Access Control
获得许可
 所有的java代码都运行在某个安全策略下
– 许可访问某些确定的资源  Access Control查看Java 2策略文件以
确定java 代码是否具有相应的权限

26 © 2011 IBM Corporation


WebSphere Software

WebSphere的策略文件
Policy File Default Location Description
java.policy <PROFILE_HOME>/java/jre/lib/security/java 授予所有类的默认权限
.policy

server.policy <PROFILE_HOME>/properties/server.policy 授予所有服务器的默认权限


静态策略

client.policy <PROFILE_HOME>/properties/client.policy 授予节点上所有客户机容器和applet的默认权限


client.policy

filter.policy <PROFILE_HOME>/config/cells/cell_name 用来滤除在其它策略文件中指定的策略,这使得系统


管理员可以提供全局保护,即便其它策略文件赋予了
相应权限

spi.policy <PROFILE_HOME>/config/cells/cell_name/ 用于指定SPI(Service Provider Interface ,服务提供


nodes/node_name/spi.policy 者接口)或产品中嵌入的第三方资源的策略
动态策略

library.policy <PROFILE_HOME>/config/cells/cell_name/ 为应用程序使用的共享类库(java类库)定义的策略,


nodes/node_name/library.policy 默认为空

app.policy <PROFILE_HOME>/config/cells/cell_name 授予指定节点上所有运行应用程序的默认权限

ra.xml rar_file_name/META-INF/was.policy.RAR 特定资源适配器的默认许可权,嵌在RAR文件中

was.policy Within each application –policies provided 描述应用程序的策略,如果没有指定,则会创建一个


by developer 默认策略文件

27 © 2011 IBM Corporation


WebSphere Software

动态策略文件中使用的有效符号
动态策略文件中使用有效符号 描述

file:${application} 许可权适用于应用程序中的所有资源

file:${jars} 许可权适用于应用程序中所有工具类库JAR文件

file:${ejbComponent} 许可权适用于应用程序中所有EJB资源

file:${ejbComponent} 许可权适用于应用程序中所有web资源

file:${connectorComponent} 许可权适用于应用程序中所有连接器资源

示例
grant codeBase "file:${application}" { permission java.io.FilePermission
"${user.install.root}${/}bin${/}DefaultDB${/}-", "read,write,delete"; };
> Grants Java code in “IncCMP11.jar” file I/O permission to read/write
files in WebSphere install root bin/DefaultDB directory

28
© 2011 IBM Corporation
WebSphere Software

Java 2 安全: 过滤器

 包含需要从单元的某些策略文件中过滤掉的许可权-支持选择性地禁用java 2 安全性
– 提供对was.policy 的”过滤”
– 会对定制许可权发出警告 (非java.* 或javax.*)
– 会对java.security.AllPermission发出警告
 该过滤机制只适用于was.policy 和app.policy 文件
 默认的WebSphere 策略文件:
– filterMask {
– permission java.lang.RuntimePermission "exitVM";
– permission java.lang.RuntimePermission "createSecurityManager";
– permission java.lang.RuntimePermission "setSecurityManager";
– };
 能够起作用的应用程序策略就变成了:
– app.policy + was.policy + java.policy “-" filter.policy

29 © 2011 IBM Corporation


WebSphere Software

启用Java 2 安全

 当全局安全打开时就启用了java 2安全
– 可以在全局安全打开的情况下手动禁用java 2安全性
– 在打开java 2安全性之前需要对已有的应用程序进行测试
 向已安装的应用程序添加java 2 安全
– 对于单个的应用程序,策略文件“was.policy”位于企业应用程序的META-INF目录下
– 如果没有提供该配置文件,在安装过程中会创建一个默认策略文件
 添加/修改was.policy
– 使用AST或Rational® 工具将was.policy添加或重新安装到EAR中
– 这种方式为推荐方式,且一般不易出错
– 将was.policy 文件放到安装应用程序的文件系统适当的目录下
• <WAS_PROFILE_DIR>/config/application/<application>.ear/META-INF/
 创建或修改策略文件的工具policyTool ,JDK的组成部分,位于java/jre/bin/policytool目录下
– 建议使用工具而不是手动编辑

30 © 2011 IBM Corporation


WebSphere Software

认证

31 © 2011 IBM Corporation


WebSphere Software

JAAS 认证与授权

 使用编程接口方式认证身份和执行授权
– JDK™ 1.4开始纳入该项功能

 JAAS认证可以利用多种认证技术
– LTPA 令牌, Kerberos z/OS上的 ICSF令牌, SWAM

 JASS授权机制扩展了Java 2安全框架
– Java 2安全是以“代码为中心”的
• 权限是授给code base和代码的创建(签署) 者
– JAAS 是 以“用户为中心”的,基于实际运行代码的用户
• 使用Java2 安全策略设置用户的许可权
• 与JAAS的认证服务独立

32 © 2011 IBM Corporation


WebSphere Software

可插拔认证
用户存储库接口
认证请求
实现

认证机制– 用户存储库
JAAS 实现
定制用户
使用 存储库
实现
LTPA Kerberos LDAP 本地操作 联合
Lgoin 用户存储 系统存储 存储库
Module 库 库

 认证过程需要认证机制和适当的用户存储库
 在任意时刻,只能启用一个认证机制和用户存储库
– 可以使用定制用户存储库可以从多个不同的存储库检索用户信息
 V7及以后版本,可以通过多安全域方式灵活定制安全性

33
© 2011 IBM Corporation
WebSphere Software

认证机制: 信息流示意

34 © 2011 IBM Corporation


WebSphere Software

Local Third Party Authentication(LTPA)

 用于分布式,多应用服务器和机器环境

 支持Credentials转发和SSO

 LTPA协议使用加密密钥(LTPA密钥)来加密和解密的服务器之间传递的用户数据
– 如果服务器位于不同的单元中,则需要共享LTPA密钥
• 在管理控制台中生成,导出和导入LTPA密钥
– 必须同步域中的所有服务器

35 © 2011 IBM Corporation


WebSphere Software

LTPA身份验证过程和调用

 用于分布式环境 - 支持Credentials转发和SSO
 在使用LTPA时会生成一个令牌(LTPA Token),其中包含用户信息、过期时间,并使用密钥签

 LTPA协议使用加密密钥来实现服务器之间传递的用户的数据完整性(签名)和数据的保密性
(加密)

36 © 2011 IBM Corporation


WebSphere Software

认证用户存储库

37 © 2011 IBM Corporation


WebSphere Software

用户存储库

 WebSphere Application Server 支持以下几种用户存储库


– 本地操作系统
– 独立LDAP注册表
– 独立定制注册表
– 联合存储库
 在ND单元中,同时只能激活一个用户存储库
– 虽然只可以激活一个用户存储库,但可以开发一个访问多个用户注册表的定制用户注册表
或者使用联合存储库
– 在V7及以后版本中,可以通过多安全域扩配置用户存储库

38 © 2011 IBM Corporation


WebSphere Software

用户存储库: 本地操作系统

 使用本地操作系统执行用户和组的认证

 需要提供用户ID和密码

 支持Windows® 本地账户注册表和域注册表, 支持Linux®, Solaris, AIX®, HP-UX 用户账户注


册表
– Windows Active Directory可通过LDAP用户注册表来支持

 本地操作系统用户注册表不是集中管理的,因此多数情况下在单服务器环境下使用
– Windows域用户注册表例外

39 © 2011 IBM Corporation


WebSphere Software

用户存储库: LDAP

 LDAP服务器充当用户和组信息的存储库

 WAS调用LDAP服务器获得用户或组信息
– 支持用户和组的过滤

 需要指定以下LDAP服务器的配置:
– 有效的服务器用户名(ID),用户密码,服务器主机地址和端口,以及基础识别名称(base
distinguished name ,DN)
– 如果LDAP服务器不支持匿名绑定,那么指定的绑定识别名称(bind DN)和绑定密码(bind
password)

40 © 2011 IBM Corporation


WebSphere Software

用户存储库: 定制注册表

 允许插入自己实现的用户注册表

 编写Java™程序实现WebSphere应用服务器提供的接口
com.ibm.websphere.security.UserRegistry
– 实现不应依赖于WebSphere应用服务器的资源(例如,数据源等)

 要配置定制注册表,您需要提供以下信息:
– 定制注册表实现类的完全限定名
– 有效的服务器用户ID和密码
– 实现类所需要的定制属性

41 © 2011 IBM Corporation


WebSphere Software

( Common Secure Interoperability


Version 2 ,CSIv2)

42 © 2011 IBM Corporation


WebSphere Software

CSIv2: EJB安全的认证协议

 通用安全互操作规范,版本2(CSIv2)
– 定义了安全属性服务(Security Attribute Service, SAS),实现了互操作认证,委托
(Delegation)和特权(Privileges)
– 该标准由对象管理组织(OMG)定义,提供跨J2EE服务器的开放、安全的互操作通用框

 CSIv2协议作为高级协议简化了互操作性,底层使用统一的安全传输(SSL/TLS)

 CSIv2配置已集成在WAS的安全管理中

43 © 2011 IBM Corporation


WebSphere Software

CSIv2 认证

 CSIv2提供三个层次的认证功能

使用身份令牌支持上 属性层具有最高的优先级,然后是消
属性层 游服务器的身份断言 息层,最后是传输层。

使用用户ID /密码或
如果客户端三种认证均发送,只会使
消息层 带有过期时间认证令
用属性层的身份令牌(Identity token)

使用SSL客户端证书
传输层 提供身份信息

44 © 2011 IBM Corporation


WebSphere Software

配置设置

45 © 2011 IBM Corporation


WebSphere Software

CSIv2、SAS TCP/ IP和SSL入站端口

 基于所做的选择,服务器会打开以
下监听接口 Servers > Application Servers
– SSL-required : 只打开SSL端口 > server_name > Ports
– SSL-supported: 打开TCP/IP 和
SSL 端口
– TCP/IP :只打开 TCP/IP 端口

端口 描述

CSIV2_SSL_MUTUALAUTH_LISTENER_ADDRESS 客户端认证SSL端口

CSIV2_SSL_SERVERAUTH_LISTENER_ADDRESS CSIv2 SSL 端口

SAS_SSL_SERVERAUTH_LISTENER_ADDRESS SAS SSL 端口

ORB_LISTENER_PORT TCP/IP 端口

Note: For server to dynamically assign port numbers to these ports, specify a value of 0

46 © 2011 IBM Corporation


WebSphere Software

CSIv2 认证配置

47 © 2011 IBM Corporation


WebSphere Software

单点登录(Single Sign-On,SSO)

48 © 2011 IBM Corporation


WebSphere Software

单点登录(Single Sign-On,SSO)

 SSO是一种机制,允许在HTTP客户端在通过任意服务器的认证后,就自动通过了同一网络部
署单元或跨单元中的其它服务器的认证。

 在参与SSO的域内,如果跨越多个单元则需要LTPA或Kerberos认证机制
– 为了让SSO能够工作,必须在不同单元的服务器之间共享LTPA密钥和用户存储库

 SSO域(Domain)中的每个系统必须要有相同的域名(Realm names)
– 对于本地操作系统
• 在windows平台上,如果使用Domain,那么Realm names就是Domain Name。否则
Realm names是机器名
• 在UNIX平台上,Realm Name是主机名(hostname)
– 对于LDAP,安全域名就是LDAP服务器的host:port

49 © 2011 IBM Corporation


WebSphere Software

SSO:如何工作? HTTP响应中包含带有
LTPA令牌的Cookie
Cookie的内容中包含所支
持的域名(Domains)

50 © 2011 IBM Corporation


WebSphere Software

SSO: 管理
Security > Secure administration, applications, and infrastructure

指定来自客户端的链
接必须支持SSL
(推荐)

在这里可以指定多个
Domain

启用时,安全属性传播
到前端服务器
禁用时,SSO令牌用于
登录并重建来自用户注
可互操作的cookie发送回浏览 册表的主题(Subject)
器,支持后台级服务器

51 © 2011 IBM Corporation


WebSphere Software

SSO 域- 可能的域名值

可能的域名值 备注和示例
空白 不发送域名-SSO只在本服务器上生效

单个域名(Domain Name) 示例: austin.ibm.com


此域名的任何子网都会参与SSO
例如 hostA.austin.ibm.com可以参与SSO,但
hostA.raleigh.ibm.com就不能参与
“UseDomainFromURL” SSO域名将使用请求所使用的域名
例如,如果一个HTTP请求来自
clientA.raleigh.ibm.com,WebSphere应用服务器将会把
SSO域名设为raleigh.ibm.com

Multiple domain names, separated by a 例如: austin.ibm.com;raleigh.ibm.com


valid delimiter (semi-colon, space, pipe,
来自以上域的任何主机都可以参与SSO
comma)
多域名和UseDomainFromURL 示例: austin.ibm.com;raleigh.ibm.com;
UseDomainFromURL
如果HTTP请求URL主机地址是rchland.ibm.com,那么
austin.ibm.com, raleigh.ibm.com 以及rchland.ibm.com都
可以参与SSO

52
© 2011 IBM Corporation
WebSphere Software

信任关联(Trust Association)

53 © 2011 IBM Corporation


WebSphere Software

信任关联

 允许第三方反向代理服务器(RPSS)作为进入WAS的Web Http请求的前端认证服务器

 WAS使用代理服务器的信任关联拦截器( Trust Association interceptors,TAI)对RPSS进行验


证。
– 新TAI接口允许返回的主题(Subject)包含用户属性的哈希表以阻止重复登录

 可将WAS设置为只使用代理服务器接受HTTP请求,或亦可同时直接接受HTTP请求

54 © 2011 IBM Corporation


WebSphere Software

信任关联: 如何工作

HTTP 请求: BasicAuth中的 user ID/password


修改后的HTTP请求: BasicAuth 中的Trusted Server ID/password
和HTTP请求头中的user id

User
Modified Registry
User ID
HTTP HTTP
Request Request Credentials
Reverse (4)
Web (1) Proxy (2) Web
Client Server Authenticator Modified
HTTP
(6) (5)
Requested Requested
Resource Resource (3) Trust
user id Association
If trust is valid Interceptor

55 © 2011 IBM Corporation


WebSphere Software

信任联名– 管理
Security > Secure administration, applications, and infrastructure

List of TAI
Predefined TAI for TAM
and WebSeal already
Included

启用信任关联

56 © 2011 IBM Corporation


WebSphere Software

JACC 规范

57 © 2011 IBM Corporation


WebSphere Software

JACC 介绍

 Java Authorization Contract for Containers(JACC)是J2EE 1.4引入的新规范


 允许使用标准接口将授权提供程序嵌入如WAS的应用服务器进行访问决策
– JACC同时为EJB和Web容器定义了许可权类
– 同时处理J2SE和J2EE许可权
 客户可以选择他们的JACC提供程序来管理授权策略
 Tivoli Access Manager (TAM)是WAS 默认的JACC提供者

58 © 2011 IBM Corporation


WebSphere Software

JACC 示例

WebSphere Application JACC Provider


Server Contract

Application
PolicyConfiguration
Installation

Provider Repository

 WAS中启用安全性和JACC
 Web和EJB访问决策委托给JACC提供程序

59 © 2011 IBM Corporation


WebSphere Software

使用JACC部署应用程序

 在应用程序安装阶段,将部署描述符中的安全策略转换成适当的的许可对象(Permission
Objects)
 将许可对象与适当的角色进行关联
 为在部署的模块创建唯一的标识符(contextID)
 使用提供程序实现的PolicyConfiguration对象将信息传播给提供程序
 链接应用程序中的所有模块并提交

60 © 2011 IBM Corporation


WebSphere Software

应用服务器容器要求

Provider Repository
WebSphere
Application Server
Access J2EE Check
resource access
EJB/Web Policy Object
yes/no Container yes/no
JACC Provider
Contract

 为正在访问的模块创建ContextID
 为资源创建适当的Permission Object
 注册规范要求的信息
 将访问决策委托给Policy Object

61 © 2011 IBM Corporation


WebSphere Software

应用服务容器要求

 通过检查用户的凭证对应用进行认证
 创建待访问资源的Permission Object
 使用PolicyContextHandler对象注册所需要的信息
 为访问的模块创建唯一的标识符
 调用提供程序实现的 java.security.Policy 对象以进行访问决策

62 © 2011 IBM Corporation


WebSphere Software

Tivoli Access Manager(TAM) 集成

63 © 2011 IBM Corporation


WebSphere Software

Tivoli Access Manager (TAM)介绍

 TAM 是领先的基于策略的访问控制解决方案,适用于电子商务和企业级应用

 通过使用一个跨多种文件类型、应用程序提供者、设备和协议的单一安全策略服务器来执行
安全控制

 访问决策基于应用程序外部信息,允许动态修改策略参数而无需重新安装应用程序

 对异构的环境提供统一的认证和授权服务

64 © 2011 IBM Corporation


WebSphere Software

TAM 集成和 WAS 产品包装

 TAM的客户端和服务器端都实现了JACC提供者功能
 在WAS中嵌入了TAM客户端
 TAM是WAS ND 提供的程序包的一部分

WebSphere Application
WebSphere Application WebSphere Application
Content Server v6 Network
Server v6 – Express Server v6
Deployment
IBM Tivoli Directory Server
No No Yes
(LDAP server)
Tivoli Access Manager
No No Yes
Server

65 © 2011 IBM Corporation


WebSphere Software

TAM充当JACC提供者

66 © 2011 IBM Corporation


WebSphere Software

WebSphere 管理控制台的TAM集成UI

支持使用
JACC提供者

对于其他JACC提供者,使用外部JACC
提供者的相应属性值替代属性面板中的 预填入的TAM

客户端值

67
© 2011 IBM Corporation
WebSphere Software

TAM 服务信息
指定WebSphere
与TAM之间进行
通信所需要的
TAM服务器信息

TAM用来与
WebSphere进行
通信的端口
TAM 策略 和授权
服务器 host:port

TAM 管理员用户
ID和密码

68 © 2011 IBM Corporation


WebSphere Software

使用TAM与JACC的优势

 健壮的基于容器的授权
 集中的策略管理
 通用身份(Identities)、用户概要文件以及授权机制的管理
 使用TAM Web Protal Manager GUI 可对J2EE兼容或不兼容J2EE资源实现单点安全管理
 不需要对应用程序代码或部署作任何的改变
 使用WAS管理控制台可以方便对用户、用户组以及角色进行管理

69 © 2011 IBM Corporation


WebSphere Software

多安全域

70 © 2011 IBM Corporation


WebSphere Software

安全域

 在以前的发行版本中,大多数的安全属性只可以在Cell级别配置
– 配置信息,比如用户注册信息,必须对所有应用程序通用
– 数据存在单元级别的配置文件security.xml中

 服务器只可以覆盖很少几个特定的配置

71 © 2011 IBM Corporation


WebSphere Software

多安全域

 多安全域是安全配置更为灵活
– 允许在同一单元中启用不同的安全设置

 可对管理应用程序和用户应用程序的安全设置进行分离

 对于安全提供者具有更多的灵活性
– 以前的发行版本仅允许在单元级别提供插入点

 提供跨域(realm)通信

72 © 2011 IBM Corporation


WebSphere Software

WebSphere 安全域( WebSphere Security Domains ,WSD)

 WAS 7使用WSD来支持供多安全域
– 范围可以是单元、服务器、集群以及服务集成总线(service integration buses, SIB)

 WSD中的配置数据可以覆盖全局安全配置数据
– 全局安全配置是供管理应用程序使用的安全配置,也是用户程序的默认安全配置

 管理应用程序继续使用来自全局安全配置的数据

73 © 2011 IBM Corporation


WebSphere Software

WebSphere的多安全域

应用可以拥有自己的应用安全域以及独有的用户

Application Application Application Application


Application Application Application Application
Application Application Application Application
Realm Realm Realm
App App
App Server App Server
Server Server
Security Security Security
Admin Config Admin Admin Admin
Config Config
Subsystem Subsystem Subsystem Subsystem

Cluster

一个集群中的应用共享一个应用安全域
Realm

Deployment
Manager Security
Configuration  一个单元中可以拥有多个安全域
 中央管理中的多个安全域提供了更灵活的安全配置
Deployment Manager、Node Agent、与管理子系统
都拥有自己的安全配置  可以将用户安全域与管理安全域分离

74 © 2011 IBM Corporation


WebSphere Software

WSD configurations
 Global security Global


User registry
Trust Association Interceptor (TAI)
Security Cell
Configuration
– SPNEGO
(security.xml)


Authorization
Login configurations
Node 1
– Application security enablement WSD Configuration
– Java 2 security Domain 1
– RMI/IIOP (CSIv2 protocol) (domain-security.xml) Server 1.1
– Custom Properties
– Authentication mechanisms
– SSL WSD Configuration
– Domain 2

Web attributes (SSO)
Audit (domain-security.xml)
Server 1.2
 Server security WSD Configuration


User registry
Trust Association Interceptor (TAI)
Domain 3 Cluster
(domain-security.xml)
– SPNEGO


Authorization
Login configurations
Node 2
– Application security enablement


Java 2 security
RMI/IIOP (CSIv2 protocol) User applications: Server 2.1
– Custom Properties in S1.1 will use the security attributes defined in Domain2
– LTPA Timeout
in cluster will use the security attributes defined in Domain3
in S2.2 will use the security attributes defined in Domain1
Any attributes that are missing in a domain are obtained
Server 2.2
from global security.xml

75
© 2011 IBM Corporation
WebSphere Software

安全任务

 Global security任务中增加了配置多安全域
的链接

 Security domains任务允许用户管理和配置
它们的环境中的安全域

76 © 2011 IBM Corporation


WebSphere Software

全局安全性设置(Global security)

 添加了访问安全域的链接

77 © 2011 IBM Corporation


WebSphere Software

安全域

 列出已配置的安全域
 创建和管理安全域

78 © 2011 IBM Corporation


WebSphere Software

安全域属性

 配置安全域的范围
– 整个单元
– 特定服务器
– 集群
– 服务集成总线(service integration
buse,SIB)

79 © 2011 IBM Corporation


WebSphere Software

安全属性

 属性部分定义了域所使用的安全
设置

 属性可以定制

80 © 2011 IBM Corporation


WebSphere Software

WSD中的限制

 联邦式的存储库(VMM)
– 单元中只可以存在一个VMM配置或实例
– 多安全域可以使用联邦存储库,但必须共享同一个VMM实例

 Tivoli 访问管理器(Tivoli Access Manager,TAM)


– 只可以配置一个全局TAM或JACC
– 不能在域级别进行配置

81 © 2011 IBM Corporation


WebSphere Software

安全审计

82 © 2011 IBM Corporation


WebSphere Software

安全审计

 提供审计记录,可用来确保安全计算环境的完整性
 获取认证、授权、系统管理以及其它安全事件并记录到审计事件日志中
– 提供可以用来稽核的审计跟踪
– 可以用来进行漏洞分析
– 提供一种机制,可以证明符合现行的法律制度

83 © 2011 IBM Corporation


WebSphere Software

安全审计特性

 WAS安全审计特性提供了基于不同事件来生成报告一种方法
– 认证,授权,资源访问等等
– 可以使用过滤器来定义事件子集

 应当尽量减少日常的审计事件收集

 有两中插件(plug-in)
– Audit Event Factory,用来获取审计数据
– Audit Service Provider,将获取的数据并输出到后端存储库
– WAS配置了默认的插件实现,其将审计记录输出到二进制审计日志中

 WAS安全审计特能为第三方解决方案提供了插拔(plug-in)点

84 © 2011 IBM Corporation


WebSphere Software

审计数据

 可以将收集到的审计数据保护起来以免受到破坏
– 可对数据进行加密和签名

 加密由Auditor进行管理
– 用来加密数据的证书是由审计子系统进行管理,配置在audit.xml文件中

 签名是由WAS进行管理的
– 用来对数据签名的证书是由WAS进行管理的,定义在security.xml配置文件中

85 © 2011 IBM Corporation


WebSphere Software

Audit Reader

 Audit Reader用来读取生成的IBM二进制审计日志
– 可以根据审计数据生成HTML报告
– 支持读取未加密未签名、加密未签名、未加密签名以及加密并签名的各类日志文件
– 作为AdminTask进行调用的

86
86 © 2011 IBM Corporation
WebSphere Software

审计阅读程序显示的报告

87 © 2011 IBM Corporation


WebSphere Software

WAS v7通过安全角色提供了细粒度安全管理

First Administrative User

AdminSecurityManager Administrator Auditor

Security Configuration

iscadmins Configurator Operator


Deployer
Partial

Monitor

88 © 2011 IBM Corporation


WebSphere Software

总结与参考资料

89 © 2011 IBM Corporation


WebSphere Software

总结

 安全的基本概念
 J2EE的安全模型
 WebSphere中的安全控制
 JACC规范的细节
 WebSphere中的TAM集成
 安全审计

90 © 2011 IBM Corporation


WebSphere Software

References

 JSR 115 规范
– www.jcp.org/en/jsr/detail?id=115

 WebSphere Application Server 信息中心


–http://www-01.ibm.com/software/webservers/appserv/was/library

 RedBooks
– SG24-6316

91 © 2011 IBM Corporation


WebSphere Software

Thai
Traditional Chinese

Russian
Gracias Spanish

Thank You
English

Merci French
Obrigado
Brazilian Portuguese
Arabic

Danke
Grazie
Italian German
Simplified Chinese

Japanese

92 © 2011 IBM Corporation

You might also like