1、1感谢你的观看2019年8月29一、动因一、动因二、安全技术与安全体系二、安全技术与安全体系三、三、Java 的安全体系的安全体系四、四、J2EE的安全服务的安全服务感谢你的观看2019年8月29l合作的前提之一合作的前提之一 数据的存储、加工、传送过程中数据的存储、加工、传送过程中皆需要进行保护皆需要进行保护lSecurity and Transaction lSecurity and Openness lSecurity and Safetyl安全是一个涉及系统多个功能的安全是一个涉及系统多个功能的 非功能性需求非功能性需求感谢你的观看2019年8月29l分布式软件系统中客户与服务器之间存
2、在分布式软件系统中客户与服务器之间存在大量的消息交互大量的消息交互网络基本设施安全吗?网络基本设施安全吗?l硬件硬件l软件软件客户身份属实吗?客户身份属实吗?客户对欲进行的操作有权限吗?客户对欲进行的操作有权限吗?感谢你的观看2019年8月29l 机密数据可能被窃取机密数据可能被窃取 公司规划公司规划 标书标书 员工薪资员工薪资健康数据健康数据财产数据财产数据l 数据可能被篡改数据可能被篡改 财务数据财务数据 测试结果测试结果最终导致:最终导致:计算机信任度受损计算机信任度受损:无法继续使用计算机系统无法继续使用计算机系统感谢你的观看2019年8月29什么是安全?什么是安全?让让 正确的人正确
3、的人 得到得到 正确的服务正确的服务“正确的人正确的人”:不具有访问权限者不许得到系统的服务:不具有访问权限者不许得到系统的服务即所谓的即所谓的“保密性保密性”“正确的服务正确的服务”:具有访问权限者可以得到正确的系统服务:具有访问权限者可以得到正确的系统服务即所谓的即所谓的“完整性完整性”“得到得到”:具有访问权限者可以得到正确的系统服务:具有访问权限者可以得到正确的系统服务即所谓的即所谓的“可用性可用性”感谢你的观看2019年8月29根据攻击结果通常分为三类根据攻击结果通常分为三类l 机密性攻击机密性攻击(secrecy attack)攻击者试图窃取口令、医疗记录、电子邮件日志、薪水攻击者
4、试图窃取口令、医疗记录、电子邮件日志、薪水册等机密数据册等机密数据l 完整性攻击完整性攻击(integrity attack)攻击者企图非法更改部分系统攻击者企图非法更改部分系统l 可用性攻击可用性攻击(availability attack)攻击者企图中断系统正常运作,通常也称这种攻击为拒攻击者企图中断系统正常运作,通常也称这种攻击为拒绝服务攻击绝服务攻击(denial-of-service attack)感谢你的观看2019年8月29l 隔离性对策隔离性对策 对需要保护的关键性系统与外界进行物理隔离对需要保护的关键性系统与外界进行物理隔离l 限制性对策限制性对策 采用访问控制方法保护系统资
5、源,不允许未授权用户访采用访问控制方法保护系统资源,不允许未授权用户访问重要资源问重要资源l 补救性对策补救性对策 进行审计进行审计 抗抵赖抗抵赖 恢复恢复感谢你的观看2019年8月291、加密、加密2、认证、认证3、访问控制、访问控制4、审计、审计感谢你的观看2019年8月29就是信息的编码和解码就是信息的编码和解码 包括包括 保密性加密保密性加密 完整性加密完整性加密感谢你的观看2019年8月29 加密加密 明文明文 密文密文 明文明文 解密解密 密文密文 发送者发送者 接收者接收者 保密性加密保密性加密对称密钥加密对称密钥加密 非对称密钥加密非对称密钥加密 感谢你的观看2019年8月29
6、 加密加密 解密解密 密钥密钥 明文明文 密文密文 明文明文 密钥密钥 对称密钥加密对称密钥加密 感谢你的观看2019年8月29非对称密钥加密非对称密钥加密 加密加密 解密解密 明文明文 密文密文 明文明文 私有私有 密钥密钥 公开公开 密钥密钥 使用私有密钥进行加密、公开密钥进行解密的过程 感谢你的观看2019年8月29 加密加密 解密解密 明文明文 密文密文 明文明文 公开公开 密钥密钥 私有私有 密钥密钥 使用公开密钥进行加密、私有密钥进行解密的过程 感谢你的观看2019年8月29 加密加密 原始数据原始数据 消息摘要消息摘要 自行生成的自行生成的 消息摘要消息摘要 原始数据原始数据 发
7、送者发送者 接收者接收者 比较比较 完整性加密完整性加密感谢你的观看2019年8月29加密分类加密分类应用环境应用环境机密性机密性加密加密对称对称密钥密钥办公室内、磁盘上等办公室内、磁盘上等非对称非对称密钥密钥私有密钥用私有密钥用于加密过程于加密过程数字签名数字签名公开密钥用公开密钥用于加密过程于加密过程数据安全传送数据安全传送完整性完整性加密加密数字签名、数字水印(数据数字签名、数字水印(数据未被篡改)未被篡改)各种加密技术的应用各种加密技术的应用 感谢你的观看2019年8月29利用某种信息对客户进行证实的过程利用某种信息对客户进行证实的过程通常由所在系统的专门的认证服务器完成通常由所在系统
8、的专门的认证服务器完成通过认证客户可以获得一个唯一的认证标识通过认证客户可以获得一个唯一的认证标识这个标识不能随意更改这个标识不能随意更改利用什么信息?利用什么信息?你所拥有的(你所拥有的(What you have)例如:基于物理卡的认证例如:基于物理卡的认证你所知道的(你所知道的(What you know)认证)认证例如:基于口令的认证、基于证书的认证例如:基于口令的认证、基于证书的认证你是谁(你是谁(What you are)的认证)的认证例如:基于生物特征的认证例如:基于生物特征的认证 等等 感谢你的观看2019年8月29l主体(主体(Principal)标识用户身份标识用户身份 可
9、以看成在安全领域中用户的名字可以看成在安全领域中用户的名字l证书(证书(Credential)除身份标识以外的与用户相关的安全属性除身份标识以外的与用户相关的安全属性l如公共密钥、密码等如公共密钥、密码等感谢你的观看2019年8月29 访问控制的基础是访问控制的基础是认证认证授权(授权(Authorization)安全域(安全域(Security Domain)l 授权授权 认证关心的是谁在准备访问系统认证关心的是谁在准备访问系统 授权关心的是访问者具有何种权限授权关心的是访问者具有何种权限 授权是一个配置过程授权是一个配置过程 将对具体资源的访问能力授予某种身份的主体将对具体资源的访问能力授
10、予某种身份的主体感谢你的观看2019年8月29l l 安全域安全域相互之间拥有相同访问控制策略的一组计算机机被称为一个域相互之间拥有相同访问控制策略的一组计算机机被称为一个域域可以被划分为子域域可以被划分为子域 子域子域可以继承域的权限可以继承域的权限并进一步限制有哪些权限可以应用到它们之上并进一步限制有哪些权限可以应用到它们之上域可以结盟以相互授权域可以结盟以相互授权安全域有时也被称为安全策略域(安全域有时也被称为安全策略域(Security Policy Domain,或,或realm)与之相对的是安全技术域(与之相对的是安全技术域(Security Technology Domain)一
11、个安全技术域是指使用相同安全机制(例如一个安全技术域是指使用相同安全机制(例如Kerberos)的域)的域一个安全技术域可能包含多个安全策略域一个安全技术域可能包含多个安全策略域感谢你的观看2019年8月29l 访问控制访问控制访问控制是安全技术的核心技术访问控制是安全技术的核心技术访问控制的形式包括:访问控制的形式包括:随意访问控制随意访问控制基于主体(或者主体组、角色)的访问即是随意访问控制基于主体(或者主体组、角色)的访问即是随意访问控制通常采用一个访问控制表(通常采用一个访问控制表(ACLACL )来控制主体对资源的访问)来控制主体对资源的访问ACLACL中包含主体的名字(或者组名字、
12、角色名字等)列表中包含主体的名字(或者组名字、角色名字等)列表以及可以作用于各种资源的操作以及可以作用于各种资源的操作强制性访问控制强制性访问控制强制访问控制技术的基础是对主体进行分级别强制访问控制技术的基础是对主体进行分级别即为每个主体关联一个信任级别即为每个主体关联一个信任级别例如绝密、机密、秘密、一般等等例如绝密、机密、秘密、一般等等一般较高级别的主体拥有较高的可信度一般较高级别的主体拥有较高的可信度资源关联了一个级别指定访问该资源的主体所需要的最低级别资源关联了一个级别指定访问该资源的主体所需要的最低级别如果主体的级别高于或者等于资源的级别如果主体的级别高于或者等于资源的级别则该主体可
13、以访问该资源则该主体可以访问该资源强制访问控制技术简化了维护强制访问控制技术简化了维护ACL的复杂度的复杂度感谢你的观看2019年8月29对于与安全相关的用户操作进行记录对于与安全相关的用户操作进行记录特别是需要对用户的身份进行识别特别是需要对用户的身份进行识别即使调用穿越了多个对象即使调用穿越了多个对象感谢你的观看2019年8月29对用户的操作提供不可抵赖的证据对用户的操作提供不可抵赖的证据例如:例如:向数据接收者提供数据源证明向数据接收者提供数据源证明向数据发送者提供数据接收者证明向数据发送者提供数据接收者证明以避免数据接收者或者发送者以避免数据接收者或者发送者抵赖所进行的行为抵赖所进行的
14、行为感谢你的观看2019年8月29提供诸如安全策略一类的安全信息提供诸如安全策略一类的安全信息计算机安全是一个长久性的问题计算机安全是一个长久性的问题重要程度高重要程度高实现难度大实现难度大总之总之感谢你的观看2019年8月29安全体系安全体系1、Java 2安全体系总体结构安全体系总体结构 2 2、核心、核心Java安全体系结构安全体系结构 3、Java加密体系结构加密体系结构 4、Java 加密技术扩展加密技术扩展 5、Java 安全套接字扩展安全套接字扩展 6、Java 认证与授权服务认证与授权服务 感谢你的观看2019年8月291、Java 2安全体系总体结构安全体系总体结构 核心核心
15、 Java 安全体系结构安全体系结构 Java 加密体系结构加密体系结构 (JCA)Java 平台 Java 认证与授权服务(JAAS)Java 安全套接字扩展(JSSE)Java 加密扩展(JCE)感谢你的观看2019年8月29核心核心Java安全体系结构安全体系结构 操作系统与资源 Java 运行时引擎 Java 平台类 类加载器 字节码校验器 安全管理器 访问控制器 许可 策略 保护域 Java 应用程序 感谢你的观看2019年8月29Java加密体系结构加密体系结构 Java加密体系结构(加密体系结构(JCA)为基于)为基于java的加密技术提供框架的加密技术提供框架JCA是基本的加密
16、框架,主要为数据的完整性提供支持是基本的加密框架,主要为数据的完整性提供支持JCA还提供了若干接口,使用证书、数字签名等对主体进行标识还提供了若干接口,使用证书、数字签名等对主体进行标识JCA较多地依赖于非对称密钥体系较多地依赖于非对称密钥体系在实现上,在实现上,JCAJCA主要由如下四部分组成:主要由如下四部分组成:Java.securityJava.security:一组核心的类与接口:一组核心的类与接口提供了提供了JCAJCA提供商框架和加密技术操作提供商框架和加密技术操作APIAPIJava.security.certJava.security.cert:一组证书管理类和接口:一组证书
17、管理类和接口Java.security.interfacesJava.security.interfaces:一组接口:一组接口用于封装和管理用于封装和管理DSADSA和和RSARSA公开密钥和私有密钥公开密钥和私有密钥Java.security.specJava.security.spec:一组类与接口:一组类与接口用于介绍公开密钥算法、私有密钥算法和参数规范用于介绍公开密钥算法、私有密钥算法和参数规范感谢你的观看2019年8月29Java 加密技术扩展加密技术扩展 Java 加密技术扩展(加密技术扩展(JCEJCE)在)在JCAJCA的基础上作了扩展的基础上作了扩展包括加密算法、密钥交换、
18、密钥产生和消息鉴别服务等接口包括加密算法、密钥交换、密钥产生和消息鉴别服务等接口JCEJCE主要用于数据的保密性,较多地依赖于对称密钥体系主要用于数据的保密性,较多地依赖于对称密钥体系连接应用和实际算法实现程序的一组接口。连接应用和实际算法实现程序的一组接口。软件开发商根据软件开发商根据JCE接口,将各种算法实现后接口,将各种算法实现后打包成一个打包成一个Provider,可以动态地加到,可以动态地加到Java运行环境中运行环境中在实现上,在实现上,JCEJCE主要由如下三部分组成:主要由如下三部分组成:Javax.cryptoJavax.crypto:一组核心的类与接口:一组核心的类与接口提
19、供了提供了JCEJCE即查即用即查即用SPISPI和加密技术操作和加密技术操作APIAPIJavax.crypto.interfaceJavax.crypto.interface:一组接口:一组接口用于封装和管理用于封装和管理Diffie-HellmanDiffie-Hellman密钥密钥Javax.crypto.spec:一组类:一组类用于密钥算法和参数规范用于密钥算法和参数规范感谢你的观看2019年8月29Java 安全套接字扩展安全套接字扩展Java Java 安全套接字扩展是支持安全数据传输技术的一组接口安全套接字扩展是支持安全数据传输技术的一组接口JSSEJSSE不仅支持不仅支持SS
20、LSSL还支持传输层安全(还支持传输层安全(TLSTLS)等协议)等协议在实现上,在实现上,JSSEJSSE主要由如下三部分组成:主要由如下三部分组成:J.sslJ.ssl:一组与:一组与JSSE APIJSSE API相关的核心类和接口相关的核心类和接口JJ:一组支持基本套接字与服务器套接字工厂的接口:一组支持基本套接字与服务器套接字工厂的接口Javax.security.cert:一组支持基本证书管理的接口:一组支持基本证书管理的接口感谢你的观看2019年8月29Java 认证与授权服务认证与授权服务Java Java 认证与授权服务提供了一种基于客户身份的控制机制认证与授权服务提供了一种
21、基于客户身份的控制机制核心核心JavaJava安全体系结构中的安全策略主要针对安全体系结构中的安全策略主要针对JavaJava代码的特性代码的特性这是一种代码中心型的访问控制这是一种代码中心型的访问控制 更常见的是用户中心型的访问控制更常见的是用户中心型的访问控制以以谁运行程序为基础申请控制谁运行程序为基础申请控制而不是以哪个程序被运行为基础而不是以哪个程序被运行为基础JavaJava认证与授权服务是认证与授权服务是为认证用户身份、向用户授权而提供的一套标准服务为认证用户身份、向用户授权而提供的一套标准服务在实现上,在实现上,JAASJAAS由如下四部分组成:由如下四部分组成:(1 1)jav
22、ax.security.authjavax.security.auth包含包含JAASJAAS框架需要的基本类框架需要的基本类(2 2)javax.security.auth.loginjavax.security.auth.login包含支持可插入认证的类包含支持可插入认证的类(3 3)javax.security.auth.callbackjavax.security.auth.callback包含不同的回调类与接口包含不同的回调类与接口登录模块可以用它来与主题交互登录模块可以用它来与主题交互 (4)javax.security.auth.spi 包含一个登录模块接口包含一个登录模块接口感
23、谢你的观看2019年8月291、目标、目标2、安全服务模型、安全服务模型3 3、安全服务、安全服务接口接口 4 4、安全责任、安全责任感谢你的观看2019年8月29 减轻应用开发者(如构件生产者)在安全管理减轻应用开发者(如构件生产者)在安全管理上的负担上的负担l通过通过EJB角色达到最大的覆盖率角色达到最大的覆盖率l容器厂商实现安全基础设施容器厂商实现安全基础设施(infrastructure)l部署者和系统管理员指定安全策略部署者和系统管理员指定安全策略(policy)安全策略的设置更灵活安全策略的设置更灵活l由组装者或部署者指定由组装者或部署者指定l而不是构件生产者开发时硬编码而不是构件
24、生产者开发时硬编码 保证保证EJB的可移植性的可移植性l不同的服务器可能采用不同安全机制不同的服务器可能采用不同安全机制感谢你的观看2019年8月29 2、安全服务模型安全服务模型 安全服务 JAVA平台安全管理器 构件 构件容器 1 2 1 构件与构件容器的接口 核心安全 加密 认证 授权 审计 .2 JAVA 平台安全管理器向构件容器与构件提供的接口 3 4 JAAS 安全管理器 3 2 3 4 5 5 JAAS安全管理器向构件容器与构件提供的接口 JAVA 安全平台管理器向服务提供商要求的接口 JAAS 安全管理器向服务提供商要求的接口 感谢你的观看2019年8月293 3、安全服务、安
25、全服务接口接口 最主要的接口包括:最主要的接口包括:Subject CertificatePrincipalPolicyLoginContextLonginModuleCallback Callbackhandler感谢你的观看2019年8月29构件生产者构件生产者应用组装者应用组装者部署者部署者容器厂商容器厂商系统管理员系统管理员4 4、安全责任、安全责任感谢你的观看2019年8月29l调用其它调用其它EJB EJB体系没有为构件生产者提供编程接口控制调用体系没有为构件生产者提供编程接口控制调用者的主体者的主体(Principal)l在不同在不同EJB互相调用过程中传递的主体由部署者或系统互
26、相调用过程中传递的主体由部署者或系统管理员以特定于容器的途径建立管理员以特定于容器的途径建立l构件生产者和组装者只能在部署信息中描述相关的需求构件生产者和组装者只能在部署信息中描述相关的需求l访问资源访问资源感谢你的观看2019年8月29l访问底层操作系统的资源访问底层操作系统的资源 EJB体系没有定义访问体系没有定义访问OS资源的主体资源的主体 EJB不能访问不能访问OS资源资源lEJB体系假设应用仅使用如数据库之类的资源管体系假设应用仅使用如数据库之类的资源管理器,不会直接使用理器,不会直接使用OS级别的资源级别的资源l推荐的编程风格推荐的编程风格 构件生产者在业务方法中构件生产者在业务方
27、法中l既不会实现安全机制,也不会硬编码安全策略既不会实现安全机制,也不会硬编码安全策略l通过部署信息委托部署者和系统管理员通过部署信息委托部署者和系统管理员感谢你的观看2019年8月29l如何编程访问调用者的安全上下文如何编程访问调用者的安全上下文 Callers security context 声明声明l安全管理一般由容器执行,对构件透明安全管理一般由容器执行,对构件透明l只有在极少数情况下,业务方法才会访问安全上下文信只有在极少数情况下,业务方法才会访问安全上下文信息息 在在javax.ejb.EJBContext中定义了两个方法中定义了两个方法ljava.security.Princi
28、pal getCallerPrincipal();lBoolean isCallerInRole(String roleName);l如果调用请求中没有客户的安全上下文,则产生如果调用请求中没有客户的安全上下文,则产生java.lang.IllegalStateException感谢你的观看2019年8月29l返回当前调用者的主体返回当前调用者的主体 java.security.Principal的接口定的接口定义义boolean equals(Object another);比较主体代表的对象是否与指定对象相同;比较主体代表的对象是否与指定对象相同;String getName()返回主体的
29、名字;返回主体的名字;int hashCode()返回主体的返回主体的hashcode.String toString()返回主体的字符串形式返回主体的字符串形式感谢你的观看2019年8月29public class EmployeeServiceBean implements SessionBean EJBContext ejbContext;public void changePhoneNumber(.).Context initCtx=new InitialContext();Object result=initCtx.lookup(java:comp/env/ejb/EmplRecor
30、d);EmployeeRecordHome emplRecordHome=(EmployeeRecordHome)javax.rmi.PortableRemoteObject.narrow(result,EmployeeRecordHome.class);callerPrincipal=ejbContext.getCallerPrincipal();callerKey=callerPrincipal.getName();EmployeeRecord myEmployeeRecord=emplRecordHome.findByPrimaryKey(callerKey);myEmployeeRec
31、ord.changePhoneNumber(.);.感谢你的观看2019年8月29l检查当前调用者是否具有指定的安全角色检查当前调用者是否具有指定的安全角色 安全角色由组装者在部署信息中定义安全角色由组装者在部署信息中定义 并被部署者分配给不同的主体(组)并被部署者分配给不同的主体(组)用以实现基于角色作用于请求的安全检查用以实现基于角色作用于请求的安全检查l这种安全检查不适于在部署信息的方法访问权限中声明这种安全检查不适于在部署信息的方法访问权限中声明感谢你的观看2019年8月29public class PayrollBean.EntityContext ejbContext;public
32、 void updateEmployeeInfo(EmplInfo info)oldInfo=.read from database;/The salary field can be changed only by callers /who have the security role payroll if(info.salary!=oldInfo.salary&!ejbContext.isCallerInRole(payroll)throw new SecurityException(.);.感谢你的观看2019年8月29l安全角色的声明安全角色的声明 如果代码中使用了某些安全角色,就必须如
33、果代码中使用了某些安全角色,就必须在部署信息中声明被引用的角色名字在部署信息中声明被引用的角色名字 在部署信息中的格式为在部署信息中的格式为 感谢你的观看2019年8月29 AardvarkPayroll .This security role should be assigned to the employees of the payroll department who are allowed to update employees salaries.payroll 感谢你的观看2019年8月29l定义安全视图定义安全视图(security view)包含包含在在ejb-jar文件中文件中
34、 简化部署者的工作简化部署者的工作l如果没有安全视图,部署者将不得不了解业务方如果没有安全视图,部署者将不得不了解业务方法的内容才能部署相关的安全策略法的内容才能部署相关的安全策略l而业务方法的细节不是部署者应该而业务方法的细节不是部署者应该/可以了解的可以了解的l工作包括工作包括 定义安全角色,方法许可,安全角色及其引定义安全角色,方法许可,安全角色及其引用的关联,安全标识用的关联,安全标识感谢你的观看2019年8月29l安全视图由一组安全角色组成安全视图由一组安全角色组成 安全角色(安全角色(Security role)lA semantic grouping of permissions
35、l用户必须拥有某种安全角色才能成功使用相应的用户必须拥有某种安全角色才能成功使用相应的应用应用l是一种逻辑角色,因为部署者可能根据运行环境是一种逻辑角色,因为部署者可能根据运行环境的特性修改甚至忽略组装者定义的安全视图的特性修改甚至忽略组装者定义的安全视图 方法许可(方法许可(Method permission)l指允许调用一组指定的方法(指允许调用一组指定的方法(EJB Home或或Remote接口中的方法)的许可接口中的方法)的许可l组装者为每个角色定义了一组方法许可组装者为每个角色定义了一组方法许可感谢你的观看2019年8月29 This role includes the employ
36、ees of the enterprise who are allowed to access the employee self-service application.This role is allowed only to access his/her own information.employee 感谢你的观看2019年8月29 EJBNAME*l 三种设置方式三种设置方式通配符模式通配符模式方法名模式方法名模式参数列表模式参数列表模式方式方式1:通配符模式:通配符模式l作用于指定作用于指定EJB的所有方法的所有方法感谢你的观看2019年8月29.employee EmployeeS
37、ervice *感谢你的观看2019年8月29 EJBNAMEMETHODl三种设置方式三种设置方式 方式方式2:方法名模式:方法名模式l作用于指定作用于指定EJB的指定方法的指定方法感谢你的观看2019年8月29employee AardvarkPayroll findByPrimaryKey AardvarkPayroll getEmployeeInfo 感谢你的观看2019年8月29 EJBNAMEMETHOD PARAMETER_1 .l三种设置方式三种设置方式 方式方式3:参数列表模式:参数列表模式l作用于指定作用于指定EJB的具有指定参数列表的方法的具有指定参数列表的方法l适用于方
38、法重载适用于方法重载感谢你的观看2019年8月29employee AardvarkPayroll add money user 感谢你的观看2019年8月29l组装者必须将构件生产者声明的安全角组装者必须将构件生产者声明的安全角色引用与相应的安全角色链接起来色引用与相应的安全角色链接起来AardvarkPayroll.payrollpayroll-department .感谢你的观看2019年8月29l安全标识安全标识(security identity)作用于作用于EJB运行时运行时 分为两种分为两种lUse-caller-identity使用调用者的安全标识使用调用者的安全标识lRun-
39、as使用部署信息中为该使用部署信息中为该EJB指定的安全标识指定的安全标识 Run-as:指不论哪个方法,指不论哪个方法,EJB的安全标识都是同一个的安全标识都是同一个 安全标识必须是安全标识必须是role-name中定义的角色中定义的角色 运行时安全标识的形式是主体运行时安全标识的形式是主体(principal)感谢你的观看2019年8月29 EmployeeService.admin .感谢你的观看2019年8月29l保证应用在指定运行环境中的安全保证应用在指定运行环境中的安全 利用容器厂商提供的部署工具利用容器厂商提供的部署工具l读取组装者在部署信息中的安全视图读取组装者在部署信息中的安
40、全视图l将安全视图映射到指定运行环境的安全机制与策略将安全视图映射到指定运行环境的安全机制与策略l最后输出安全策略描述信息(最后输出安全策略描述信息(security policies descriptor)该描述信息的格式特定于容器厂商该描述信息的格式特定于容器厂商感谢你的观看2019年8月29l具体职责具体职责 为应用分配安全域为应用分配安全域(security domain)和主体域和主体域(principal realm)l一个应用可以有多个安全域一个应用可以有多个安全域l一个安全域可以有多个主体域一个安全域可以有多个主体域 主体与安全角色的关联主体与安全角色的关联l通常部署者无需改变
41、安全角色的方法许可设置通常部署者无需改变安全角色的方法许可设置l注意,这一映射不属于注意,这一映射不属于EJB体系的标准化范围,因体系的标准化范围,因此,该映射特定于具体的运行环境此,该映射特定于具体的运行环境 如果多个独立如果多个独立的的ejb-jar文件使用相同的安全角色名,其分文件使用相同的安全角色名,其分配的主体可能不同配的主体可能不同感谢你的观看2019年8月29l具体职责(续)具体职责(续)配置配置EJB间调用传递的主体间调用传递的主体l与前面不同,部署者必须遵循组装者的需求与前面不同,部署者必须遵循组装者的需求 如如,run-as-specified-identity 管理资源访
42、问的安全性管理资源访问的安全性 另外,对于组装者忽略或无法指定的某些另外,对于组装者忽略或无法指定的某些安全要求,部署者必须承担相应工作安全要求,部署者必须承担相应工作l如,组装者没有指定安全角色或方法许可如,组装者没有指定安全角色或方法许可l这些工作的输出结果无需存储这些工作的输出结果无需存储在在ejb-jar文件中文件中感谢你的观看2019年8月29l 目标:目标:确保客户调用中包含的安全上下文不会影响服务器的安全确保客户调用中包含的安全上下文不会影响服务器的安全l 客户必须遵循以下规则客户必须遵循以下规则 处于某个事务中的客户不能在该事务期间改变其主体处于某个事务中的客户不能在该事务期间
43、改变其主体l保证了同一事务中某客户发出的所有调用使用相同的安全上下文保证了同一事务中某客户发出的所有调用使用相同的安全上下文 Session Bean的客户在一次会话期间不能改变其主体的客户在一次会话期间不能改变其主体 如果某事务需要处理来自多个客户的事务性请求时,所有这如果某事务需要处理来自多个客户的事务性请求时,所有这些请求都必须具有相同的安全上下文些请求都必须具有相同的安全上下文感谢你的观看2019年8月29l部署工具部署工具 允许部署者读取组装者的安全要求并设置允许部署者读取组装者的安全要求并设置运行时的安全属性运行时的安全属性 部署工具应指导上述过程部署工具应指导上述过程 此输出结果
44、的存储是特定于容器的,必须此输出结果的存储是特定于容器的,必须保证在运行时对容器可用保证在运行时对容器可用感谢你的观看2019年8月29l安全域安全域 一个容器提供了一个安全域和至少一个的主体域一个容器提供了一个安全域和至少一个的主体域lEJB体系没有指定体系没有指定EJB Server如何实现安全域以及安全如何实现安全域以及安全域的范围域的范围 EJB Server可以(非强制)支持多个安全域或主可以(非强制)支持多个安全域或主体域体域l当一个服务器驻留了多个应用时,会出现多个安全域的当一个服务器驻留了多个应用时,会出现多个安全域的情况情况感谢你的观看2019年8月29l安全机制安全机制 容
45、器厂商必须提供安全机制以保证组装者设置的容器厂商必须提供安全机制以保证组装者设置的安全策略安全策略 EJB Server提供的安全功能一般包括提供的安全功能一般包括l主体认证主体认证(Authentication of principals)lEJB调用与资源访问的授权调用与资源访问的授权(Access authorization)l远程调用的安全通信远程调用的安全通信感谢你的观看2019年8月29lEJB调用中主体的传递调用中主体的传递 遵循部署者的设置遵循部署者的设置 支持安全上下文中主体的操作支持安全上下文中主体的操作lgetCallerPrincipal()不同安全域之间主体的映射不同
46、安全域之间主体的映射l提供机制与工具,由系统管理员设置提供机制与工具,由系统管理员设置 系统主体系统主体lJVM执行执行EJB的方法时也需要主体,称之为系的方法时也需要主体,称之为系统主体统主体lEJB规范没有指定,以简化容器厂商的工作规范没有指定,以简化容器厂商的工作感谢你的观看2019年8月29l运行时的安全保证运行时的安全保证 容器可以利用容器可以利用Java语言的安全机制语言的安全机制 容器一般需提供以下安全功能容器一般需提供以下安全功能l客户访问控制,如方法许可客户访问控制,如方法许可l区分不同区分不同EJB以及同一个以及同一个EJB的不同实例的不同实例l限制限制EJB对容器的访问对
47、容器的访问 EJB只能通过规范定义的接口访问容器只能通过规范定义的接口访问容器(EJBContext)不允许不允许EJB获取某些系统信息,如获取某些系统信息,如 容器的实现类,容器的运行时状态及上下文,容器的实现类,容器的运行时状态及上下文,其它其它EJB的引用及其管理的资源等的引用及其管理的资源等感谢你的观看2019年8月29l 容器一般需提供以下安全功能(续)容器一般需提供以下安全功能(续)保证保证EJB持久状态的安全持久状态的安全l如,状态加密后再存储如,状态加密后再存储 管理部署者指定的主体域管理部署者指定的主体域EJB或其它资源之间的映射或其它资源之间的映射 如果同样的如果同样的EJ
48、B独立地部署多次(独立地部署多次(EJB的每次安装都会分的每次安装都会分配不同的配不同的JNDI名字)名字)l允许允许EJB不同的部署具有不同的安全策略不同的部署具有不同的安全策略l 安全审计安全审计(audit trail)容器可以提供审计功能,如纪录所有的安全例外容器可以提供审计功能,如纪录所有的安全例外感谢你的观看2019年8月29l安全域的管理安全域的管理 创建账号创建账号 用户组中账号的增删等用户组中账号的增删等l主体的映射主体的映射 如果客户与目标如果客户与目标EJB分属不同的安全域,分属不同的安全域,系统管理员应负责两者之间主体的映射系统管理员应负责两者之间主体的映射l映射的结果供部署者使用映射的结果供部署者使用l审计的复查审计的复查感谢你的观看2019年8月29思思 考考 题题 什么是安全?包括哪些要素?什么是安全?包括哪些要素?J2EE安全模型是什么?安全模型是什么?J2EE安全体系中各参与者的责任是什么?安全体系中各参与者的责任是什么?感谢你的观看2019年8月29感谢你的观看2019年8月29