ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:1.72MB ,
资源ID:5132132      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5132132.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(访问控制课程设计实验报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

访问控制课程设计实验报告.docx

1、访问控制课程设计实验报告访问控制课程设计实验报告 自主访问控制实验 基于角色的访问控制(RBAC1,RBAC2)计算机科学与技术学院一、 自主访问控制实验1. 实验目的 通过课程设计,使学生进一步熟悉访问控制的基本概念和基本原理; 培养学生将访问控制的各种技术和方法应用于实际进行实施的能力; 要求学生运用访问控制基本原理和方法,结合实际充分发挥自主创新能力进行各有特色的设计;2. 实验环境及工具 操作系统:Microsoft Windows 7 数 据 库:Microsoft SQL Server 2005 编译平台:Microsoft Visual Studio 20083. 实验内容 对主

2、体、客体、权限进行定义和配置; 对主体进行自主授权; 对主体的访问权限进行控制; 对主体进行传递授权与回收;4. 程序与数据库设计4.1 数据库设计数据库中包含三张表,分别用于存放主体、客体和权限信息:用户表users_table:字段名数据类型说明user_namenchar(10)用户名user_pswnchar(10)用户密码user_groupint用户组别客体表objects_table:字段名数据类型说明object_namenchar(10)客体名object_datanchar(10)客体数据内容object_creaternchar(10)客体创建者权限表power_tabl

3、e:字段名数据类型说明power_usernchar(10)主体名power_objectnchar(10)客体名power_typenchar(10)权限类型power_givernchar(10)授权者数据表键值定义:表键值users_tableuser_nameobjects_tableobject_namepower_table(power_user,power_object,power_type,power_giver)外键设计:外键表外键字段关联表外键关联键值字段power_tablepower_userusers_tableuser_namepower_tablepower_ob

4、jectobjects_tableobject_name4.2 程序设计程序采用MFC基于对话框的应用程序设计界面,采用MFC CDatabase和CRecordset类访问数据库。1. 界面设计界面设计采用了通用的对话框程序形式,效果如下:开始菜单有:登录、重新登录、退出子菜单项管理菜单有:用户管理、客体管理、授权管理、账户管理子菜单项2. 创建用户直接在users_table表中加一项数据,执行的SQL语句如下:insert into users_table(user_name, user_psw, user_group) values(%s,%s,%d)3. 删除用户依次按照表格中的操作

5、执行:操作SQL语句说明获得用户创建的客体列表select * from objects_table where objects_table.object_creater=%s通过数据集获得创建客体列表删除没一个创建的客体删除客体的算法下面说明对每一个创建的客体都要删除删除权限表中和该用户相关的所有项delete from power_table where power_table.power_user=%s无删除用户表中该用户条目delete from users_table where users_table.user_name=%s无4. 创建客体创建客体需在客体表中添加一项,并且在把对

6、该客体的所有权限添加给创建者,实现中定义了读(R)、写(W)、添加(A)、删除(D)、控制权(C)、拥有权(O),操作如下:操作SQL语句说明添加客体项insert into objects_table (object_name,object_data,object_creater) values(%s,%s,%s)无添加R权限insert into power_table (power_user,power_object, power_type,power_giver) values(%s,%s,R,null)无添加W权限insert into power_table (power_user

7、,power_object,power_type,power_giver) values(%s,%s,W,null)无添加A权限insert into power_table (power_user,power_object,power_type,power_giver) values(%s,%s,A,null)无添加D权限insert into power_table (power_user,power_object,power_type,power_giver) values(%s,%s,D,null)无添加C权限insert into power_table (power_user,po

8、wer_object,power_type,power_giver) values(%s,%s,C,null)无添加O权限insert into power_table (power_user,power_object,power_type,power_giver) values(%s,%s,O,null)无5. 删除客体首先检查当前用户是否有删除的权限,然后删除权限表中该客体相关的所有条目,在删除客体表中相关的项。操作SQL语句说明检查当前用户是否有删除权略只要检查权限表中是否有相应的条目即可删除权限表中和该客体相关的所有条目delete from power_table where pow

9、er_table.power_object=%s无删除客体表中该客体的条目delete from objects_table where objects_table.object_name=%s无6. 读、写、添加、执行客体由于只是检查给定的用户是否对给定的客体有相应的权限,这些操作相似,只是简单检查权限表中是否有相应的条目。操作SQL语句说明权限检查select * from power_table where power_table.power_user=%s and power_table.power_object =%s and power_table.power_type = %s如

10、果返回的数据集为空,说明没有相应权限7. 授予权限首先,进行权限检查;再添加权限项到权限表中,如果为C权,必须保证用户对同一个客体的C权唯一。操作SQL语句说明检查用户是否有对授权客体的C权略保证用户有对该客体的转授权检查用户是否有对客体的待授出的权限略保证用户有待授出的权限添加权限到权限表中insert into power_table (power_user,power_object,power_type,power_giver) values(%s,%s,%s,%s)添加中需要检查添加的是否为C权,如果为C权,必须保证待授权用户没有从其他用户获得C权8. 回收权限回收权限,直接删除权限表

11、中的相应项,如果是C权必须回收由于传递授权,授出的所有权限。操作SQL语句说明删除该用户授出的权限delete from power_table where power_table.power_user =%s and power_table.power_object=%s and power_table.power_type=%s and power_table.power_giver=%s如果权限不是C,该操作之后,即完成回收,如果是C权继续下面的操作。获得待回收权限用户授出的有关该客体的权限select * from power_table where power_table.power

12、_giver =%s and power_table.power_object=%s如果回收C权,需要回收传递授权授出的所有权限5. 程序测试效果(1) 用户登录登录界面如下:登录成功后效果如下:(2) 用户管理用户管理界面如下:(3) 客体管理客体管理界面如下:(4) 自主授权测试admin用户创建一个账户,命名为gaotao,在创建一个客体object,然后把对object的读和写权限授予用户gaotao.图表 1 创建账户gaotao图表 2 创建客体object图表 3 用户admin拥有对object的所有权限图表 4 转授对客体object的读写权限给gaotao图表 5 转授权限

13、之后的结果(5) 主体访问权限测试接上面的测试,此时以gaotao用户登录,查看对客体的权限:图表 6 此时用户获得了对object的读写权限图表 7 测试读权限图表 8 测试添加权(6) 传递授权与回收测试再用用户admin创建一个账户Eyas,创建一个客体test,把对客体test的读、写和控制权转授给gaotao,在由用户gaotao把对test的读权限转授给Eyas.admingaotaoEyastest的读、写、控制权test的读权图表 9 转授test的读、写、控制权给gaotao图表 10 用户gaotao授予对test的读权限给Eyas图表 11 确认对gaotao的授权正确图

14、表 12 确认对Eyas的授权正确图表 13 admin回收gaotao对test的读和控制权限图表 14 gaotao只保留对test的写权限图表 15 Eyas不再具有对test的权限二、 基于角色的访问控制实验(RBAC)1. 实验目的 通过课程设计,使学生进一步熟悉访问控制的基本概念和基本原理; 培养学生将访问控制的各种技术和方法应用于实际进行实施的能力; 要求学生运用访问控制基本原理和方法,结合实际充分发挥自主创新能力进行各有特色的设计;2. 实验环境及工具 操作系统:Microsoft Windows 7 数 据 库:Microsoft SQL Server 2005 编译平台:M

15、icrosoft Visual Studio 20083. 实验内容 对用户、角色、权限进行配置和管理; 用户对角色的指派和权限到用户的指派; 基于RBAC1的角色层次管理 基于RBAC2的互斥角色管理4. 程序与数据库设计4.1 数据库设计共包含7张表,用户表(RBAC_users)、角色表(RBAC_roles)、权限表(RBAC_power)、用户到角色指派表(RBAC_user_role)、权限到角色指派表(RBAC_power_role)、角色层次表(RBAC_role_layer)、角色互斥表(RBAC_role_mutex).用户表(RBAC_users)字段名类型说明user_

16、namenchar(10)用户名user_pswnchar(10)用户密码user_typenchar(10)用户类型角色表(RBAC_roles)字段名类型说明Role_namenchar(10)角色名Role_Imfonchar(10)角色信息权限表(RBAC_power)字段名类型说明Power_namenchar(10)权限名Power_imfonchar(10)权限信息用户到角色指派表(RBAC_user_role)字段名类型说明User_namenchar(10)用户名Role_namenchar(10)角色名权限到角色指派表(RBAC_power_role)字段名类型说明Powe

17、r_namenchar(10)权限名Role_namenchar(10)角色名角色层次表(RBAC_role_layer)字段名类型说明parent_rolenchar(10)角色层次中的上层角色son_rolenchar(10)角色层次中的下层角色角色互斥表(RBAC_role_mutex)字段名类型说明original_rolenchar(10)互斥角色mutex_rolenchar(10)互斥角色数据表键定义表 名键 值RBAC_usersuser_nameRBAC_roleRole_nameRBAC_powerPower_nameRBAC_user_role(User_name, Ro

18、le_name)RBAC_power_role(Power_name, Role_name)RBAC_role_layer(parent_role, son_role)RBAC_role_mutex(original_role, mutex_role)外键定义外键所在的表外键对应的字段关联的表名关联的字段RBAC_user_roleUser_nameRBAC_usersuser_nameRBAC_user_roleRole_nameRBAC_rolesRole_nameRBAC_power_rolePower_nameRBAC_powerPower_nameRBAC_power_roleRol

19、e_nameRBAC_rolesRole_nameRBAC_role_layerparent_roleRBAC_rolesRole_nameRBAC_role_layerson_roleRBAC_rolesRole_nameRBAC_role_mutexoriginal_roleRBAC_rolesRole_nameRBAC_role_mutexmutex_roleRBAC_rolesRole_name4.2 程序设计程序采用MFC基于对话框的应用程序设计界面,用MFC类 CDatabase和CRecordset实现访问数据库的操作。1. 界面设计2. 添加用户操作SQL 语句说明添加数据项到

20、用户表中insert into RBAC_users ( user_name, user_psw, user_type) values(%s,%s,普通用户)无3. 删除用户操作SQL 语句说明删除和该用户有关的角色指派delete from RBAC_user_role where RBAC_user_role.User_name=%s无删除用户项delete from RBAC_users where RBAC_users.user_name=%s无4. 添加权限操作SQL 语句说明添加权限到权限表中insert into RBAC_power ( Power_name,Power_imf

21、o) values(%s,%s)无5. 删除权限操作SQL 语句说明删除和该权限有关的角色指派delete from RBAC_power_role where RBAC_power_role.Power_name=%s无删除该权限项delete from RBAC_power where RBAC_power.Power_name=%s无6. 添加角色操作SQL 语句说明添加角色项到角色表中insert into RBAC_roles (Role_name,Role_Imfo) values(%s,%s)无7. 删除角色操作SQL 语句说明删除用户角色指派表中和该角色相关的项delete f

22、rom RBAC_user_role where RBAC_user_role.Role_name=%s无删除权限角色指派表中和该角色相关的项delete from RBAC_power_role where RBAC_power_role.Role_name=%s无删除角色层次中和该角色相关的项delete from RBAC_role_layer where RBAC_role_layer.parent_role=%s or RBAC_role_layer.son_role=%s无删除角色互斥中和该角色相关的项delete from RBAC_role_mutex where RBAC_r

23、ole_mutex.original_role=%s or RBAC_role_mutex.mutex_role=%s无删除角色表中该角色项delete from RBAC_roles where RBAC_roles.Role_name=%s无8. 添加角色层次操作SQL 语句说明判断角色层次的合法性略不能在角色层次中引起循环,必须检查角色层次的合法性添加角色层次insert into RBAC_role_layer(parent_role,son_role) values(%s,%s)无9. 删除角色层次操作SQL 语句说明删除角色层次表中的相应项delete from RBAC_role

24、_layer where RBAC_role_layer.parent_role=%s and RBAC_role_layer.son_role=%s无10. 添加角色互斥操作SQL 语句说明判断添加角色互斥的合法性略相同的角色互斥不能多次添加添加角色互斥insert into RBAC_role_mutex (original_role,mutex_role) values(%s,%s)无11. 删除角色互斥操作SQL 语句说明删除角色互斥delete from RBAC_role_mutex where RBAC_role_mutex.original_role=%s and RBAC_r

25、ole_mutex.mutex_role=%sdelete from RBAC_role_mutex where RBAC_role_mutex.original_role=%s and RBAC_role_mutex.mutex_role=%s无12. 添加用户到角色的指派操作SQL 语句说明检查添加的合法性略主要检查角色互斥添加用户到角色的指派insert into RBAC_user_role(User_name,Role_name) values(%s,%s)无13. 删除用户到角色的指派操作SQL 语句说明删除用户到角色指派的相应项delete from RBAC_user_role

26、 where RBAC_user_role.User_name=%s and RBAC_user_role.Role_name=%s无14. 添加权限到角色的指派操作SQL 语句说明添加权限到角色指派的相应项insert into RBAC_power_role(Power_name,Role_name) values(%s,%s)无15. 删除权限到角色的指派删除权限到角色指派的相应项delete from RBAC_power_role where RBAC_power_role.Power_name=%s and RBAC_power_role.Role_name=%s无5. 程序测试效

27、果1. 用户登录配置和管理界面图表 16 用户登录界面图表 17 用户管理界面图表 18 角色管理界面图表 19 权限管理界面图表 20 用户、角色和权限指派界面2. 用户 角色 权限指派角色1角色2角色3用户gaotao权限1权限2权限3 如上建立用户、角色的指派关系以及权限、角色的指派关系,效果如下:3. RBAC1按照下图所示配置用户、角色和权限的指派,配置角色层次:角色1角色2角色3用户gaotao权限1权限2权限3图表 21 RBAC1测试效果4. RBAC2角色互斥按照如下图配置用户、角色和权限,以及用户到角色的指派,权限到角色的指派和角色互斥关系:角色1角色2角色3权限1权限2权

28、限3gaotao互斥角色图表 22 试图指派用户gaotao到角色2三、 总结终于完成了访问控制课程设计,在整个课程设计中有几点体会: 加深了对访问控制基本概念的理解通过实验,对自主访问控制中权限表、授权管理、传递授权与权限回收等,以及RBAC中的用户 角色指派,权限 角色指派,RBAC1中角色层次,RBAC2中定义约束等基本概念的理解。 初步学习了把访问控制基本原理应用于解决问题的方法因为以前学习书本知识都是基本的理论知识,根本不知道怎么通过程序实现,这次通过程序实现,也让自己知道了怎么把学习的理论在实践中实现。 学会了数据库访问的基本操作在这之前,基本没有运用数据库写程序,通过这次课程设计,对数据操作也有了一点了解,这相当于一项意外的收获吧!

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1