1、实验六数据库系统安全性实验六 数据库系统安全性内容:数据库的用户管理和操作权限管理。目的:理解和体会数据库安全性的内容,体会安全控制的作用,加强对DBMS功能的认识。要求:1. 使用SQLServer 2005 的管理器完成对登录、数据库用户、角色的定义,完成对不同用户对不同数据库对象的操作授权。(1)修改SQLServer服务器的安全认证模式(2)分别建立用户账户LOG1,LOG2(3)使这两个用户成为“教学”数据库中的用户。(4)为用户LOG1授予对学生表的SELECT查询权。(5)为用户LOG2授予对学生表的INSERT、DELETE和SELECT权。(6)在教学数据库中建立一个角色RO
2、LE1,授予该角色对选课表、课程表的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权,并允许其将拥有的权利转授给他人(加WITH GRANT OPTION子句)。(4)为用户T1授予
3、没有学生选修的课程的课程信息的SELECT权、DELETE权。(5)为用户T2授予对“计算机系”学生的“C程序设计”课程的成绩的修改(UPDATE)权。提示:定义视图(6)用户T1将其拥有的SELECT权授予T2。(7)使用系统存储过程sp_addrole 创建一个角色R1,并授予R1查询学生表的权限。(8)使用系统存储过程sp_addrolemember将S1、S2 成为R1的成员,使S1、S2也拥有查询学生表的权限。在实验报告中写出2题以上要给出具体的操作命令,并对以上的安全性定义进行验证,针对各种情况做出具体的分析和讨论。实验报告样本数据库系统概论实验报告题 目:学号 姓 名日期实验内容
4、与完成情况:1.使用SQLServer 2005 的管理器完成对登录、数据库用户、角色的定义,完成对不同用户对不同数据库对象的操作授权。验证操作:(2)使用LOG1,LOG2用户名连接数据库成功(3)打开数据库-教学数据库11-安全性-用户,可以看到log1和log2用户在其中(4)对log1用户执行下列命令:use 教学数据库;SELECT 学号FROM 学生;显示结果说明查询操作是被允许的,再直接对表中的数据进行修改,报错:提示表明未对其赋予update权限(5)对log2用户分别执行下列命令,结果如图use 教学数据库;SELECT 学号FROM 学生;直接对表进行插入操作:最后一行为添
5、加进入的信息直接删除表里的所有数据(6)使用LOG1登陆,使用log1用户,进行对于课程和选课的查询操作use 教学数据库;SELECT 课程号,课程名称FROM 课程;操作成功,对于选课表进行同样操作也成功,同样地,对于log2用户进行相同操作,也都成功查询尝试对其进行修改或删除操作从提示信息可以看出没有授予它们SELECT以外的权限,如update权限。2.使用查询编辑器,以命令方式完成如下操作。(1)使用系统存储过程SP_addlogin 完成T1、T2、S1、S2登录帐号的定义。EXEC sp_addlogin T1,1EXEC sp_addlogin T2,1EXEC sp_addl
6、ogin S1,1EXEC sp_addlogin S2,1(2)使用系统存储过程sp_grantdbaccess使T1、T2、S1、S2成为“教学数据库”中的用户。use 教学数据库;EXEC sp_grantdbaccess T1,T1EXEC sp_grantdbaccess T2,T2EXEC sp_grantdbaccess S1,S1EXEC sp_grantdbaccess S2,S2(3)为用户T1授予对学生表的DELETE和SELECT权,并允许其将拥有的权利转授给他人(加WITH GRANT OPTION子句)。use 教学数据库grant select,delete on
7、 学生to T1 WITH GRANT OPTION通过登录T1用户,进行查询操作与删除操作,均成功进行其它操作,如更新操作,则报错如下:(4)为用户T1授予没有学生选修的课程的课程信息的SELECT权、DELETE权。先在管理员用户下建立视图:CREATE VIEW 没学生选的课ASSELECT *FROM 课程WHERE 课程号NOT IN (SELECT 课程.课程号FROM 课程,选课WHERE 课程.课程号=选课.课程号)再对T1授权:use 教学数据库grant select,delete on 没学生选的课to T1验证:查询操作:删除操作:直接删除最后一行,显示“命令执行成功”
8、(5)为用户T2授予对“计算机系”学生的“C程序设计”课程的成绩的修改(UPDATE)权。提示:定义视图先在sa管理员用户下定义视图create view 计算机系C语言ASSELECT 选课.学号,选课.课程号,成绩FROM 选课,系科,课程,学生WHERE 选课.课程号=课程.课程号AND 课程.课程名称=C程序设计 AND 选课.学号=学生.学号AND 学生.系科号=系科.系科号AND 系科.系名称=计算机系再授权use 教学数据库grant update on 计算机系C语言to T2验证:无法在T1用户上打开视图因为没有给它赋予select权限,通过命令修改成功use 教学数据库up
9、date 计算机系C语言SET 成绩=90因为没有select权限,故不能进行条件修改,修改了所有人的成绩,通过sa用户打开计算机系C语言表发现成绩被修改成功(6)用户T1将其拥有的SELECT权授予T2。grant select to T2(7)使用系统存储过程sp_addrole 创建一个角色R1,并授予R1查询学生表的权限。USE 教学数据库EXEC sp_addrole R1grant select on 学生to R1(8)使用系统存储过程sp_addrolemember将S1、S2 成为R1的成员,使S1、S2也拥有查询学生表的权限。sp_addrolememberR1,S1sp_
10、addrolememberR1,S2验证:S1用户中可以打开学生表,表示可查询,尽管提示是“只读”,但那是因为没有赋予S1任何修改学生表的权限S2S2表也是同样出现的问题:1. 无法建立视图“没有学生选修的选修课表”2. 进行2(6)的视图建立时使用语句:create view 计算机系C语言ASSELECT *FROM 选课WHERE 选课.课程号=课程.课程号AND 课程.课程名称=C程序设计 AND 选课.学号=学生.学号AND 学生.系科号=系科.系科号AND 系科.系名称=计算机系报错如下:消息4104,级别16,状态1,过程计算机系C语言,第3 行无法绑定由多个部分组成的标识符课程
11、.课程号。消息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.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1