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

上传人:b****5 文档编号:18100533 上传时间:2022-12-13 格式:DOCX 页数:31 大小:1.72MB
下载 相关 举报
访问控制课程设计实验报告Word下载.docx_第1页
第1页 / 共31页
访问控制课程设计实验报告Word下载.docx_第2页
第2页 / 共31页
访问控制课程设计实验报告Word下载.docx_第3页
第3页 / 共31页
访问控制课程设计实验报告Word下载.docx_第4页
第4页 / 共31页
访问控制课程设计实验报告Word下载.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

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

《访问控制课程设计实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《访问控制课程设计实验报告Word下载.docx(31页珍藏版)》请在冰豆网上搜索。

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

nchar(10)

用户名

user_psw

用户密码

user_group

int

用户组别

客体表objects_table:

object_name

客体名

object_data

客体数据内容

object_creater

客体创建者

权限表power_table:

power_user

主体名

power_object

power_type

权限类型

power_giver

授权者

数据表键值定义:

键值

users_table

objects_table

power_table

(power_user,power_object,power_type,power_giver)

外键设计:

外键表

外键字段

关联表

外键关联键值字段

4.2程序设计

程序采用MFC基于对话框的应用程序设计界面,采用MFCCDatabase和CRecordset类访问数据库。

1.界面设计

界面设计采用了通用的对话框程序形式,效果如下:

开始菜单有:

登录、重新登录、退出子菜单项

管理菜单有:

用户管理、客体管理、授权管理、账户管理子菜单项

2.创建用户

直接在users_table表中加一项数据,执行的SQL语句如下:

insertintousers_table(user_name,user_psw,user_group)values('

%s'

'

%d)

3.删除用户

依次按照表格中的操作执行:

操作

SQL语句

获得用户创建的客体列表

select*fromobjects_tablewhereobjects_table.object_creater='

通过数据集获得创建客体列表

删除没一个创建的客体

删除客体的算法下面说明

对每一个创建的客体都要删除

删除权限表中和该用户相关的所有项

deletefrompower_tablewherepower_table.power_user='

删除用户表中该用户条目

deletefromusers_tablewhereusers_table.user_name='

4.创建客体

创建客体需在客体表中添加一项,并且在把对该客体的所有权限添加给创建者,实现中定义了读(R)、写(W)、添加(A)、删除(D)、控制权(C)、拥有权(O),操作如下:

添加客体项

insertintoobjects_table(object_name,object_data,

object_creater)values('

添加R权限

insertintopower_table(power_user,power_object,power_type,power_giver)values('

R'

null'

添加W权限

insertintopower_table(power_user,power_object,power_type,power_giver)values('

W'

添加A权限

A'

添加D权限

D'

添加C权限

C'

添加O权限

O'

5.删除客体

首先检查当前用户是否有删除的权限,然后删除权限表中该客体相关的所有条目,在删除客体表中相关的项。

检查当前用户是否有删除权

只要检查权限表中是否有相应的条目即可

删除权限表中和该客体相关的所有条目

deletefrompower_tablewherepower_table.power_object='

删除客体表中该客体的条目

deletefromobjects_tablewhereobjects_table.object_name='

6.读、写、添加、执行客体

由于只是检查给定的用户是否对给定的客体有相应的权限,这些操作相似,只是简单检查权限表中是否有相应的条目。

权限检查

select*frompower_tablewherepower_table.power_user='

andpower_table.power_object='

andpower_table.power_type='

如果返回的数据集为空,说明没有相应权限

7.授予权限

首先,进行权限检查;

再添加权限项到权限表中,如果为C权,必须保证用户对同一个客体的C权唯一。

检查用户是否有对授权客体的C权

保证用户有对该客体的转授权

检查用户是否有对客体的待授出的权限

保证用户有待授出的权限

添加权限到权限表中

添加中需要检查添加的是否为C权,如果为C权,必须保证待授权用户没有从其他用户获得C权

8.回收权限

回收权限,直接删除权限表中的相应项,如果是C权必须回收由于传递授权,授出的所有权限。

删除该用户授出的权限

deletefrompower_tablewherepower_table.power_user='

andpower_table.power_object='

andpower_table.power_type='

andpower_table.power_giver='

如果权限不是C,该操作之后,即完成回收,如果是C权继续下面的操作。

获得待回收权限用户授出的有关该客体的权限

select*frompower_tablewherepower_table.power_giver='

如果回收C权,需要回收传递授权授出的所有权限

5.程序测试效果

(1)用户登录

登录界面如下:

登录成功后效果如下:

(2)用户管理

用户管理界面如下:

(3)客体管理

客体管理界面如下:

(4)自主授权测试

admin用户创建一个账户,命名为gaotao,在创建一个客体object,然后把对object的读和写权限授予用户gaotao.

图表1创建账户gaotao

图表2创建客体object

图表3用户admin拥有对object的所有权限

图表4转授对客体object的读写权限给gaotao

图表5转授权限之后的结果

(5)主体访问权限测试

接上面的测试,此时以gaotao用户登录,查看对客体的权限:

图表6此时用户获得了对object的读写权限

图表7测试读权限

图表8测试添加权

(6)传递授权与回收测试

再用用户admin创建一个账户Eyas,创建一个客体test,把对客体test的读、写和控制权转授给gaotao,在由用户gaotao把对test的读权限转授给Eyas.

admin

gaotao

Eyas

test的读、写、控制权

test的读权

图表9转授test的读、写、控制权给gaotao

图表10用户gaotao授予对test的读权限给Eyas

图表11确认对gaotao的授权正确

图表12确认对Eyas的授权正确

图表13admin回收gaotao对test的读和控制权限

图表14gaotao只保留对test的写权限

图表15Eyas不再具有对test的权限

二、基于角色的访问控制实验(RBAC)

对用户、角色、权限进行配置和管理;

用户对角色的指派和权限到用户的指派;

基于RBAC1的角色层次管理

基于RBAC2的互斥角色管理

共包含7张表,用户表(RBAC_users)、角色表(RBAC_roles)、权限表(RBAC_power)、用户到角色指派表(RBAC_user_role)、权限到角色指派表(RBAC_power_role)、角色层次表(RBAC_role_layer)、角色互斥表(RBAC_role_mutex).

用户表(RBAC_users)

类型

user_type

用户类型

角色表(RBAC_roles)

Role_name

角色名

Role_Imfo

角色信息

权限表(RBAC_power)

Power_name

权限名

Power_imfo

权限信息

用户到角色指派表(RBAC_user_role)

User_name

权限到角色指派表(RBAC_power_role)

角色层次表(RBAC_role_layer)

parent_role

角色层次中的上层角色

son_role

角色层次中的下层角色

角色互斥表(RBAC_role_mutex)

original_role

互斥角色

mutex_role

数据表键定义

表名

键值

RBAC_users

RBAC_role

RBAC_power

RBAC_user_role

(User_name,Role_name)

RBAC_power_role

(Power_name,Role_name)

RBAC_role_layer

(parent_role,son_role)

RBAC_role_mutex

(original_role,mutex_role)

外键定义

外键所在的表

外键对应的字段

关联的表名

关联的字段

RBAC_roles

程序采用MFC基于对话框的应用程序设计界面,用MFC类CDatabase和CRecordset实现访问数据库的操作。

2.添加用户

SQL语句

添加数据项到用户表中

insertintoRBAC_users(user_name,user_psw,user_type)values('

普通用户'

删除和该用户有关的角色指派

deletefromRBAC_user_rolewhereRBAC_user_role.User_name='

删除用户项

deletefromRBAC_userswhereRBAC_users.user_name='

4.添加权限

insertintoRBAC_power(Power_name,Power_imfo)values('

5.删除权限

删除和该权限有关的角色指派

deletefromRBAC_power_rolewhereRBAC_power_role.Power_name='

删除该权限项

deletefromRBAC_powerwhereRBAC_power.Power_name='

6.添加角色

添加角色项到角色表中

insertintoRBAC_roles(Role_name,Role_Imfo)values('

7.删除角色

删除用户角色指派表中和该角色相关的项

deletefromRBAC_user_rolewhereRBAC_user_role.Role_name='

删除权限角色指派表中和该角色相关的项

deletefromRBAC_power_rolewhereRBAC_power_role.Role_name='

删除角色层次中和该角色相关的项

deletefromRBAC_role_layerwhereRBAC_role_layer.parent_role='

orRBAC_role_layer.son_role='

删除角色互斥中和该角色相关的项

deletefromRBAC_role_mutexwhereRBAC_role_mutex.original_role='

orRBAC_role_mutex.mutex_role='

删除角色表中该角色项

deletefromRBAC_roleswhereRBAC_roles.Role_name='

8.添加角色层次

判断角色层次的合法性

不能在角色层次中引起循环,必须检查角色层次的合法性

添加角色层次

insertintoRBAC_role_layer(parent_role,son_role)values('

9.删除角色层次

删除角色层次表中的相应项

andRBAC_role_layer.son_role='

10.添加角色互斥

判断添加角色互斥的合法性

相同的角色互斥不能多次添加

添加角色互斥

insertintoRBAC_role_mutex(original_role,mutex_role)values('

11.删除角色互斥

删除角色互斥

andRBAC_role_mutex.mutex_role='

12.添加用户到角色的指派

检查添加的合法性

主要检查角色互斥

添加用户到角色的指派

insertintoRBAC_user_role(User_name,Role_name)values('

13.删除用户到角色的指派

删除用户到角色指派的相应项

andRBAC_user_role.Role_name='

14.添加权限到角色的指派

添加权限到角色指派的相应项

insertintoRBAC_power_role(Power_name,Role_name)values('

15.删除权限到角色的指派

删除权限到角色指派的相应项

andRBAC_power_role.Role_name='

1.用户登录配置和管理界面

图表16用户登录界面

图表17用户管理界面

图表18角色管理界面

图表19权限管理界面

图表20用户、角色和权限指派界面

2.用户–角色–权限指派

角色1

角色2

角色3

用户gaotao

权限1

权限2

权限3

如上建立用户、角色的指派关系以及权限、角色的指派关系,效果如下:

3.RBAC1

按照下图所示配置用户、角色和权限的指派,配置角色层次:

图表21RBAC1测试效果

4.RBAC2角色互斥

按照如下图配置用户、角色和权限,以及用户到角色的指派,权限到角色的指派和角色互斥关系:

图表22试图指派用户gaotao到角色2

三、总结

终于完成了访问控制课程设计,在整个课程设计中有几点体会:

◆加深了对访问控制基本概念的理解

通过实验,对自主访问控制中权限表、授权管理、传递授权与权限回收等,以及RBAC中的用户–角色指派,权限–角色指派,RBAC1中角色层次,RBAC2中定义约束等基本概念的理解。

◆初步学习了把访问控制基本原理应用于解决问题的方法

因为以前学习书本知识都是基本的理论知识,根本不知道怎么通过程序实现,这次通过程序实现,也让自己知道了怎么把学习的理论在实践中实现。

◆学会了数据库访问的基本操作

在这之前,基本没有运用数据库写程序,通过这次课程设计,对数据操作也有了一点了解,这相当于一项意外的收获吧!

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

当前位置:首页 > 小学教育 > 英语

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

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