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