统一WEB平台安全模块总体设计方案.docx
- 文档编号:6366485
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:23
- 大小:321.63KB
统一WEB平台安全模块总体设计方案.docx
《统一WEB平台安全模块总体设计方案.docx》由会员分享,可在线阅读,更多相关《统一WEB平台安全模块总体设计方案.docx(23页珍藏版)》请在冰豆网上搜索。
统一WEB平台安全模块总体设计方案
1.引言
1.1.编写目的
为了统一WEB系统中的安全权限模块,以满足不同系统用户的需求并将该模块部分设计成统一的、稳定的、标准的、功能完善的后台配置权限管理工具,降低多个软件项目及多个项目组的开发成木、维护成本、项目实施成木,项目管理成木,提高工作效率,节省开发周期及开发费用投入,减少相应的测试维护改进功能的时间成本,同时可以减少由于开发人员变动带来的项目风险。
通过不断对其完善,力争形成一套通用、灵活、完全可复用且易嵌入应用系统的组件模块。
12项目背景
随着项目组开发的web系统越来越多,逐渐发现了如下需要解决的问题:
1)每套独立的系统都需要重新配置安全,授权管理这一模块,而且这部分属于重复开发,降低了开发效率,增加了开发周期及开发费用投入。
2)开发的系统越来越多,在需要集成的时候会发现,各个系统这一模块或多或少存在差异不兼容性,导致维护测试的困难,难以实现统一的认证授权功能。
而且各个系统的授权模块数据存放于不同的数据库中,无法统一对这些基础数据进行统一有效管理。
3)若日后需要将系统移进行移植,需反复配置,录入相关基础数据,如角色信息,权限信息这些都属于基础数据内容,不管在哪个系统中,这些信息大部分都无需改动。
4)同一用户在登录各个系统时,登录的帐号口令可能会有好多个,这样会导致用户难以同时记住所有的密码。
该模块正是基于上述需求,而设计开发的认证和授权管理类安全控制系统,提供与当前企业实际组织体系和业务模式相适应的分级分类认证和授权机制。
向用户和应用系统提供整合的认证和授权控制管理服务,提供用户身份认证到应用授权的映射功能。
提供用户控制的基于多种业务属性组合条件下灵活的授权和访问控制机制,简化具体应用系统的开发维护。
1.3.术语定义
RBAC(Role-BasedAccessControl,基于角色的访问控制),就是用户通过角色与权限进行关联。
简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。
这样,就构造成“用户-角色-权限”的授权模型。
在这种模型中,用户与角色之间,角色与权限之间,权限与资源之间,角色与资源,一般者是多对多的关系。
2.任务概述
2.1.模块功能目标
1.统一用户管理:
提供组织机构和用户的统一管理,整合分散的用户基本信息及帐号信息,实现一处操作,完成各应用系统用户的注册、增删改查等同步管理。
支持用户分级管理,只需本地管理员进行维护。
支持用户属性扩展,可满足企业WEB应用对用户属性的特定需求。
主要管理内容如下:
1)企业组织机构管理
对企业组织机构的创建、维护、删除操作,形成企业组织机构目录树。
2)用户生命周期管理
对用户的注册、变更和注销等管理。
3)用户信息管理
对用户的新增、修改、删除、停用/启用操作,对用户组、用户属性的管理。
提供用户检索、用户信息查询获取的公共服务和统一接口。
4)用户权限管理
用户对应用系统访问权限的授权管理。
5)用户信息同步服务
统一用户管理系统与木地各应用系统间的用户同步服务。
2.实现子系统统一权限管理,不管是简单的,还是复杂的权限管理要求,都用一套后台管理:
整合系统内部资源,实现统一权限划分,支持角色的定义和管理,支持机构部门角色,并对部门所属用户进行统一授权,支持RBAC(用户基于角色的访问)控制。
3.统一各个子系统的角色管理:
用户管理员完成对角色的添加、修改、删除操作。
角色支持以下几种方式进行归类:
(1)按所属部门定义角色,如:
综合部、财务部等;
(2)按用户的职务级别定义角色,女口:
一级经理、二级经理、三级经理等;
(3)按用户的职位定义角色,如:
综合秘书岗、财务岗等;(4)按群组定义角色,女山XXX项目组。
按角色的多级分层授权管理:
角色代表了一系列相关功能的有机集合。
按角色的多级分层授权符合日常管理和思维模式,可以简化管理、方便用户。
同时,角色的概念相对比较稳定,当出现人员变动的时候,只需要改变人员和角色之间的关联,无需调整一系列相关功能的授权。
支持文件(.txt、.Xis、.CVS等格式)批量方式导入/导出用户。
5・统一身份认证:
作为企业WEB平台的统一认证模块,是实现单点登录(SSO)的基
础,o所有的用户均可通过访问统一身份认证的入口来完成系统的单点登录。
同时包扌舌对session的同步控制。
6.日志管理:
提供了对日志的信息维护功能。
用户对人员信息可以进行查询、详细、创建、导出操作。
包含的字段:
序号类型内容结果备注状态创建时间创建人。
7.异常管理:
提供了对异常的信息维护功能。
用户对人员信息可以进行查询、详细、创建、导出操作。
包含的字段:
序号类型内容结果备注状态创建时间创建人
运行环境:
以SpringSeicutity为基础安全框架,tomcat为JEEWebserver,用户界面接口为JqueryEasyUI组件开发。
3.模块详细设计
3.1.模块详细结构
技术选型:
采用SpringSecurity3作为安全验证授权框架,相比SS2其优势有:
1)添加了对认证和访问成功及失败添加了精确的配置。
2)使用security命名空间对session访问和并发控制进行精确管理,统一了对session的控制。
3)增强了了对CAS,的集成,同时增加了LDAP的支持,使得系统可以进行统一用户管理,并可以架设于分布式的环境,快速的定位和标识用户以及可用的各网络元素和资源。
4)增强的方法访问声明,包括•基于注解的调用事先和事后访问检查和过滤,以及security命名空间配置对自定义bean行为的良好支持
5)
模块架构图如下:
图1系统总体架构图
总体结构说明:
•用户登录BI平台时,就进入Springsecurity对web资源的保护范围,并通过其提供的验证,授权功能进行控制。
通过它所提供的功能可以实现:
1.web资源的访问控制
2.LDAP认证授权机制
3业务方法调用访问机制
4.单点登录功能
•Usci•与Role为双向n:
n关系,Rolc与Authority为双向n:
n关系,Authority与Resource为双向n:
n关系,这四个基础安全相关实体类之间均为多对对关系,这样可以灵活配置资源权限,如角色可以直接与Resource建立双向多对多关系,直接将资源分配给角色,并统一保存到数据库。
对于管理子系统时,在表空间增加字段进行系统之间的区分。
•用为了安全目的,使用SpringSecurity3的LDAP认证方式进行用户信息验证。
将各个系统包括子系统的用户信息统一存储在LDAP目录中,在在用户登陆时,认证请求去访问LDAP服务器查询目录;同时基于LDAP的属性层次管理,可以清晰各个组织架构的信息,包括用户名称,密码,组合团队的分配,部门组织的等级结构等,都存储在LDAP中地址中。
LDAP的优势主要体现在:
跨平台:
可以在任何计算机平台上,用很容易获得的而且数目不断增加的LDAP的客户端程序访问LDAP目录;而且也很容易定制应用程序为它加上LDAP的支持。
在组织机构范围内实现和部署
LDAP,可以让运行在几乎所有计算机平台上的所有的应用程序从
LDAP目录中获取信息;而数据源可以放在任何地方,可以方便用户信息系统的集成,简化操作步骤。
LDAP协议是跨平台的和标准的协议,得到了业界的广泛认可,因此应用程序就不需关心LDAP目录放在什么样的服务器上。
效率高:
LDAP目录服务专门针对快速响应和大容量查询等读密集型的操作进行了专门的优化,因此,可极大地提高数据读取和查询性能。
安全性好:
LDAP提供很复杂的不同层次的访问控制或者ACL,以控制对数据读和写的权限,可以根据谁访问数据、访问什么数据、数据存在目录服务是提高网络安全、降低网管费用、减轻工作强度的有效工具。
成本低:
不像很多商用的关系型数据库,不必为LDAP的每一个客户端连接或许可协议付费,大多数的LDAP服务器安装起来很简单,也容易维护和优化。
统一用户管理需要遵循以下两个基本原则:
统一性原则:
实现对目前己知用户类型进行统一管理;对包括•分支机构在内的整个组织机构内的所有用户进行用户目录复制和统一管理;对门户的用户体系和各应用系统各自独立的用户体系进行统一管理;对新进员工/用户到员工/用户离开进行整个生命周期的管理
可扩充性原则:
能够适应对将来扩充子系统的用户进行管理。
3.1.1.统一用户管理(LDAP)
用户授权管理在统一用户目录和统一资源目录的基础上,实现针对不同角色的用户提供对统一的信息资源目录的灵活的授权策略;实现统一的分级分类授权等一系列管理。
SpringSecurity的LDAP认证大致过程:
1)从登录名中获得唯一的“辨别名称〃或DN。
2)验证这个用户,进行绑定用户,或调用远程“比较〃操作,比对用户的密码和DN在目录入口中的密码属性。
3)为这个用户读取权限队列。
用户信息以组织/部门/岗位角色以树状的层次结构来组织和管理
有以下好处:
a.同实际组织机构体系相一致;
b.同LDAP目录对数据的组织方式保持一致,便于利用LDAP目录服
务的
强大进行用户目录的管理;
C・有利于将某个地域/分支机构或某个部门/下属单位的用户信息定制推送到单独的用户目录服务器上,提高相关应用对用户信息的访问效率;
d.有利于根据目录树的结构给予不同的员工/用户组不同的权限
3.1.2.统一授权管理
统一授权控制管理是建立在基于统一用户目录管理的基础之上,在统一信息资源目录的管理下对信息资源进行统一的授权。
另外,在统一授权的同时,应该具备分层分级的授权管理,使得操作人员在页面分配权限时,需要对多级的组织机构进行授权管理,统一各层级的诸如增删改查等权限操作。
因此,统一用户管理系统在设计时就要能建立一个能适应各种系统权限管理要求的权限模型。
对于己建立的老系统,各系统将自己的用户角色管理,角色一权限管理等部分抽离出来,统一放在统一用户管理系统中,而对于新建立的系统,各系统在建设的初期就要把自己权限设计的要求提交给统一用户管理系统。
同时管理员就可以通过统一授权系统为各用户在不同系统的权限进行配置,在登陆时各系统就调用相关的统一认证和授权接口,获取用户相关的权限信息。
在统一授权时,应该先将系统中的权限进行划分,明确权限的粒度级别,以达到对整个系统及子系统的各粒度权限控制。
权限划分:
1)功能权限:
用户/角色具有访问哪些资源的权限。
如营销部门经理能访问营销模块url资源。
2)数据权限:
用户/角色具有访问哪些数据的权限。
如总经理能查看所有报表,而部门经理只能查看自己部门的报表。
3)字段权限:
指用户/角色对某些字段的访问。
在界面授权的时候,通过授予指定用户所能够访问的字段权限,从而将权限粒度控制到数据库列字段。
基于统一资源目录,对不同的资源进行授权:
通过统一资源目录映射到各应用系统的功能模块或子系统,从而在授权时,不用关心该应用在什么位置,具体有什么内容和作用;只需根据灵活的授权策略进行授权即可:
1)用户组/角色或级别授权:
对于属于某一用户组/角色或级别的用户,确定可被授权的信息资源列表。
2)针对信息资源授权:
对于信息资源目录中某一具体的信息资源而言,确定哪些用户组/角色或级别的用户可以对该信息资源拥有权限。
3)确定用户所属的用户组/角色或级别:
对于某一用户,确定该用户属于哪些用户组/角色或级别。
3.1.3.GUI用户界面
向用户呈现一个友好的图形界而,用户界而应该包括如下内容:
3.1.1.1统一用户管理界面:
虫部门
-角色
血用户
1)在这个界面中,管理人员可以方便的进行统一用户管理:
提供组织机构和用户的统一管理,整合分散的用户基本信息及帐号信息,实现一处操作,完成各应用系统用户的注册、变更和注销等同步管理。
支持用户分级管理,只需本地管理员进行维护。
支持用户属性扩展,可满足企业应用对用户属性的特定需求。
2)在界面用户数据呈现中,提供树形组织机构查看,并基于此进行
角色权限的控制。
女口:
系统分矣
O|
角色信息列裘
日B工平台
金翩口m
1
曲色名称
描述
窈分消管理名境
•
Wadnin
总级囱里员
eonnon.tscbor
言消輸导
5Ql«_heod 运营邹锁导 □CTO 技术魏居 3lzafzicc am 3-1.4-业务支撑层 应用访问接口模块 用户认证接口 内部控制模块 用户授权管理槌块 组织机构管理模块 应用权限定制权限模块 系统维护槌块 权限认ill: 模块 1 数据库 数据存储 1 用户认证服务器 统一授权模块逻辑结构图 业务支撑说明: 基于统一资源目录,对不同的资源进行授权: 因通过统一资源目录映射到各应用系统的功能模块或子系统中,从而在授权时,不用关心该应用在什么位置,具体有什么内容和作用;只需根据灵活的授权策略进行授权即可: 1)用户组/角色或级别授权: 对于属于某一用户组/角色或级别的用户,确定可被授权的信息资源列表; 2)针对信息资源授权: 对于信息资源目录中某一具体的信息资源而言,确定哪些用户组/角色或级别的用户可以对该信息资源拥有权限; 3)确定用户所属的用户组/角色或级别: 对于某一用户,确定该用户属于哪些用户组/角色或级别; 将所有系统的权限控制部分都建在统一用户管理系统中。 首先,统一用户管理系统在设计时就要能建立一个能适应各种系统权限管理要求的权限模型。 对于己建立的老系统,各系统将自己的用户角色管理,角色一权限管理等部分抽离出来,统一放在统一用户管理系统中,而对于新建立的系统,各系统在建设的初期就要把自己权限设计的要求提交给统一用户管理系统,按照其需求在本身统一用户管理系统的权限模型上去构建出该系统的实例。 那么管理员就可以通过统一授权系统为各用户在不同系统的权限进行配置,在登陆时各系统就调用相关的统一认证和授权接口,获取用户相关的权限信息,进到各系统后再创建用户,将相关的权限信息赋予给用户类,然后就可以在应用系统中进行权限验证。 这种方式既能对用户进行统一的授权和认证,也能展现各用户的统一权限视图,在本文中我们主要研究此种方法。 统一用户授权管理是以资源的授权、访问决策控制集中管理为目标,以资源的访问控制为导向,以资源的安全、防扩散为前提,将各个应用系统的所有受控资源进行统一授权,不仅可以保护应用系统的信息安全、建立全而的信息保密制度,同时满足对系统文档加密和授权需求,构建安全可控的文档安全、防扩散管理系统。 单点登录(CAS): 1.用户尝试使用应用程序的URL访问应用程序。 用户被重定向到CAS登录URL,采用的是HTTPS连接,他请求的服务的名称作为参数传递。 这时向用户显示一个用户名/密码对话框。 2.用户输入帐号和密码,CAS对他进行身份验证。 如果身份验证失败,目标应用程序根木不会知道这个用户曾经试图访问它一一用户在CAS服务器上就被拦住了。 3.如果身份验证成功,CAS就将用户重定向回目标应用程序,并在URL中附加一个称为ticket的参数。 然后,CAS尝试创建一个称为ticket-grantingcookie的内存cookie0这是为了以后进行自动的重新验证;如果存在这个cookie,就表示这个用户己经成功地登录了,用户就不需要再次输入他的用户名和密码。 4,然后,应用程序要检查这个ticket是否正确,以及是否代表一个有效用户;检查的方法是,打开一个HTTPS连接来调用CASservicidateURL,并作为参数传递ticket和服务名称。 CAS检查这个ticket是否有效,以及是否与请求的服务相关联。 如果检查成功,CAS就将用户名返回给应用程序。 3.1.5.数据访问层 安全模块包括组织结,用户,角色,权限,url资源(统称为安全相关实体)和安全控制两部分,同时还要主要对安全元数据的管理(metaData)木身也出于安全控制的范畴,权限控制粒度到数据库表字段,通过获取登录用户判断权限,提供用户在其权限范围内所能进行的操作。 在Springsecurity框架中,应用系统中至少应该存在实体包括: 用户(组),角色,权限,资源,其中它们之间的关系应该为: 一个用户可以对应多个角色,一个角色可以对应多个用户。 多对多关系。 一个角色可以对应多个权限,一个权限可以对应多个角色。 多对多关系。 一个权限可以对应多个资源,一个资源可以对应多个权限。 多对多关系。 一个角色可以对应多个资源,一个资源可以对应多个角色。 多对多关系。 一个用户可以属于一个用户组,一个用户组包含多个用户,一对多关系。 通过这样的实体关联,可以满足大部分的需求,在业务层中,提供对这些数据操作的业务方法。 各个实体的属性设计请见数据库设计。 3.1.6.模块部署 模块开发完成时,采用maven打成jar包的方式,添加到所需的web系统中,这样就可以以组件的方式,实现该模块与其他业务模块的解耦。 为了实现单点登录,需要部署CASServer服务器,并且CASServer依赖于统一安全权限组件。 如图: 3.2.外部接口设计 3.2.1.用户接口 本模块为B/S系统中的一部分,因此采用B/S的架构,包括用户界面接口,业务方法接口,数据访问接口。 用户界面接口主要包括以下几方而的内容: (1)用户登陆界面 •界面功能: 系统通过Springsecurity验证登录用户的信息与鉴权信息。 经过业务处理子系统处理后允许合法的系统用户登录系统、同时拒绝非法登陆请求。 •界面元素: 提供用户输入用户名和登陆密码的文木框、用户提交数据所需的submit按钮、系统返回给用户的处理信息表单。 •界面转移: 合法用户一一界而前转到功能选择主页而。 非法用户一一界面前转到错误提示页面。 (2)系统管理界面 •界面功能: 提供一个可视化、友好的界面对操作员表、功能模块表、操作员级别表中的记录进行增、删、改、查,以及权限映射自定义等操作。 •界面元素: 提供操作员、功能模块、操作员级别的查询结果表单,用户以此为基础,点击每条记录中相应的按钮进行增、 删、改、查操作。 对每一类操作用户提交数据所需的submit按钮、系统返回给用户的处理信息表单,角色分配授权按钮。 如下图示例: 角色名: 叵删亲夕授权 □角色名中游就 adTiin student departneni^kead 俯“心賤血r noduLejerson 技梱絹 jS3.|角色世連x 0sdr«)n 运苣却滴 dcpartnenljieM Sffla □comg-tgch" «Ti0dulc_person 枝术印絲导 角色名: T匚空孔f劳別迄国匚兰笛佟务言遲站匚希结条虫彻 ■一口班扌陆子系统 PLJ畤月鱼首n□扌舔设计老=lC^导岀m□寸吐设计老 4□其它 弓□个人信見 ■J13系统肆 勻巨用户总理 .7匡牧琅管诬 T巨}UH偕理 国巨角色岂里 「9确定,[凭取涓j JD▼ (3)多系统权限配置界面 •界面功能: 提供一个可视化、友好的界面对各个相关子系统中的操作员表、功能模块表、操作员级别表中的记录进行增、删、改、查,以及权限映射自定义等操作。 •界面元素: 多系统权限配置与单个系统的配置方案相关,只需要选择相应系统界而进行配置即可,因此界面功能中,需要提供选择系统的tab页操作。 对于查询统计项,用户接口提供多种选择一一单选按钮、复选框、下拉选择控件、文本框,以及用户根据界而提示设置好查询统计条件后,对每一类操作提交数据所需的submit按钮,如下示例样图: [百氏T用nwif疋 •界面转移: 操作成功一一界面前转到结果显示页而,提供查询统计数据。 操作失败一一界而前转到错误提示页面告知用户失 败原因。 3.3.内部类与接口详细设计 3.3.1.权限服务接口 安全服务接口主要是提供对系统中(或者子系统)相关实体功能逻辑服务处理。 安全服务接口主要实现以下功能: (1)用户管理 实现接口为Userservice,负责系统中用户信息的维护,创建,增,删,改,查;对外提供操作用户表的业务方法。 在多个子系统中,同样是通过该接口提供操作通用性操作个子系统用户的方法。 (2)角色管理 实现接口为RoleService,负责系统中用户信息的维护,创建,增,删,改,查;对外提供操作用户表的业务方法。 在多个子系统中,同样是通过该接口提供操作通用性操作个子系统用户的方法。 (3)资源管理 实现接口为Resourceservice,负责系统中用户信息的维护,创建,增,删,改,查;对外提供操作用户表的业务方法。 在多个子系统中,同样是通过该接口提供操作通用性操作个子系统用户的方法。 (4)权限管理 实现接口为AuthourityService,负责系统中用户信息的维护,创建,增,删,改,查;对外提供操作用户表的业务方法。 在多个子系统中,同样是通过该接口提供操作通用性操作个子系统用户的方法。 (5)安全相关实体的管理类管理,包括用户,角色,资源与授权类。 实现接口为SecutityManagerService,负责系统中用户信息的维护,创建,增,删,改,查;对外提供操作用户表的业务方法。 在多个子系统中,同样是通过该接口提供操作通用性操作个子系统用户的方法。 3.3.2.数据访问接口 数据访问接口为为操作相关安全实体的DAO接口。 (1)数据访问 数据访问接口提供的操作函数直接存取。 主要访问数据库DAO接口大致如下: publicclassUserDaoextendsHibernateDeovUser;String> 主要内部函数: publicHashMaploadDetailUserlnfo(Stringscode){} publicPagesearchUser(...){} publicbooleandeletellser(Stringcode){} publicclassRoleDaoextendsHibernateDao 主要内部函数: publicList publicPagesearchRole(...){} publicbooleandeleteRole(Stringcode){} publicbooleanupdateRolePower(Stringroles,Stringress) publicclassAuthorityDaoextendsHibernateDao 主要内部函数: publicList publicPagesearchAuthority(...)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 统一 WEB 平台 安全 模块 总体 设计方案