实验六数据库系统安全性.docx
- 文档编号:5347178
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:13
- 大小:803.82KB
实验六数据库系统安全性.docx
《实验六数据库系统安全性.docx》由会员分享,可在线阅读,更多相关《实验六数据库系统安全性.docx(13页珍藏版)》请在冰豆网上搜索。
实验六数据库系统安全性
实验六数据库系统安全性
内容:
数据库的用户管理和操作权限管理。
目的:
理解和体会数据库安全性的内容,体会安全控制的作用,加强对DBMS功能的认识。
要求:
1.使用SQLServer2005的管理器完成对登录、数据库用户、角色的定义,完成对不同用户对不同数据库对象的操作授权。
(1)修改SQLServer服务器的安全认证模式
(2)分别建立用户账户LOG1,LOG2
(3)使这两个用户成为“教学”数据库中的用户。
(4)为用户LOG1授予对学生表的SELECT查询权。
(5)为用户LOG2授予对学生表的INSERT、DELETE和SELECT权。
(6)在教学数据库中建立一个角色ROLE1,授予该角色对选课表、课程表的SELECT权,将LOG1,LOG2添加到ROLE1角色中
使用对以上的安全性定义
(2)—(6)进行验证,在实验报告中写出验证步骤,并针对发生各种情况做出具体的分析和讨论。
2.使用查询编辑器,以命令方式完成如下操作。
(1)使用系统存储过程SP_addlogin完成T1、T2、S1、S2登录帐号的定义。
(2)使用系统存储过程sp_grantdbaccess使T1、T2、S1、S2成为“教学数据库”中的用户。
(3)为用户T1授予对学生表的DELETE和SELECT权,并允许其将拥有的权利转授给他人(加WITHGRANTOPTION子句)。
(4)为用户T1授予没有学生选修的课程的课程信息的SELECT权、DELETE权。
(5)为用户T2授予对“计算机系”学生的“C程序设计”课程的成绩的修改(UPDATE)权。
提示:
定义视图
(6)用户T1将其拥有的SELECT权授予T2。
(7)使用系统存储过程sp_addrole创建一个角色R1,并授予R1查询学生表的权限。
(8)使用系统存储过程sp_addrolemember将S1、S2成为R1的成员,使S1、S2也拥有查询学生表的权限。
在实验报告中写出2题以上要给出具体的操作命令,并对以上的安全性定义进行验证,针对各种情况做出具体的分析和讨论。
实验报告样本
《数据库系统概论》实验报告
题目:
学号姓名
日期
实验内容与完成情况:
1.使用SQLServer2005的管理器完成对登录、数据库用户、角色的定义,完成对不同用户对不同数据库对象的操作授权。
验证操作:
(2)使用LOG1,LOG2用户名连接数据库成功
(3)打开数据库->教学数据库11->安全性->用户,可以看到log1和log2用户在其中
(4)对log1用户执行下列命令:
use教学数据库;
SELECT学号FROM学生;
显示结果
说明查询操作是被允许的,再直接对表中的数据进行修改,报错:
提示表明未对其赋予update权限
(5)对log2用户分别执行下列命令,结果如图
use教学数据库;
SELECT学号FROM学生;
直接对表进行插入操作:
最后一行为添加进入的信息
直接删除表里的所有数据
(6)使用LOG1登陆,使用log1用户,进行对于课程和选课的查询操作
use教学数据库;
SELECT课程号,课程名称FROM课程;
操作成功,对于选课表进行同样操作也成功,同样地,对于log2用户进行相同操作,也都成功查询
尝试对其进行修改或删除操作
从提示信息可以看出没有授予它们SELECT以外的权限,如update权限。
2.使用查询编辑器,以命令方式完成如下操作。
(1)使用系统存储过程SP_addlogin完成T1、T2、S1、S2登录帐号的定义。
EXECsp_addlogin'T1','1'
EXECsp_addlogin'T2','1'
EXECsp_addlogin'S1','1'
EXECsp_addlogin'S2','1'
(2)使用系统存储过程sp_grantdbaccess使T1、T2、S1、S2成为“教学数据库”中的用户。
use教学数据库;
EXECsp_grantdbaccess'T1','T1'
EXECsp_grantdbaccess'T2','T2'
EXECsp_grantdbaccess'S1','S1'
EXECsp_grantdbaccess'S2','S2'
(3)为用户T1授予对学生表的DELETE和SELECT权,并允许其将拥有的权利转授给他人(加WITHGRANTOPTION子句)。
use教学数据库
grantselect,deleteon学生toT1WITHGRANTOPTION
通过登录T1用户,进行查询操作与删除操作,均成功
进行其它操作,如更新操作,则报错如下:
(4)为用户T1授予没有学生选修的课程的课程信息的SELECT权、DELETE权。
先在管理员用户下建立视图:
CREATEVIEW没学生选的课
AS
SELECT*
FROM课程
WHERE课程号NOTIN(SELECT课程.课程号FROM课程,选课WHERE课程.课程号=选课.课程号)
再对T1授权:
use教学数据库
grantselect,deleteon没学生选的课toT1
验证:
查询操作:
删除操作:
直接删除最后一行,显示“命令执行成功”
(5)为用户T2授予对“计算机系”学生的“C程序设计”课程的成绩的修改(UPDATE)权。
提示:
定义视图
先在sa管理员用户下定义视图
createview计算机系C语言
AS
SELECT选课.学号,选课.课程号,成绩
FROM选课,系科,课程,学生
WHERE选课.课程号=课程.课程号AND课程.课程名称='C程序设计'AND选课.学号=学生.学号AND学生.系科号=系科.系科号AND系科.系名称='计算机系'
再授权
use教学数据库
grantupdateon计算机系C语言toT2
验证:
无法在T1用户上打开视图
因为没有给它赋予select权限,通过命令修改成功
use教学数据库
update计算机系C语言
SET成绩=90
因为没有select权限,故不能进行条件修改,修改了所有人的成绩,通过sa用户打开计算机系C语言表发现成绩被修改成功
(6)用户T1将其拥有的SELECT权授予T2。
grantselecttoT2
(7)使用系统存储过程sp_addrole创建一个角色R1,并授予R1查询学生表的权限。
USE教学数据库
EXECsp_addrole'R1'
grantselecton学生toR1
(8)使用系统存储过程sp_addrolemember将S1、S2成为R1的成员,使S1、S2也拥有查询学生表的权限。
sp_addrolemember'R1','S1'
sp_addrolemember'R1','S2'
验证:
S1用户中可以打开学生表,表示可查询,尽管提示是“只读”,但那是因为没有赋予S1任何修改学生表的权限
S2
S2表也是同样
出现的问题:
1.无法建立视图“没有学生选修的选修课表”
2.进行2(6)的视图建立时使用语句:
createview计算机系C语言
AS
SELECT*
FROM选课
WHERE选课.课程号=课程.课程号AND课程.课程名称='C程序设计'AND选课.学号=学生.学号AND学生.系科号=系科.系科号AND系科.系名称='计算机系'
报错如下:
消息4104,级别16,状态1,过程计算机系C语言,第3行
无法绑定由多个部分组成的标识符"课程.课程号"。
消息4104,级别16,状态1,过程计算机系C语言,第3行
无法绑定由多个部分组成的标识符"课程.课程名称"。
消息4104,级别16,状态1,过程计算机系C语言,第3行
无法绑定由多个部分组成的标识符"学生.学号"。
消息4104,级别16,状态1,过程计算机系C语言,第3行
无法绑定由多个部分组成的标识符"学生.系科号"。
消息4104,级别16,状态1,过程计算机系C语言,第3行
无法绑定由多个部分组成的标识符"系科.系科号"。
消息4104,级别16,状态1,过程计算机系C语言,第3行
无法绑定由多个部分组成的标识符"系科.系名称"。
3.
解决方案(列出遇到的问题和解决办法,列出没有解决的问题):
1.因为是在T1用户下,所以提示没有建立视图的权限,更换到master用户后,再次建立也失败,发现是没有指定使用的数据库名,指定了使用的是教学数据库11后建立视图成功
2.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 数据库 系统 安全性