SQL Server 安全性部分实验

2014-11-24 18:21:56 · 作者: · 浏览: 1

数据库系统概论》实验三 数据控制(安全性部分)
本实验是在实验二中的school数据库的基础上进行的,如果有需要增删改的地方将在实验中加以说明。



(一)授权与回收。


1授权。建立多个用户,给他们赋予不同的权限,然后查看是否真正拥有被授予的权限了。


1建立用户(登录帐号)U1、U2、U3U4U5U6U7和对应的数据库school的用户dbu1dbu2dbu3dbu4dbyu5dbu6dbu7


EXECsp_addlogin'U1','01'


useschool


EXECsp_grantdbaccess'U1','dbu1'



EXECsp_addlogin'U2','02'


useschool


EXECsp_grantdbaccess'U2','dbu2'



EXECsp_addlogin'U3','03'


useschool


EXECsp_grantdbaccess'U3','dbu3'



EXECsp_addlogin'U4','04'


useschool


EXECsp_grantdbaccess'U4','dbu4'



EXECsp_addlogin'U5','05'


useschool


EXECsp_grantdbaccess'U5','dbu5'



EXECsp_addlogin'U6','06'


useschool


EXECsp_grantdbaccess'U6','dbu6'



EXECsp_addlogin'U7','07'


useschool


EXECsp_grantdbaccess'U7','dbu7'


2SYSTEM(即DBA)与七个用户之间进行授权。


[1-1]把查询Student 表的权限授给用户U1


useschool


grantselectonStudenttodbu1



[1-2]把对Student 表和Course 表的全部操作权限授予用户U2 U3


useschool


grantinsert,update,select,deleteonStudenttodbu2,dbu3


grantinsert,update,select,deleteonCoursetodbu2,dbu3



[1-3]把对表SC 的查询权限授予所有用户。


useschool


grantselectonSCtopublic



[1-4]把查询Student 表和修改学生学号的权限授给用户U4


useschool


grantselect,update(SNO)onStudenttodbu4



[1-5]把对表SC INSERT 权限授予U5,并允许U5 将此权限再授予其他用户。


useschool


grantinsertonSCtodbu5withgrantoption



[1-6]用户U5 将对表SC INSERT 权限授予U6,并允许将权限转授给其他用户。


首先应该以U5 的身份重新登录数据库,然后再进行授权。


useschool


grantinsertonsctodbu6withgrantoption



[1-7]用户U6 将对表SC INSERT 权限授予U7


首先应该以U6 的身份重新登录数据库,然后再进行授权。


useschool


grantinsertonsctodbu7



3在授权之后验证用户是否拥有了相应的权限。


在执行完上面七个语句之后,我们可以分别以不同用户的身份登录数据库,进行相关操作,检查系统是否许可。


[1-8]U4 更新Student 表的学生学号。


useschool


UPDATEStudent


SETSNO= 1009 WHERESNAME='张天'



[1-9]U7 SC 表中插入一条数据:(950202088)。


useschool


insertintoSCvalues(95020,20,88)



2回收权限。将【1】授予的权限部分收回,检查回收后,该用户是否真正丧失了对数据的相应权限。


1回收权限。


[2-1]收回用户U4 修改学生学号的权限。


useschool


revokeupdate(SNO)onStudentfromdbu4



[2-2]收回所有用户对表SC 的查询权限。


useschool


revokeselectonStudentfrompublic



[2-3]收回用户U5 SC 表的INSERT 权限。


useschool


revokeinsertonSCfromdbu5cascade



2在回收权限之后验证用户是否真正丧失了该权限。


[2-4]用户U3 查询表SC


useschool


select*


fromSC



[2-5]用户U6 向表SC 中插入一条记录(‘95035’,’3’,92)


useschool


insertintoSCvalues(95035,3,92)


(二)数据库角色。


3】数据库角色的创建与授权。


[3-1]创建数据库角色G1


useschool


EXECsp_addrole'G1'


[3-2]给数据库角色授权,使得数据库角色G1 拥有对Student 表的SELECTUPDATEINSERT 的权限。


useschool


grantselect,update,insert,deleteonStudenttoG1



[3-3]将用户U1,U3,U7 添加到数据库角色G1 中来。


useschool


EXECsp_addrolemember'G1','dbu1'


EXECsp_addrolemember'G1','dbu3'


EXECsp_addrolemember'G1','dbu7'


[3-4]对数据库角色G1 的权限进行修改,增加对Student 表的DELETE 权限,并回收对Student表的INSERT 权限。


useschool


grantdeleteonStudenttoG1


revokeinsertonStudentfromG1cascade