j2ee|安全|体系
电子平台的安全模式设计
1、 前言 由于电子平台的办公信息的敏感性以及网络的虚拟性和开放性,决定了电子平台系统需要有强有力的用户访问安全、网络安全、系统安全、应用程序安全、数据库和事务管理器安全来保证电子平台系统的安全。而系统采用J2EE框架正是满足以上需要,它不但将安全任务的一些内容转移给容器,且能够提供应用程序员完成安全任务的功能。
2、 方案的整体设计
1、 用户访问安全:
用户访问安全不仅仅是Web访问,还包括其他类型的访问,例如电子数据交互(EDI,Electronic Data Interchange),在电子平台系统中我们主要用到的是webservice。为了保证用户访问的安全性,我们主要从以下几个方面来考虑
Ø 定义验证方法:这部分包括CAS的验证、系统的基本验证
Ø 定义安全角色:为不同的用户建立不同角色,避免了不同角色之间在权限上的混乱。
Ø 为单个的servlet/jsp定义安全角色引用:为一些比较特殊的或则安全级别比较高的servlet/jsp定义安全角色引用。
1) Web访问:
将电子平台系统所使用的WEB系统配置成安全的WEB系统,采用要求用户访问时提供数字证书的工作方式,使用HTTPS协议保证信息传输的安全性及完整性;将从用户提交的数字证书中获取的用户信息(如姓名)作为在系统中注册、登录的依据,从而保证了在处理业务的时候具有法律性和不可抵赖性。另一方面,HTTPS协议将Web应用与非授权的访问隔离开来。
1) Web Service
这一部分内容暂定
2、 网络安全 网络安全主要就是保证机密性和信息完整性,为此我们采用了集中认证的登录模式,将有证书和无证书用户的访问隔开来,从而保证了网络的安全性能。下面就是集中认证模式的一个网络视图,其中CA服务器,是采用第三方CA认证机构信诚通的服务器。
集中认证网络示意图
3、 系统安全
系统的安全主要是在用户登录系统的时候对用户的身份验证。
4、 应用程序安全
为J2EE应用程序提供J2EE安全,由于电子平台系统与集中认证的系统相独立,故只需要在电子平台系统中提供J2EE相关安全就可以保证整个系统的安全性。J2EE应用程序安全使用基于角色的安全机制,在开发期间,我们应当通过为特定的安全角色分配安全资源和方法来确定应用程序的安全策略。在应用程序装配期间,安全角色被影射为真实的用户和组。这种两段式安全管理方法给予应用程序很大的灵活性和可移植性,在运行时,J2EE容器负责强迫执行访问控制安全的资源和方法。J2EE容器支持两类安全:
·说明性的安全性
·可编程的安全性
我们在本系统中采用说明性的安全性,说明性的安全性意味着安全策略在部署描述文件中定义,而不是在应用程序代码中。这样做,一是减轻编码的工作量;二是可以根据客户的要求更改角色,而不需要更改代码。下面我们分为Web模块和Ejb模块来讨论
1)Web模块的说明性安全
我们在前面的“用户访问安全”讨论的,为了保证用户访问安全,我们从定义验证方法、定义安全角色、为单个的servlet/jsp定义安全角色引用三个方面进行设计的,Web模块的说明性安全就是为了实现“定义安全角色”、“为单个的servlet/jsp定义安全角色引用”这两个要求,为了方便讨论我们将这连个要求分开讨论。
定义的几种角色:
大众用户 everyone
企业用户 enterprise
质检用户 organ
市监督局 city_ surveillance
省监督局 province_ surveillance
国家监督局 country_ surveillance
平台管理员 plat _manager
(A)定义验证方法:
(B)定义安全角色:
(C)定义安全约束:
(D)为单个的servlet/jsp定义安全角色引用(可选):
2)EJB模块的说明性的安全性
EJB是执行应用程序的业务逻辑的J2EE组件。它是一般用于访问敏感的数据。这样,为EJB指派恰当的策略是非常重要的。
访问控制应用于单独的会话和实体bean方法,所以只有属于特定安全角色的调用这些方法。会话、实体和消息驱动bean方法在调用者(EJB服务器)的身份下或者一个特定的安全角色下被委托执行。这称为委托策略(Delegation Policy)或者成为以他人身份运行模式映射(Run-As Mode Mapping)。下面主要就我们电子平台的Ejb模块在WSAD上设置安全性的过程。
(A)定义安全角色
(B)指派方法许可
(C)管理委托策略
(D)bean级委托
(E)方法级委托
(F)定义安全角色引用(可选)
5、 数据库和事务管理器的安全
未完成,
3、 系统的安全登录的流程
1、 集中认证登录的一个流程
2、 集中认证较普通认证的优势
4、 系统开发过程中注意的事项
前台:将不同的用户分成各自的模块:eterprise(企业)、organ(机构)等等,若有需要可以自己定义,然后做好文档说明,以便部署的时候进行Web模块的说明性安全部署,具体编码规范请参考相关文档。
后台:将不同的用户的一些操作分成各自的模块:eterprise(企业)、organ(机构)等等,每个模块最好由独立的实体Bean,若有需要可以自己定义,然后做好文档说明,以便部署的时候进行EJB模块的说明性安全部署。(关于EJB开发规范、JNDI命名规范请参考《EJB开发规范》、《JNDI命名规范》两个文档)。
5、 总结
数据库和事务管理器的安全这一块内容有待补充。