工学访问控制课程设计实验报告.doc

上传人:文库蛋蛋多 文档编号:2401933 上传时间:2023-02-17 格式:DOC 页数:49 大小:2.50MB
返回 下载 相关 举报
工学访问控制课程设计实验报告.doc_第1页
第1页 / 共49页
工学访问控制课程设计实验报告.doc_第2页
第2页 / 共49页
工学访问控制课程设计实验报告.doc_第3页
第3页 / 共49页
工学访问控制课程设计实验报告.doc_第4页
第4页 / 共49页
工学访问控制课程设计实验报告.doc_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《工学访问控制课程设计实验报告.doc》由会员分享,可在线阅读,更多相关《工学访问控制课程设计实验报告.doc(49页珍藏版)》请在三一办公上搜索。

1、课 程 设 计 报 告科目: 访问控制 院系名称: 计算机科学与技术 专业班级: 信安1001班 学 号: U201014627 姓 名: 江 雪 指导教师: 汤学明 崔永泉 骆婷 报告日期: 2012.5.25 计算机科学与技术学院目 录第一部分 自主访问控制DAC4一、 实验目的4二、 实验题目及要求4三、 实验原理43.1 自主访问控制定义43.2 自主访问控制的矩阵模型53.3 授权管理方式63.3.2 分散式授权管理模式73.4 数据库访问技术7四、 实验环境8五、 实验设计85.1 程序主要功能模块85.2 数据库操作85.3 设置系统管理模式105.4 用户管理115.5 客体管

2、理125.6 权限管理17六、 实验结果176.1 管理员身份登录176.2 普通用户登录20第二部分 基于RBAC1的访问控制32一、 实验目的32二、 实验题目及要求32三、 实验原理323.1 基于角色的访问控制323.2 RBAC1模型33四、 实验环境34五、 实验设计345.1 程序主要功能模块345.2 数据库操作355.3 角色管理355.4 权限管理39六、 实验结果406.1 系统管理员登录系统406.2 设置主体416.3 创建角色426.4 建立角色层次关系436.5 角色权限配置446.6 主体角色配置456.7 主体U1登陆系统456.8 插入角色466.9 删除角

3、色47实验体会49参考文献49第一部分 自主访问控制DAC一、 实验目的 1、通过大型作业,使学生进一步熟悉访问控制的概念和基本原理; 2、培养学生将访问控制的各种技术和方法应用与实际进行实施的能力; 3、要求学生运用访问控制基本原理和方法结合实际充分发挥自主创新能力进行各有特色的设计。二、 实验题目及要求要求设计若干人及对话界面,通过这些界面定义和配置主体、客体以及权限,然后对主体进行自主授权、传递授权的操作,并能撤销授出的权限。修改主体对客体的访问权限后,观察系统访问成功和不成功的情况是否符合安全策略。三、 实验原理3.1 自主访问控制定义自主访问控制是指对某个客体具有拥有权(或控制权)的

4、主体能够将对该客体的一种访问权或多种访问权自主地授予其它主体,并在随后的任何时刻将这些权限回收。 自主访问控制保证系统资源不被非法访问,是一种有效手段,以保护用户个人资源的安全为目标,以个人的意志为转移,这种自主性满足了个人的安全需求为用户提供了灵活性,但对系统安全的保护力度是相当薄弱的。3.2 自主访问控制的矩阵模型 系统状态用一个有序三元组表示Q=(S,O,A), 其中S主体的集合 O客体的集合 A访问矩阵,行对应于主体,列对应客体设S=s1,s2,O=m1,m2,f1,f2,s1,s2 表 3.1 自主访问控制矩阵M1M2F1F2S1S2S1r,w,erc,r,wS2rr,w,ec,r,

5、e 矩阵是动态增大的:创建一个客体就增加一个列 进来一个主体就增加一个行 例如:原表项为:表 3.2 自主访问控制原表M1M2F1S1r,wra,eS2rr,w,a 增加客体f2后的自主访问矩阵变化为:(假设主体s1、s2对客体f2没有关联)。表 3.3 增加客体f2M1M2F1F2S1r,wra,eS2rr,w,a 增加主体s3后的自主访问矩阵变化为:(主体s3只对客体f2有r,w,a的权限)。表 3.4 增加主体S3M1M2F1F2S1r,wra,eS2rr,w,aS3r,w,a 回收权限的情况,状态本身也在变化。原来的自主访问矩阵为:表 3.5 自主访问控制原表M1M2F1S1r,wra

6、,eS2rr,w,a收回主体s1对客体m1的写访问权,及收回主体s2对客体m2的写访问权后,访问控制矩阵见表4.6。表 3.6 回收权限 M1M2F1S1rra,eS2rr,a 由以上分析可知,存储结构是一个大稀疏矩阵。3.3 授权管理方式3.3.1 集中式授权管理模式一个主体si在创建某个客体oj后,该主体就获得了对这一客体的c权和其它所有可能权限。c权意味着可以将它对oj所有其它(除c权以外)的访问权限授予系统中任何一个主休,也可以撤销系统中任何主体对oj的其它访问权限。其它主体因为对oj不具有c权,因此即使他们对oj具有某些访问权限,但它们也无权将这些权限转授给别的主体、或撤销别的主体对

7、oj的任何访问权限在这种管理模式下,对于任一客体oj,哪些主体可以对其进行访问,可以进行什么样的访问,完全由oj的拥有者决定。3.3.2 分散式授权管理模式 在分散式管理模式下,客体的拥有者不但可将对该客体的访问权授予其它客体,而且可同时授予他们对该客体相应访问权的控制权(或相应访问权的授予权)。 (1)允许传递授权; (2)当一个主体撤销它所授予的对某个客体的某种访问权限时,必须将由于这一授权而引起的所有授权都予以撤销。3.4 数据库访问技术自主访问控制系统是在数据库的基础上建立的,其中涉及到对数据库的操作,本实验中对数据库的操作是借助于LINQ技术实现的,本实验使用的数据库是SQL Sev

8、er。 LINQ(Language Integrated Query)是Visual Studio 2008中的领军人物。借助于LINQ技术,我们可以使用一种类似SQL的语法来查询任何形式的数据。目前为止LINQ所支持的数据源有SQL Server、XML以及内存中的数据集合。开发人员也可以使用其提供的扩展框架添加更多的数据源,例如MySQL、Amazon甚至是Google Desktop。 在本程序中,数据源采用的是SQL Server。LINQ包括五个部分:LINQ to Objects、LINQ to DataSets、LINQ to SQL、LINQ to Entities、LINQ

9、to XML。 在本实验中使用的是LINQ to SQL组件。LINQ to SQL 是 .NET Framework 3.5 版的一个组件,提供了用于将关系数据作为对象管理的运行时基础结构。 在 LINQ to SQL 中,关系数据库的数据模型映射到用开发人员所用的编程语言表示的对象模型。当应用程序运行时,LINQ to SQL 会将对象模型中的语言集成查询转换为SQL,然后将它们发送到数据库进行执行。当数据库返回结果时,LINQ to SQL 会将它们转换回可以用自己的编程语言处理的对象。四、 实验环境操作系统:Windows 7编程工具和语言:Microsoft Visual Studi

10、o 2010 C#五、 实验设计5.1 程序主要功能模块程序主要功能模块如图5.1所示。图5.1 程序主要功能模块图5.2 数据库操作 1.创建新的SQL Server数据库,选择本机的服务器,输入新数据库名称AccessData,结果如图5.2所示;图 5.2 创建新的数据库2.创建数据库AccessData中要存放的表。自主访问控制系统的数据库中主要是用到了以下四张表: (1)objects表 存放客体信息 (2)rights表 存放主体对客体的权限(3)rights_give表 存放授权信息(4)users表 存放主体(用户)信息创建成功后如图5.3所示;图 5.3 成功创建数据库表3.

11、为AccessData数据库创建DBML文件dac.dbml,并将所创建的表均添加到dac.dbml文件中,创建一个有关所有表的实体类,如图5.4所示;图 5.4 dac.dbml文件4.创建AccessData数据库的数据上下文类的实例dc;5.创建查询语句查询表中数据,将其中符合查询条件的数据返回指定变量中。5.3 设置系统管理模式设置系统管理模式是通过系统管理员在登录系统时进行选择设置的,默认的管理模式是集中式管理,如果是普通用户进行登录,可看到系统的可选择管理模式,但是却不能设置系统的管理模式。这部分功能的实现主要是通过在Program.cs文件中建立了一个类currentuser,用

12、来传递相关的当前用户的信息。类currentuser的定义如下:public class currentuser public String username; public String password; public string rule; public int groupid; public int flag=0; /当flag为0,表示集中式管理,当flag为1,表示分散式管理,默认为集中式管理 public void Setusername(String str) username = str; 其中,username可向多个子窗体结构传递当前使用系统的用户的用户名,flag可向

13、多个子窗体结构传递当前系统设定的管理模式,当flag为0,表示集中式管理,当flag为1,表示分散式管理,便于在后面的多个子窗口中进行调用。5.4 用户管理这一部分主要实现的是系统管理员登录系统后,对用户信息进行管理,具体可分为添加用户,删除用户,修改用户名和用户密码,如果用户要进行修改自己的用户名和用户密码,则需要向管理员申请。5.4.1 添加用户添加用户即是向数据库中的users表添加一项,管理员登录系统后,设定新加用户的用户名,密码,用户组后,便可向数据库中的users表添加一项。具体实现过程:(1)首先创建dacDataContext数据库的数据上下文类的实例dc,表达式为 dacDa

14、taContext dc = new dacDataContext(); (2)首先新建一个users表的变量con; (3)通过查询语句判断表中是否已经存在该用户名;如果存在则提醒管理 员系统中已经存在该用户,否则进行第4步;(4)对变量con的各个属性进行赋值, con.password = textBoxpwd.Text; con.user = textBoxUname.Text; con.groupid = int.Parse(textBoxgroupID.Text);(5)将con变量插入数据库,表达式为db.users.InsertOnSubmit(con);(6)更新数据库,表达

15、式为db.SubmitChanges();(7)更新用户管理信息窗体结构中显示的所有的用户信息,添加成功则可 在用户管理信息窗体结构中看到新添加的用户信息。5.4.2 删除用户删除用户即是删除数据库中的users表中指定用户名的一项,管理员登录系统后,输入要被删除用户的用户名,密码,用户组后,便可删除数据库中的users表中的一项。具体实现过程: (1)首先创建dacDataContext数据库的数据上下文类的实例dc,表达式为 dacDataContext dc = new dacDataContext(); (2)首先新建一个users表的变量con; (3)通过查询语句判断users表中

16、是否存在要被删除的用户名;如果不存在则提醒管理员系统中不存在该用户,否则将找到的用户信息对应的项赋给con,进行第4步; (4)删除users表要被删除的主体信息,表达式为 db.users.DeleteOnSubmit(con); (5)通过查询语句查找objects表中该主体创建的所有客体,删除objects表中该主体创建的所有的客体信息; (6)通过查询语句查找rights表中与该主体相关的权限信息,删除rights表中该主体所有的权限信息; (7)通过查询语句查找rights_give表中与该主体相关的授限信息,删除 rights_give表中该主体所有的授权信息; (8)更新数据库,

17、表达式为db.SubmitChanges();5.5 客体管理5.5.1 创建客体创建客体即是向数据库中的objects表添加一项,普通登录系统后,设定新加客体的客体名,客体内容后,便可向数据库中的objects表添加一项。具体实现过程: (1)首先创建dacDataContext数据库的数据上下文类的实例dc,表达式为 dacDataContext dc = new dacDataContext(); (2)首先新建一个objects表的变量obj; (3)通过查询语句判断objects表中是否已经存在要添加的客体的客体名; 如果存在则提醒用户系统中已经存在该客体,否则进行第4步; (4)对

18、变量obj的各个属性进行赋值, obj.objectname = this.textBox_objname.Text; obj.objectdata = this.textBox_objdata.Text; obj.owner = str; (5)将obj变量插入数据库中的objects,表达式为 db.objects.InsertOnSubmit(obj); (6)更新数据库,表达式为db.SubmitChanges(); (7)更新当前用户的客体管理信息窗体结构中显示的所有的客体信息,添加 成功则可在客体管理信息窗体结构中看到新添加的客体信息。5.5.2 查看客体当前用户想要查看某客体的内

19、容时,如果当前用户具有查看该客体的权限时,则可以进行查看该客体,否则系统拒绝该用户的请求。具体实现过程:通过匹配用户输入的客体名,查询rigths表中是否存在当前主体对该客体的权限,如果不存在则提醒用户不能查看该客体,否则显示客体的内容。5.5.3 编辑客体当前用户想要编辑某客体的内容时,如果当前用户具有编辑该客体的权限时,则可以进行编辑该客体,否则系统拒绝该用户的请求。具体实现过程:通过匹配用户输入的客体名,查询rigths表中是否存在当前主体对该客体的W权限,或者是否存在当前主体对该客体的O权限,即当前主体是否是该客体的创建者,如果不存在则提醒用户不能编辑该客体,否则可以编辑客体的内容。5

20、.5.4 删除客体当前用户想要删除某客体,只有客体的创建者才能删除该客体,如果当前用户是该客体的创建者,则可以删除该客体,否则系统拒绝该用户的请求。具体实现过程:查询rigths表中是否存在当前主体对该客体的O权限,即当前主体是否是该客体的创建者,如果不存在则提醒用户不能删除该客体,否则可以删除该客体。(1)判断当前主体是否是该客体的创建者;在删除客体时,与前面对客体的操作的处理不同的是,查看客体、编辑客体均是通过匹配用户输入的客体名在rights表中进行查找,而删除客体是通过获得选中行进行删除的。普通用户登录后,可以看到客体管理信息窗口,其中客体框是用DataGridView实现的,客体框内

21、显示的是当前用户可以操作的客体,用户在客体框内选中要删除的客体所在的行,由于该行中包括该客体的客体名以及当前用户对该客体的权限,程序便可获得该客体的客体名以及当前用户对该客体的权限。如果获得的权限字符串中包括O权,那么允许删除客体的操作,继续第2步,否则系统拒绝用户删除客体操作。(2)在objects表中删除该客体; (3)在rights表中删除所有主体对该客体的权限; (4)在rights_give表中删除对该客体的所有信息;(5) 提交更改到数据库, (6)更新客体管理信息窗口,更新权限管理窗口中当前主体可转授的权限和已转授的权限,更新主体管理信息,通过系统的提示或者查看客体管理信息窗口、

22、权限管理窗口和主体管理信息,均可发现是否已经成功删除客体。5.5.5 转授对客体的权限当前用户想要转授对某客体的某种权限,如果当前用户是该客体的创建者或者具有对该客体的控制权,则可以转授对该客体的某种权限,否则系统拒绝该用户的请求。具体实现过程: (1)判断当前系统管理模式是集中式管理还是分散式管理; 如果是集中式管理模式,则只允许客体的创建者转授对该客体的访问权,不可以转授对该访问权的控制权,如果是分散式管理,则用户可以同时转授对该客体的访问权和对该访问权的控制权。 (2)匹配用户输入的客体名,查找objects表中是否存在该客体,如果不存在,则系统会提示相应的错误信息,否则继续第3、4步;

23、 (3)集中式管理模式下 判断当前用户是否是该客体的创建者,是则继续判断rights表中是否已经存在一项主键和被插入记录相同的记录,存在系统会提示相应的信息,否则在rights表中插入一条新的记录,如果当前用户不是该客体的创建者,则系统会提示相应的错误信息。 在rights_give表中插入一条新的记录; 提交更改到数据库; 更新权限管理窗口中可转授的权限信息。 (4)分散式管理模式下 通过匹配客体名,主体名,权限在rights表中进行查询当前用户是否对该客体的访问权限具有控制权,如果存在控制权则继续,否则系统会提示相应的错误信息; 判断rights表中是否已经存在一项主键和被插入记录相同的记

24、录,存在系统会提示相应的信息,否则在rights表中插入一条新的记录; 在rights_give表中插入一条新的记录; 提交更改到数据库; 更新权限管理窗口中可转授的权限信息。 (5)通过系统的提示信息,或者查看权限管理窗口中显示的可转授的权限信息,或者查看主体管理窗口中的信息均可判断是否成功转授权限。5.5.6 回收对客体的权限当前用户想要回收对主体的某种权限,如果当前用户是该客体的创建者或者具有对该客体的控制权,则可以回收对该主体回收对客体的某种权限,否则系统拒绝该用户的请求。具体实现过程: (1)判断当前系统管理模式是集中式管理还是分散式管理;如果是集中式管理模式,则只允许客体的创建者回

25、收主体对该客体的访问权,如果是分散式管理,则只要存在相应的授权信息,便可进行回收权限; (2)匹配用户输入的客体名,查找objects表中是否存在该客体,如果不存在,则系统会提示相应的错误信息,否则继续第3、4步; (3)集中式管理模式下 判断当前用户是否是该客体的创建者,如果当前用户不是该客体的创建者,则系统会提示相应的错误信息,如果当前用户是该客体的创建者,则继续; 删除rights表中被回收的主体对该客体的记录; 删除rights_give表中对应的记录; 提交更改到数据库; 更新权限管理窗口中已转授的权限信息。 (4)分散式管理模式下 通过匹配客体名,进行回收的主体名,被回收的主体名以

26、及权限在rights表中进行查询当前用户是否对对该主体转授了相应的权限,如果存在则继续,否则系统会提示相应的错误信息;下面举例说明回收权限的过程: 比如user1收回user2对object1的读权限 1) 先删除rights表中user2对object1的读权限(该权限由user1授予)记录; delete from rights where username=user2 and objectname=object1 and rights=R and whogiveme=user12)再删除rights_give表中的授权记录; delete from rights_give where u

27、sername=user1 and object=object1 and rights=R and touser=user2 3)查询rights_give表,看是否有其他用户授予user2相同的权限,即对 object1的读权限,如果有记录,则停止权限回收; select * from rights_give where object=object1 and touser=user2 and rights=R 4)查询rights_give表,看user2是否将该权限转授给别人,如果无记录, 停止权限回收,否则转第1步继续。 select * from rights_give where o

28、bject=object1 and username=user2 and rights=R (5)通过系统的提示信息,或者查看权限管理窗口中显示的已转授的权限信息,或者查看主体管理窗口中的信息均可判断是否成功回收权限。这部分代码主要分为三部分,函数private void button_take_Click(object sender, EventArgs e)主要是判断当前的管理模式,然后选择调用函数;函数private void getback(string str0, string str1, string str2, string str3)实现的是集中式管理模式下回收权限;函数pri

29、vate void getback_2(string str0, string str1, string str2, string str3)实现的是分散式管理模式下回收权限。5.6 权限管理主体对客体的权限信息主要是显示在主体管理窗口,这部分又分为两个部分,一个是主体列表,一个是被选中的主体的权限信息。具体实现过程:(1) 主体列表使用的是ListBox控件,通过遍历users表,将查询到的每一个主体的主体名添加到ListBox控件中并显示出来;(2) 显示被选中的主体的权限信息使用的是DataGridView控件,当选中主体列表中某一行的主体时,在被选中的主体的权限信息框中便会显示出有关该

30、主体的所有权限信息。这部分主要就是通过单击ListBox控件某一行产生的响应事件来实现的。在响应事件中获得主体名,然后通过匹配主体名进行查询rights表,找出该主体的所有权限信息,并将查找到的项作为DataGridView控件的数据源,便可成功显示选中主体的所有权限信息。六、 实验结果6.1 管理员身份登录运行程序,使用管理员身份登录,这时系统将默认管理模式为“集中式管理”。如图6.1所示:图6.1 管理员登录登录成功后可看到,数据库中已经建立了user1,user2,user3三个主体,当前管理模式是集中式管理,还可以继续添加用户和删除用户。如图6.2所示。图 6.2 用户管理信息6.1.

31、1 添加用户 输入想要添加的用户的名字和密码,即可添加用户,如图6.3所示,成功添加用户uesr4。图6.3 添加用户成功 如果添加的用户在数据库中已经存在,那么系统会提示该用户已经存在,添加失败,如图6.4。图6.4 添加用户失败6.2.1 删除用户 用鼠标选择想要删除的用户,点击“删除用户”,就可以将该用户从数据库中删除。如图6.5所示。图6.5 删除用户6.2 普通用户登录输入用户名user1和密码,选择普通用户登录,如图6.6所示。这时我们可以选择两种管理方式:集中式管理和分散式管理,我们将在下面一一演示。图6.6 普通用户登录登陆后可以看到,目前我们还没有创建任何客体,如图6.7所示

32、。图6.7 初始客体信息表6.2.1 集中式管理模式下的权限管理6.2.1.1 创建和删除客体当前用户创建客体obj1,如图6.8。用户可以创建多个客体,用户创建的所有客体都将显示出来,并且可以通过“查看客体”进行查看。图 6.8 创建客体 当前用户删除客体obj11,如图6.9、图6.10。图 6.9 确认是否删除客体 图 6.10 删除客体成功6.2.1.2 权限管理权限管理页面分为可转授的权限和已转授的权限,结合上述操作,当前用户user1已经创建了客体obj1,那么便可转授对客体obj1的访问权限。下面user1将对obj1的读权限转授给user2,对obj1的写权限转授给obj3。图

33、 6.11 成功转授对obj1的读权限 由于当前管理模式是集中式管理,不能转授对访问权限的控制权。图 6.12 集中式管理模式下转授控制权失败 由下图可知,user2获得了对obj1的读权限,user3获得了对obj1的写权限。图 6.13 成功授权下面检测user2和user3是否真正获得了对应的权限。user2登录系统,并且读取客体obj1,由下图可知,user2读取客体obj1成功。图 6.14 user2成功读取客体obj1user2尝试编辑客体,但由于user2不具有对obj1的写权限,故此操作失败。图 6.15 user2编辑客体obj1失败user3登录系统,并且读取客体obj1

34、,由下图可知,user3读取客体obj1成功,同时也可以判断上一步操作中user2对obj1的修改失败。图 6.16 user3成功查看客体obj1user3尝试编辑客体,由于user3具有对obj1的写权限,故此操作成功。图 6.17 user3成功编辑客体obj1 user1登录系统,可查看obj1是否真正被修改了,由下图可知,obj1的确已经被user3修改了。图 6.18 user1查看obj1是否真正被修改user1回收user2对obj1的读权限以及user3对obj1的写权限。图 6.19 user1成功回收user2对obj1的读权限user1只对user3授予了对obj的W权

35、,如果要回收user3对obj1的读权限,系统会提示错误信息。图 6.20 user1回收权限失败user1成功回收user3对obj1的写权限后,可由权限管理窗口的已转授的权限信息为空判断出以上回收权限的操作的确成功。图 6.21 user1回收权限成功6.2.2 分散式管理模式下的权限管理6.2.2.1 转授权限普通用户user1,user2,user3,user4分别登录系统,并且分别创建客体obj1,obj2,obj3,obj4。然后user1将对obj1的W权限授予了user2,同时授予了user2对W权限的控制权。user2又将对obj1的W权限授予了user3,并允许user3再

36、授权,user3又将对obj1的W权限授予了user4,并允许user4再授权,user1又将对obj1的W权限授予了user4,但是没有授予user4对W权限的控制权。上述授权过程可用有向图6.22表示。图 6.22 对obj1的访问权限的转移 进行了以上授权后,通过主体管理窗口的信息判断授权是否成功,如图6.23、图6.24、图6.25、图6.26所示。图 6.23 user1的权限信息图 6.24 user2的权限信息图 6.25 user3的权限信息图 6.26 user4的权限信息6.2.2.2 回收权限user1回收对user2的授权,则此时user2授予user3的权限及user

37、3授予user4的权限也相应被撤销,虽然user4保留了直接由user1得到的写访问权,但是user4失去了对此访问权的控制权。图 6.27 user1成功回收了对user2的授权图 6.28 回收权限后user2的权限图 6.29 回收权限后user3的权限图 6.30 回收权限后user4的权限user3登录系统,尝试编辑客体obj1,但是由于user3对客体obj1的权限已经被回收了,所以操作失败,见图6.31。图 6.31 user3已经没有权限编辑客体obj1 下面user4登录系统,尝试转授对obj1的W权限,但是由于user3授予user4的W权限及控制权均已被回收,user4直

38、接从user1获得的权限并不具有控制权,所以操作失败,见图6.32。图 6.32 user4转授对obj1的W权失败第二部分 基于RBAC1的访问控制一、 实验目的 1、通过大型作业,使学生进一步熟悉访问控制的概念和基本原理; 2、培养学生将访问控制的各种技术和方法应用与实际进行实施的能力; 3、要求学生运用访问控制基本原理和方法结合实际充分发挥自主创新能力进行各有特色的设计。二、 实验题目及要求 要求设计若干人机对话界面,通过这些界面定义和配置角色、角色层次、用户角色(授权与回收)、角色权限(有继承关系不用重定义)多对多关系,然后对主体的访问权限进行控制实验;进一步,修改角色、角色层次、用户

39、角色、角色权限多对多关系,重复先前的实验,然后比较访问控制结果。三、 实验原理3.1 基于角色的访问控制基于角色的访问控制的核心是引入了角色的概念,它使得操作权限不是直接授予用户而是授予角色,用户通过角色身份来获得的相应的操作权限。基于角色的授权方法相对于单个用户授权,大大地简化了授权的机制和管理,在用户的工作职务发生变化时,只要转换他的角色身份,而不需要对其重新授权。当机构设置发生变化时,如某个部门撤销,某些部门合并等也可以不修改应用程序,而只要修改角色与用户、角色与操作权限之间的配置关系即可。3.2 RBAC1模型 RBAC1在RBAC0的基础上模型引入了角色层次的概念。在RBAC1模型中

40、用偏序来描述角色之间的层次关系。在该偏序关系中,高级别的角色继承低级别角色的所有权限。因此,一个用户若是某高级别角色的成员,则隐含了他同时也是低级别角色的成员,反之则不然。3.2.1 RBAC1模型定义 (1)U:表示用户集 R:表示角色集 P:表示权限集 S:表示会话集 (2)PAPR,是权限到角色的多对多的指派; (3)UA UR,是用户到角色的多对多的指派; (4)user: SU,会话和用户的单一映射,user(si)表示创建会话si的用户; (5)roles: S2R,会话和角色子集的映射, roles(si)表示会话si对应的角色集合; roles(si) r| (user(si)

41、, r )UA (6)会话si具有的权限集 (7)RHRR,是集合R上的偏序关系,称为角色层次关系; (8)roles: S2R,是会话和角色子集的映射函数,但和RBAC0略有不同, roles(si) r| $rr且(user(si), r )UA即会话si对应的角色集可以由建立该会话的用户所属的任何角色或低级角色组成。 (9)会话si所具有的权限即会话Si所具有的权限是由roles(Si)中的每一角色,以及与被这些角色所覆盖的低级角色相对应的权限组成的权限集。3.2.2 直接权限继承 一些角色继承模式通常使用术语角色来指代有名字的权限集合。这样,角色继承则是对权限子集的引用(例如,如果r2

42、所有的权限也都是r1的权限,那么就说 r1“继承”r2)。角色是独立于角色容器的存在而存在的。同样,用户和用户组也是分别管理的,将用户或组指派给角色也就是将角色定义的权限授予用户和组成员。3.2.3 权限和用户成员关系继承另一种继承模式使用术语角色来表示一种同时包含用户和权限的结构,在这种模式下,角色层次中的一个角色既在一方面代表权限集合,又在另一方面代表用户集合。处于角色层或其图表顶端的角色拥有更强大的角色权力,越接近图表底部的角色是越普遍的角色(例如,这些角色包含较少的权限和大量的用户)。将用户指派给角色,意味着将该角色的权限及其继承的其它角色的所有权限全部赋给该用户。四、 实验环境操作系

43、统:Windows 7编程工具和语言:Microsoft Visual Studio 2010 C#五、 实验设计5.1 程序主要功能模块 本程序的主要功能模块见图5.1。图5.1 程序功能模块图5.2 数据库操作数据库的相关操作和自主访问控制系统基本上是一样的,主要区别在于数据库表的不同。基于RBAC1的访问控制系统的数据库中主要是用到了以下6张表。 (1)roles表 存放所有角色信息 (2)roles_roles表 存放角色层次关系 (3)rights表 存放所有的权限信息 (4)roles_rights表 存放角色权限配置关系 (5)users表 存放主体信息 (6)users_roles表 存放主体所具有的角色信息5.3 角色管理5.3.1 创建角色 创建角色即是向数据库中的roles表添加一项,管理员登录系统后,设定新加角色的角色名后,便可向数据

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号