分享
 
 
 

自我消遣之二:权限管理与访问控制概要设计

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

本文在第一篇“四维权限管理模型”的基础上,将起思路和解决方法运用到产品模块设计上。根据普通业务系统中与权限相关的两用例:权限管理和访问控制(即:访问验证),进行了概要设计(已作删减)。

1.引言

1.1编写目的

1.2项目背景

1.3术语与约定

安全对象

访问受控制的对象,如:“报表”、“项目”等。系统中主要的“业务对象”都是典型的安全对象。

访问场景

一个访问场景将提供诸如“操作者”、“被操作对象”、“操作方法”、“业务状态”、“有效期限”等元素,供访问验证判断所用。根据分析(详见参考文档中的说明),每个访问场景至少包括三个必须的元素:

“操作者”,用户、角色、用户组、单位等;

“被操作对象”,具体的业务对象,如“报表”;

“操作方法”,对应被操作对象的基本操作和业务操作,依赖于“被操作对象”。

访问场景中的其他元素,如“业务状态”、“对象所属”、“有效期限”等在本次设计中不是必须满足项,但兼顾设计。

系统功能

一个业务系统的功能项也受访问控制。在一个访问场景中,将整个业务系统视为“被操作对象”,各系统功能就成为了访问场景中的“操作方法”,便于模型的统一。

访问控制

或访问验证,系统中发生访问场景时,进行允许或禁止,不同于权限管理。详见2.任务概述。

权限管理

或访问控制管理,对访问规则进行维护管理,不同于访问控制。详见2.任务概述。

1.4参考资料

内部

四维权限管理模型

外部

2.任务概述

与权限相关联的有“访问验证”和“访问控制管理”两项主要任务:

访问验证

根据事先定义的访问许可规则对系统中的各种访问操作(含对系统功能的访问、对业务对象的访问)的合法性进行验证。是访问许可规则作用的动态实现。

访问控制管理

主要是管理维护系统允许中各种访问操作时各种因素(访问者、访问系统功能、访问业务对象、访问业务规则等)之间的关系。是对访问许可规则静态管理维护的实现。

涉及用例

“访问验证”和“访问控制管理”在系统中是两个用例。其中“访问控制管理”以权限管理模块来实现(与系统具体业务关联紧密,本次迭代不涉及),“访问验证”以访问控制模块来实现。除开数据的依赖,在业务上两者相互独立。

3.用例分析

用例名称:访问控制

描述:根据业务需求和安全需求,当在其他用例中发生对安全对象进行访问时,访问控制对这一行为进行允许或禁止控制。

前置条件:其他用例对安全对象的访问被激活。

后置条件:无

基本事件流:

1)其他用例请求对某一安全对象进行访问,事件流开始;

2)根据当前访问场景的各元素(操作者、被操作对象、操作方法、有效期限等)进行访问验证,得到验证结果;

3)根据验证结果对当前访问进行允许或禁止,事件流结束。

可选事件流:略。

部署约束:

在有访问控制要求的其他用例所在的物理层或逻辑层中均可以访问本用例。

活动图:略。

非功能需求:对单个安全对象访时,访问验证时间消耗与访问操作本身的时间消耗在同一数量级以内。

未解决问题:无

说明:

4.对象设计

4.1用例中的对象

边界对象<>:无

控制对象<>:即访问控制者对象AccessController,由该对象对访问进行控制。

实体对象<>:即某一安全对象。

操作流程对象<>:用于引发访问场景的流程的抽象,如某个业务操作。

说明:访问控制者对象AccessController是唯一在本用例中可以完成设计的对象,其他对象均属于其他用例,但访问控制的实现需要这些对象在设计模式上进行配合。

4.2用例中的行为

访问验证:由访问控制者对象所有,由操作流程对象(即某一业务操作)激发。访问验证需存在于一个具体的访问场景中,是对原子化的操作访问的允许或禁止判断。

权限逻辑运算:当操作流程对象引发对多对象的访问时,并因此在该访问场景中,根据访问验证出现权限干涉、权限二意性时,权限逻辑运算根据安全逻辑或业务逻辑对权限进行合并或筛选。权限逻辑运算由操作流程对象激发。

对象访问:由其他用例直接发起,或委托操作流程对象发起。对象访问需通过访问验证和权限逻辑运算。

4.3对象时序图

4.4类定义

对安全对象的访问控制在用例中适应对象访问控制者对象来完成,该对象以ObjectAccessController类实现:(采用接口化设计的分析过程详见参考文档)

5.类实现设计

5.1类实现

安全对象访问控制者类ObjectAccessController

说明

主要成员

ValidateRules:java.util.ArrayList

验证规则数组,用以容纳不同的验证规则类ValidateRule,本项目仅包含ACM验证规则对象――ACMAccessValidate。

主要方法

public static bool IsValidate(ISecurityObject,

IOperator,

IOperateMethod)

用于验证访问操作合法性的验证函数,该函数调用类的验证规则数组中所有的验证规则类逐一验证,最后汇总作出判断

验证规则抽象类ValidateRule

说明

用于使所有的验证规则对象具有相同的调用格式

主要成员

主要方法

public bool Validate( ISecurityObject

IOperator,

IOperateMethod)

用于验证访问操作合法性的验证函数

ACM验证规则类ACMValidateRule

说明

用于实现按照ACM进行访问验证

主要成员

主要方法

public override bool Validate( ISecurityObject

IOperator,

IOperateMethod)

用于验证访问操作合法性的验证函数

备注:用于支持访问控制用例,访问场景中的元素在均被定义为标准接口的实现。

安全对象:ISecurityObject

操作者:IOperator

操作方法:IOperateMethod

其他用例在实现类设计时,需从这里继承。

5.2数据实现

本次迭代中,仅ACM验证规则类ACMValidateRule需要实现。ACM作用原理详见参考文档中的分析。

“访问控制矩阵(规则)表”

字段说明

字段名

数据类型

是否允许为空

数据完整性

流水号

id

Int

Not null

PK

有效码

IntValid

Int

Not null

Default“0”

安全对象类型

chrSOType

Char(20)

Not null

安全对象ID

IntSOId

Int

Not null

FK

操作者类型

ChrOprType

Char(20)

Not null

操作者ID

IntOprId

Int

Not null

FK

操作方法名称

ChrMethod

Char(20)

Not null

有效期开始时间

DtmActive

Datetime

Null

有效期结束时间

DtmExpired

Datetime

Null

业务流程状态码

IntProcessState

Int

Null

安全对象状态码

IntSOState

Int

Null

说明:

根据该表记录,读取相应“有效码”,无记录(即无有效码),为访问禁止,否则为访问许可。

“有效码”用于扩展

“有效期开始时间”、“有效期结束时间”用于以后的有效期权限验证,可取消

“业务流程状态码”、“安全对象状态码”用于以后的业务条件权限验证,可取消

6.负载平衡设计

业务系统中如有L个安全对象,每个安全对象有M个受访问控制操作方法,并有N个不同的访问者,按照非乐观估计:“访问控制矩阵(规则)表”会有L×M×N条记录。

建议在安全对象较多时,为每个安全对象建立1对1的访问控制表,提高效率,平衡负载。

...

- end -

Beegee: 和我在一个产品开发中共事了半年的部门经理(其实是产品经理)告诉我可以离开项目组了。半年前,他委托我设计他的产品中的权限管理模块。于是,我用我贫瘠的大脑给他想了些方案。难得他还那么看得上,支持我实现了我的设计,当然也加了不少我不喜欢的东西。现在,却因为一些原因我要离开这个产品组了,这位经理也不准备对这个模块再作更多的投入了,于是我想我可以把我的这些的想法拿到我的Blog中了,算是自我消遣吧。^_^,也希望能够帮助其他程序员完善他们自己的设计,全当反面教材啦!

共两篇:

1.“ACM四维权限管理模型

2.“权限管理与访问控制概要设计”(本文)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有