资源预览内容
第1页 / 共70页
第2页 / 共70页
第3页 / 共70页
第4页 / 共70页
第5页 / 共70页
第6页 / 共70页
第7页 / 共70页
第8页 / 共70页
第9页 / 共70页
第10页 / 共70页
亲,该文档总共70页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第第九九讲讲安安全全服服务务1感谢你的观看2019年8月29内 容一、动因一、动因二、安全技术与安全体系二、安全技术与安全体系三、三、Java的安全体系的安全体系四、四、J2EE的安全服务的安全服务感谢你的观看2019年8月29 一一、动因、动因l合作的前提之一合作的前提之一数据的存储、加工、传送过程中数据的存储、加工、传送过程中皆需要进行保护皆需要进行保护lSecurityandTransactionlSecurityandOpennesslSecurityandSafetyl安全是一个涉及系统多个功能的安全是一个涉及系统多个功能的非功能性需求非功能性需求感谢你的观看2019年8月29l分布式软件系统中客户与服务器之间存在分布式软件系统中客户与服务器之间存在大量的消息交互大量的消息交互网络基本设施安全吗?网络基本设施安全吗?l硬件硬件l软件软件客户身份属实吗?客户身份属实吗?客户对欲进行的操作有权限吗?客户对欲进行的操作有权限吗?分布式系统的安全隐患分布式系统的安全隐患感谢你的观看2019年8月29不安全的后果不安全的后果l机密数据可能被窃取机密数据可能被窃取公司规划公司规划标书标书员工薪资员工薪资健康数据健康数据财产数据财产数据l数据可能被篡改数据可能被篡改财务数据财务数据测试结果测试结果最终导致:最终导致:计算机信任度受损计算机信任度受损:无法继续使用计算机系统无法继续使用计算机系统感谢你的观看2019年8月29什么是安全?什么是安全?让让正确的人正确的人得到得到正确的服务正确的服务“正确的人正确的人”:不具有访问权限者不许得到系统的服务:不具有访问权限者不许得到系统的服务即所谓的即所谓的“保密性保密性”“正确的服务正确的服务”:具有访问权限者可以得到正确的系统服务:具有访问权限者可以得到正确的系统服务即所谓的即所谓的“完整性完整性”“得到得到”:具有访问权限者可以得到正确的系统服务:具有访问权限者可以得到正确的系统服务即所谓的即所谓的“可用性可用性”感谢你的观看2019年8月29根据攻击结果通常分为三类根据攻击结果通常分为三类l机密性攻击机密性攻击(secrecyattack)攻击者试图窃取口令、医疗记录、电子邮件日志、薪水攻击者试图窃取口令、医疗记录、电子邮件日志、薪水册等机密数据册等机密数据l完整性攻击完整性攻击(integrityattack)攻击者企图非法更改部分系统攻击者企图非法更改部分系统l可用性攻击可用性攻击(availabilityattack)攻击者企图中断系统正常运作,通常也称这种攻击为拒攻击者企图中断系统正常运作,通常也称这种攻击为拒绝服务攻击绝服务攻击(denial-of-serviceattack)攻击方法攻击方法感谢你的观看2019年8月29基本对策基本对策l隔离性对策隔离性对策对需要保护的关键性系统与外界进行物理隔离对需要保护的关键性系统与外界进行物理隔离l限制性对策限制性对策采用访问控制方法保护系统资源,不允许未授权用户访采用访问控制方法保护系统资源,不允许未授权用户访问重要资源问重要资源l补救性对策补救性对策进行审计进行审计抗抵赖抗抵赖恢复恢复感谢你的观看2019年8月29 二、安全技术与安全体系二、安全技术与安全体系1、加密、加密2、认证、认证3、访问控制、访问控制4、审计、审计感谢你的观看2019年8月29 1、加密加密就是信息的编码和解码就是信息的编码和解码 包括包括 保密性加密保密性加密 完整性加密完整性加密感谢你的观看2019年8月29加密加密明文明文密文密文明文明文解密解密密文密文发送者发送者接收者接收者 保密性加密保密性加密对称密钥加密对称密钥加密非对称密钥加密非对称密钥加密感谢你的观看2019年8月29加密加密解密解密密钥密钥明文明文密文密文明文明文密钥密钥对称密钥加密对称密钥加密感谢你的观看2019年8月29非对称密钥加密非对称密钥加密加密加密解密解密明文明文密文密文明文明文私有私有密钥密钥公开公开密钥密钥使用私有密钥进行加密、公开密钥进行解密的过程感谢你的观看2019年8月29加密加密解密解密明文明文密文密文明文明文公开公开密钥密钥私有私有密钥密钥使用公开密钥进行加密、私有密钥进行解密的过程感谢你的观看2019年8月29加密加密原始数据原始数据消息摘要消息摘要自行生成的自行生成的消息摘要消息摘要原始数据原始数据发送者发送者接收者接收者比较比较 完整性加密完整性加密感谢你的观看2019年8月29加密分类加密分类应用环境应用环境机密性机密性加密加密对称对称密钥密钥办公室内、磁盘上等办公室内、磁盘上等非对称非对称密钥密钥私有密钥用私有密钥用于加密过程于加密过程数字签名数字签名公开密钥用公开密钥用于加密过程于加密过程数据安全传送数据安全传送完整性完整性加密加密数字签名、数字水印(数据数字签名、数字水印(数据未被篡改)未被篡改)各种加密技术的应用各种加密技术的应用感谢你的观看2019年8月29利用某种信息对客户进行证实的过程利用某种信息对客户进行证实的过程通常由所在系统的专门的认证服务器完成通常由所在系统的专门的认证服务器完成通过认证客户可以获得一个唯一的认证标识通过认证客户可以获得一个唯一的认证标识这个标识不能随意更改这个标识不能随意更改2、认证、认证利用什么信息?利用什么信息?你所拥有的(你所拥有的(Whatyouhave)例如:基于物理卡的认证例如:基于物理卡的认证你所知道的(你所知道的(Whatyouknow)认证)认证例如:基于口令的认证、基于证书的认证例如:基于口令的认证、基于证书的认证你是谁(你是谁(Whatyouare)的认证)的认证例如:基于生物特征的认证例如:基于生物特征的认证 等等感谢你的观看2019年8月29l主体(主体(Principal)标识用户身份标识用户身份可以看成在安全领域中用户的名字可以看成在安全领域中用户的名字l证书(证书(Credential)除身份标识以外的与用户相关的安全属性除身份标识以外的与用户相关的安全属性l如公共密钥、密码等如公共密钥、密码等感谢你的观看2019年8月293、访问控制、访问控制 访问控制的基础是访问控制的基础是认证认证授权(授权(Authorization) 安全域(安全域(SecurityDomain)l 授权授权认证关心的是谁在准备访问系统认证关心的是谁在准备访问系统授权关心的是访问者具有何种权限授权关心的是访问者具有何种权限授权是一个配置过程授权是一个配置过程将对具体资源的访问能力授予某种身份的主体将对具体资源的访问能力授予某种身份的主体感谢你的观看2019年8月29l l安全域安全域相互之间拥有相同访问控制策略的一组计算机机被称为一个域相互之间拥有相同访问控制策略的一组计算机机被称为一个域域可以被划分为子域域可以被划分为子域 子域子域可以继承域的权限可以继承域的权限并进一步限制有哪些权限可以应用到它们之上并进一步限制有哪些权限可以应用到它们之上域可以结盟以相互授权域可以结盟以相互授权安全域有时也被称为安全策略域(安全域有时也被称为安全策略域(SecurityPolicyDomain,或,或realm)与之相对的是安全技术域(与之相对的是安全技术域(SecurityTechnologyDomain)一个安全技术域是指使用相同安全机制(例如一个安全技术域是指使用相同安全机制(例如Kerberos)的域)的域一个安全技术域可能包含多个安全策略域一个安全技术域可能包含多个安全策略域感谢你的观看2019年8月29l访问控制访问控制访问控制是安全技术的核心技术访问控制是安全技术的核心技术访问控制的形式包括:访问控制的形式包括:随意访问控制随意访问控制基于主体(或者主体组、角色)的访问即是随意访问控制基于主体(或者主体组、角色)的访问即是随意访问控制通常采用一个访问控制表(通常采用一个访问控制表( ACLACL )来控制主体对资源的访问)来控制主体对资源的访问ACLACL中包含主体的名字(或者组名字、角色名字等)列表中包含主体的名字(或者组名字、角色名字等)列表以及可以作用于各种资源的操作以及可以作用于各种资源的操作强制性访问控制强制性访问控制强制访问控制技术的基础是对主体进行分级别强制访问控制技术的基础是对主体进行分级别即为每个主体关联一个信任级别即为每个主体关联一个信任级别例如绝密、机密、秘密、一般等等例如绝密、机密、秘密、一般等等一般较高级别的主体拥有较高的可信度一般较高级别的主体拥有较高的可信度资源关联了一个级别指定访问该资源的主体所需要的最低级别资源关联了一个级别指定访问该资源的主体所需要的最低级别如果主体的级别高于或者等于资源的级别如果主体的级别高于或者等于资源的级别则该主体可以访问该资源则该主体可以访问该资源强制访问控制技术简化了维护强制访问控制技术简化了维护ACL的复杂度的复杂度感谢你的观看2019年8月294、安全审计、安全审计(Securityauditing)对于与安全相关的用户操作进行记录对于与安全相关的用户操作进行记录特别是需要对用户的身份进行识别特别是需要对用户的身份进行识别即使调用穿越了多个对象即使调用穿越了多个对象感谢你的观看2019年8月29抗抵赖抗抵赖(Non-repudiation)对用户的操作提供不可抵赖的证据对用户的操作提供不可抵赖的证据例如:例如:向数据接收者提供数据源证明向数据接收者提供数据源证明向数据发送者提供数据接收者证明向数据发送者提供数据接收者证明以避免数据接收者或者发送者以避免数据接收者或者发送者抵赖所进行的行为抵赖所进行的行为感谢你的观看2019年8月29安全管理安全管理(Administration)提供诸如安全策略一类的安全信息提供诸如安全策略一类的安全信息计算机安全是一个长久性的问题计算机安全是一个长久性的问题重要程度高重要程度高实现难度大实现难度大总之总之感谢你的观看2019年8月29三、Java安全体系安全体系1、Java2安全体系总体结构安全体系总体结构2 2、核心、核心Java安全体系结构安全体系结构3、Java加密体系结构加密体系结构4、Java加密技术扩展加密技术扩展5、Java安全套接字扩展安全套接字扩展6、Java认证与授权服务认证与授权服务感谢你的观看2019年8月291、Java2安全体系总体结构安全体系总体结构核心核心Java安全体系结构安全体系结构Java加密体系结构加密体系结构(JCA)Java平台Java认证与授权服务(JAAS)Java安全套接字扩展(JSSE)Java加密扩展(JCE)感谢你的观看2019年8月29核心核心Java安全体系结构安全体系结构操作系统与资源Java运行时引擎Java平台类类加载器字节码校验器安全管理器访问控制器许可策略保护域Java应用程序感谢你的观看2019年8月29Java加密体系结构加密体系结构Java加密体系结构(加密体系结构(JCA)为基于)为基于java的加密技术提供框架的加密技术提供框架JCA是基本的加密框架,主要为数据的完整性提供支持是基本的加密框架,主要为数据的完整性提供支持JCA还提供了若干接口,使用证书、数字签名等对主体进行标识还提供了若干接口,使用证书、数字签名等对主体进行标识JCA较多地依赖于非对称密钥体系较多地依赖于非对称密钥体系在实现上,在实现上,JCAJCA主要由如下四部分组成:主要由如下四部分组成:Java.securityJava.security:一组核心的类与接口:一组核心的类与接口提供了提供了JCAJCA提供商框架和加密技术操作提供商框架和加密技术操作APIAPIJava.security.certJava.security.cert:一组证书管理类和接口:一组证书管理类和接口Java.security.interfacesJava.security.interfaces:一组接口:一组接口用于封装和管理用于封装和管理DSADSA和和RSARSA公开密钥和私有密钥公开密钥和私有密钥Java.security.specJava.security.spec:一组类与接口:一组类与接口用于介绍公开密钥算法、私有密钥算法和参数规范用于介绍公开密钥算法、私有密钥算法和参数规范感谢你的观看2019年8月29Java加密技术扩展加密技术扩展Java 加密技术扩展(加密技术扩展(JCEJCE)在)在JCAJCA的基础上作了扩展的基础上作了扩展包括加密算法、密钥交换、密钥产生和消息鉴别服务等接口包括加密算法、密钥交换、密钥产生和消息鉴别服务等接口JCEJCE主要用于数据的保密性,较多地依赖于对称密钥体系主要用于数据的保密性,较多地依赖于对称密钥体系连接应用和实际算法实现程序的一组接口。连接应用和实际算法实现程序的一组接口。软件开发商根据软件开发商根据JCE接口,将各种算法实现后接口,将各种算法实现后打包成一个打包成一个Provider,可以动态地加到,可以动态地加到Java运行环境中运行环境中在实现上,在实现上,JCEJCE主要由如下三部分组成:主要由如下三部分组成:Javax.cryptoJavax.crypto:一组核心的类与接口:一组核心的类与接口提供了提供了JCEJCE即查即用即查即用SPISPI和加密技术操作和加密技术操作APIAPIJavax.crypto.interfaceJavax.crypto.interface:一组接口:一组接口用于封装和管理用于封装和管理Diffie-HellmanDiffie-Hellman密钥密钥Javax.crypto.spec:一组类:一组类用于密钥算法和参数规范用于密钥算法和参数规范感谢你的观看2019年8月29Java安全套接字扩展安全套接字扩展Java Java 安全套接字扩展是支持安全数据传输技术的一组接口安全套接字扩展是支持安全数据传输技术的一组接口JSSEJSSE不仅支持不仅支持SSLSSL还支持传输层安全(还支持传输层安全(TLSTLS)等协议)等协议在实现上,在实现上,JSSEJSSE主要由如下三部分组成:主要由如下三部分组成:Javax.net.sslJavax.net.ssl:一组与:一组与JSSE APIJSSE API相关的核心类和接口相关的核心类和接口Javax.netJavax.net:一组支持基本套接字与服务器套接字工厂的接口:一组支持基本套接字与服务器套接字工厂的接口Javax.security.cert:一组支持基本证书管理的接口:一组支持基本证书管理的接口感谢你的观看2019年8月29Java认证与授权服务认证与授权服务Java Java 认证与授权服务提供了一种基于客户身份的控制机制认证与授权服务提供了一种基于客户身份的控制机制核心核心JavaJava安全体系结构中的安全策略主要针对安全体系结构中的安全策略主要针对JavaJava代码的特性代码的特性这是一种代码中心型的访问控制这是一种代码中心型的访问控制 更常见的是用户中心型的访问控制更常见的是用户中心型的访问控制以以谁运行程序为基础申请控制谁运行程序为基础申请控制而不是以哪个程序被运行为基础而不是以哪个程序被运行为基础JavaJava认证与授权服务是认证与授权服务是为认证用户身份、向用户授权而提供的一套标准服务为认证用户身份、向用户授权而提供的一套标准服务在实现上,在实现上,JAASJAAS由如下四部分组成:由如下四部分组成:(1 1)javax.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包含一个登录模块接口包含一个登录模块接口感谢你的观看2019年8月29四、J2EE的安全服务1、目标、目标2、安全服务模型、安全服务模型3 3、安全服务、安全服务接口接口4 4、安全责任、安全责任感谢你的观看2019年8月29减轻应用开发者(如构件生产者)在安全管理减轻应用开发者(如构件生产者)在安全管理上的负担上的负担l通过通过EJB角色达到最大的覆盖率角色达到最大的覆盖率l容器厂商实现安全基础设施容器厂商实现安全基础设施(infrastructure)l部署者和系统管理员指定安全策略部署者和系统管理员指定安全策略(policy)安全策略的设置更灵活安全策略的设置更灵活l由组装者或部署者指定由组装者或部署者指定l而不是构件生产者开发时硬编码而不是构件生产者开发时硬编码保证保证EJB的可移植性的可移植性l不同的服务器可能采用不同安全机制不同的服务器可能采用不同安全机制1、目标、目标感谢你的观看2019年8月292、安全服务模型安全服务模型安全服务JAVA平台安全管理器构件构件容器121构件与构件容器的接口核心安全加密认证授权审计 . 2JAVA平台安全管理器向构件容器与构件提供的接口34JAAS安全管理器323455JAAS安全管理器向构件容器与构件提供的接口 JAVA 安全平台管理器向服务提供商要求的接口JAAS 安全管理器向服务提供商要求的接口感谢你的观看2019年8月293 3、安全服务、安全服务接口接口最主要的接口包括:最主要的接口包括:SubjectCertificatePrincipalPolicyLoginContextLonginModuleCallbackCallbackhandler感谢你的观看2019年8月29构件生产者构件生产者应用组装者应用组装者部署者部署者容器厂商容器厂商系统管理员系统管理员4 4、安全责任、安全责任感谢你的观看2019年8月29构件生产者的安全责任构件生产者的安全责任l调用其它调用其它EJBEJB体系没有为构件生产者提供编程接口控制调用体系没有为构件生产者提供编程接口控制调用者的主体者的主体(Principal)l在不同在不同EJB互相调用过程中传递的主体由部署者或系统互相调用过程中传递的主体由部署者或系统管理员以特定于容器的途径建立管理员以特定于容器的途径建立l构件生产者和组装者只能在部署信息中描述相关的需求构件生产者和组装者只能在部署信息中描述相关的需求l访问资源访问资源感谢你的观看2019年8月29l访问底层操作系统的资源访问底层操作系统的资源EJB体系没有定义访问体系没有定义访问OS资源的主体资源的主体EJB不能访问不能访问OS资源资源lEJB体系假设应用仅使用如数据库之类的资源管体系假设应用仅使用如数据库之类的资源管理器,不会直接使用理器,不会直接使用OS级别的资源级别的资源l推荐的编程风格推荐的编程风格构件生产者在业务方法中构件生产者在业务方法中l既不会实现安全机制,也不会硬编码安全策略既不会实现安全机制,也不会硬编码安全策略l通过部署信息委托部署者和系统管理员通过部署信息委托部署者和系统管理员构件生产者的安全责任(续)构件生产者的安全责任(续)感谢你的观看2019年8月29l如何编程访问调用者的安全上下文如何编程访问调用者的安全上下文Callerssecuritycontext声明声明l安全管理一般由容器执行,对构件透明安全管理一般由容器执行,对构件透明l只有在极少数情况下,业务方法才会访问安全上下文信只有在极少数情况下,业务方法才会访问安全上下文信息息在在javax.ejb.EJBContext中定义了两个方法中定义了两个方法ljava.security.Principal getCallerPrincipal();lBoolean isCallerInRole(String roleName);l如果调用请求中没有客户的安全上下文,则产生如果调用请求中没有客户的安全上下文,则产生java.lang.IllegalStateException构件生产者的安全责任(续)构件生产者的安全责任(续)感谢你的观看2019年8月29getCallerPrincipal()l返回当前调用者的主体返回当前调用者的主体java.security.Principal的接口定义的接口定义booleanequals(Objectanother);比较主体代表的对象是否与指定对象相同;比较主体代表的对象是否与指定对象相同;StringgetName()返回主体的名字;返回主体的名字;inthashCode()返回主体的返回主体的hashcode.StringtoString()返回主体的字符串形式返回主体的字符串形式感谢你的观看2019年8月29例子:例子:public class EmployeeServiceBean implements SessionBean EJBContext ejbContext; public void changePhoneNumber(.) .Context initCtx = new InitialContext();Object result = initCtx.lookup(java:comp/env/ejb/EmplRecord); EmployeeRecordHome emplRecordHome = (EmployeeRecordHome) javax.rmi.PortableRemoteObject.narrow(result, EmployeeRecordHome.class); callerPrincipal = ejbContext.getCallerPrincipal(); callerKey = callerPrincipal.getName(); EmployeeRecord myEmployeeRecord = emplRecordHome.findByPrimaryKey(callerKey); myEmployeeRecord.changePhoneNumber(.); . 感谢你的观看2019年8月29isCallerInRole(String roleName)l检查当前调用者是否具有指定的安全角色检查当前调用者是否具有指定的安全角色安全角色由组装者在部署信息中定义安全角色由组装者在部署信息中定义并被部署者分配给不同的主体(组)并被部署者分配给不同的主体(组)用以实现基于角色作用于请求的安全检查用以实现基于角色作用于请求的安全检查l这种安全检查不适于在部署信息的方法访问权限中声明这种安全检查不适于在部署信息的方法访问权限中声明感谢你的观看2019年8月29例子:例子:public class PayrollBean . EntityContext ejbContext; public 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安全角色的声明安全角色的声明如果代码中使用了某些安全角色,就必须如果代码中使用了某些安全角色,就必须在部署信息中声明被引用的角色名字在部署信息中声明被引用的角色名字在部署信息中的格式为在部署信息中的格式为 感谢你的观看2019年8月29Security-role-ref AardvarkPayroll . This security role should be assigned to the employees of the payroll department who are allowed to update employees salaries. payroll 感谢你的观看2019年8月29应用组装者的安全责任应用组装者的安全责任l定义安全视图定义安全视图(securityview)包含包含在在ejb-jar文件中文件中简化部署者的工作简化部署者的工作l如果没有安全视图,部署者将不得不了解业务方如果没有安全视图,部署者将不得不了解业务方法的内容才能部署相关的安全策略法的内容才能部署相关的安全策略l而业务方法的细节不是部署者应该而业务方法的细节不是部署者应该/可以了解的可以了解的l工作包括工作包括定义安全角色,方法许可,安全角色及其引定义安全角色,方法许可,安全角色及其引用的关联,安全标识用的关联,安全标识感谢你的观看2019年8月29l安全视图由一组安全角色组成安全视图由一组安全角色组成安全角色(安全角色(Securityrole)lAsemanticgroupingofpermissionsl用户必须拥有某种安全角色才能成功使用相应的用户必须拥有某种安全角色才能成功使用相应的应用应用l是一种逻辑角色,因为部署者可能根据运行环境是一种逻辑角色,因为部署者可能根据运行环境的特性修改甚至忽略组装者定义的安全视图的特性修改甚至忽略组装者定义的安全视图方法许可(方法许可(Methodpermission)l指允许调用一组指定的方法(指允许调用一组指定的方法(EJBHome或或Remote接口中的方法)的许可接口中的方法)的许可l组装者为每个角色定义了一组方法许可组装者为每个角色定义了一组方法许可感谢你的观看2019年8月29security-role This role includes the employees 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 EmployeeService *感谢你的观看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适用于方法重载适用于方法重载感谢你的观看2019年8月29employee AardvarkPayroll add money user 例子:例子:感谢你的观看2019年8月29安全角色及其引用的关联安全角色及其引用的关联l组装者必须将构件生产者声明的安全角组装者必须将构件生产者声明的安全角色引用与相应的安全角色链接起来色引用与相应的安全角色链接起来AardvarkPayroll. payrollpayroll-department .感谢你的观看2019年8月29指定安全标识(可选)指定安全标识(可选)l安全标识安全标识(securityidentity)作用于作用于EJB运行时运行时分为两种分为两种lUse-caller-identity使用调用者的安全标识使用调用者的安全标识lRun-as使用部署信息中为该使用部署信息中为该EJB指定的安全标识指定的安全标识Run-as:指不论哪个方法,指不论哪个方法,EJB的安全标识都是同一个的安全标识都是同一个安全标识必须是安全标识必须是role-name中定义的角色中定义的角色运行时安全标识的形式是主体运行时安全标识的形式是主体(principal)感谢你的观看2019年8月29例子:例子: EmployeeService. admin . .感谢你的观看2019年8月29部署者的安全责任部署者的安全责任l保证应用在指定运行环境中的安全保证应用在指定运行环境中的安全利用容器厂商提供的部署工具利用容器厂商提供的部署工具l读取组装者在部署信息中的安全视图读取组装者在部署信息中的安全视图l将安全视图映射到指定运行环境的安全机制与策略将安全视图映射到指定运行环境的安全机制与策略l最后输出安全策略描述信息(最后输出安全策略描述信息(securitypoliciesdescriptor)该描述信息的格式特定于容器厂商该描述信息的格式特定于容器厂商感谢你的观看2019年8月29l具体职责具体职责为应用分配安全域为应用分配安全域(securitydomain)和主体域和主体域(principalrealm)l一个应用可以有多个安全域一个应用可以有多个安全域l一个安全域可以有多个主体域一个安全域可以有多个主体域主体与安全角色的关联主体与安全角色的关联l通常部署者无需改变安全角色的方法许可设置通常部署者无需改变安全角色的方法许可设置l注意,这一映射不属于注意,这一映射不属于EJB体系的标准化范围,因此,体系的标准化范围,因此,该映射特定于具体的运行环境该映射特定于具体的运行环境如果多个独立如果多个独立的的ejb-jar文件使用相同的安全角色名,其分文件使用相同的安全角色名,其分配的主体可能不同配的主体可能不同感谢你的观看2019年8月29l具体职责(续)具体职责(续)配置配置EJB间调用传递的主体间调用传递的主体l与前面不同,部署者必须遵循组装者的需求与前面不同,部署者必须遵循组装者的需求如如,run-as-specified-identity管理资源访问的安全性管理资源访问的安全性另外,对于组装者忽略或无法指定的某些另外,对于组装者忽略或无法指定的某些安全要求,部署者必须承担相应工作安全要求,部署者必须承担相应工作l如,组装者没有指定安全角色或方法许可如,组装者没有指定安全角色或方法许可l这些工作的输出结果无需存储这些工作的输出结果无需存储在在ejb-jar文件中文件中感谢你的观看2019年8月29EJB客户的安全责任客户的安全责任l目标:目标:确保客户调用中包含的安全上下文不会影响服务器的安全确保客户调用中包含的安全上下文不会影响服务器的安全l客户必须遵循以下规则客户必须遵循以下规则处于某个事务中的客户不能在该事务期间改变其主体处于某个事务中的客户不能在该事务期间改变其主体l保证了同一事务中某客户发出的所有调用使用相同的安全上下文保证了同一事务中某客户发出的所有调用使用相同的安全上下文SessionBean的客户在一次会话期间不能改变其主体的客户在一次会话期间不能改变其主体如果某事务需要处理来自多个客户的事务性请求时,所有这如果某事务需要处理来自多个客户的事务性请求时,所有这些请求都必须具有相同的安全上下文些请求都必须具有相同的安全上下文感谢你的观看2019年8月29容器厂商的安全责任容器厂商的安全责任l部署工具部署工具允许部署者读取组装者的安全要求并设置允许部署者读取组装者的安全要求并设置运行时的安全属性运行时的安全属性部署工具应指导上述过程部署工具应指导上述过程此输出结果的存储是特定于容器的,必须此输出结果的存储是特定于容器的,必须保证在运行时对容器可用保证在运行时对容器可用感谢你的观看2019年8月29l安全域安全域一个容器提供了一个安全域和至少一个的主体域一个容器提供了一个安全域和至少一个的主体域lEJB体系没有指定体系没有指定EJBServer如何实现安全域以及安全如何实现安全域以及安全域的范围域的范围EJBServer可以(非强制)支持多个安全域或主可以(非强制)支持多个安全域或主体域体域l当一个服务器驻留了多个应用时,会出现多个安全域的当一个服务器驻留了多个应用时,会出现多个安全域的情况情况容器厂商的安全责任(续)容器厂商的安全责任(续)感谢你的观看2019年8月29l安全机制安全机制容器厂商必须提供安全机制以保证组装者设置的容器厂商必须提供安全机制以保证组装者设置的安全策略安全策略EJBServer提供的安全功能一般包括提供的安全功能一般包括l主体认证主体认证(Authentication of principals)lEJB调用与资源访问的授权调用与资源访问的授权(Access authorization)l远程调用的安全通信远程调用的安全通信容器厂商的安全责任(续)容器厂商的安全责任(续)感谢你的观看2019年8月29lEJB调用中主体的传递调用中主体的传递遵循部署者的设置遵循部署者的设置支持安全上下文中主体的操作支持安全上下文中主体的操作lgetCallerPrincipal()不同安全域之间主体的映射不同安全域之间主体的映射l提供机制与工具,由系统管理员设置提供机制与工具,由系统管理员设置系统主体系统主体lJVM执行执行EJB的方法时也需要主体,称之为系的方法时也需要主体,称之为系统主体统主体lEJB规范没有指定,以简化容器厂商的工作规范没有指定,以简化容器厂商的工作容器厂商的安全责任(续)容器厂商的安全责任(续)感谢你的观看2019年8月29l运行时的安全保证运行时的安全保证容器可以利用容器可以利用Java语言的安全机制语言的安全机制容器一般需提供以下安全功能容器一般需提供以下安全功能l客户访问控制,如方法许可客户访问控制,如方法许可l区分不同区分不同EJB以及同一个以及同一个EJB的不同实例的不同实例l限制限制EJB对容器的访问对容器的访问EJB只能通过规范定义的接口访问容器只能通过规范定义的接口访问容器(EJBContext)不允许不允许EJB获取某些系统信息,如获取某些系统信息,如容器的实现类,容器的运行时状态及上下文,容器的实现类,容器的运行时状态及上下文,其它其它EJB的引用及其管理的资源等的引用及其管理的资源等容器厂商的安全责任(续)容器厂商的安全责任(续)感谢你的观看2019年8月29l容器一般需提供以下安全功能(续)容器一般需提供以下安全功能(续)保证保证EJB持久状态的安全持久状态的安全l如,状态加密后再存储如,状态加密后再存储管理部署者指定的主体域管理部署者指定的主体域EJB或其它资源之间的映射或其它资源之间的映射如果同样的如果同样的EJB独立地部署多次(独立地部署多次(EJB的每次安装都会分的每次安装都会分配不同的配不同的JNDI名字)名字)l允许允许EJB不同的部署具有不同的安全策略不同的部署具有不同的安全策略l安全审计安全审计(audittrail)容器可以提供审计功能,如纪录所有的安全例外容器可以提供审计功能,如纪录所有的安全例外容器厂商的安全责任(续)容器厂商的安全责任(续)感谢你的观看2019年8月29系统管理员的安全责任系统管理员的安全责任l安全域的管理安全域的管理创建账号创建账号用户组中账号的增删等用户组中账号的增删等l主体的映射主体的映射如果客户与目标如果客户与目标EJB分属不同的安全域,分属不同的安全域,系统管理员应负责两者之间主体的映射系统管理员应负责两者之间主体的映射l映射的结果供部署者使用映射的结果供部署者使用l审计的复查审计的复查感谢你的观看2019年8月29思思 考考 题题什么是安全?包括哪些要素?什么是安全?包括哪些要素?J2EE安全模型是什么?安全模型是什么?J2EE安全体系中各参与者的责任是什么?安全体系中各参与者的责任是什么?感谢你的观看2019年8月29感谢你的观看2019年8月29
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号