实验8 数据库安全管理.docx
《实验8 数据库安全管理.docx》由会员分享,可在线阅读,更多相关《实验8 数据库安全管理.docx(15页珍藏版)》请在冰豆网上搜索。
实验8数据库安全管理
实验八数据库安全管理
姓名:
方令
学号:
0807022205
专业:
网络工程
班级:
2班
同组人:
实验日期:
【实验目的与要求】
1、了解microsoftsqlsever2005数据库用户创建与权限管理;
2、掌握使用企业管理器和T-SQL进行权限管理的方法
【实验准备】
1.准备好测试所需表和数据
2.熟悉Grant和Revoke语句。
【实验内容】
8.1.使用对象资管理器进行权限管理
8.1.1.用户创建与权限管理
1.用户的创建
(1)在企业管理器中找到“安全性”-->“登录名”,并单击右键,选择“新建登录名”;如图:
(2)输入登录用户名“myName”,登录口令为testdb(或自行设定),并选择sqlserver身份验证,选择数据库为“CPXS”,去掉“强制密码过期”复选条件,如下图:
(3)点“确定”完成用户“myName”的创建。
2.用户登录测试
(1)关闭对象资源管理器,重新使用菜单打开对象资源管理器,如下图:
(2)在登录对话框中身份验证处选择“SQLServer身份验证”,输入登录名和相应的口令,如下图:
(3)点击连接,试图登录数据库,进行用户登录测试。
请给出测试结果截图:
结论:
此时,用户myName是无权限登录到数据库的,其原因在于前面实验中仅创建了该用户,而没有给予该用户相应的访问权限。
3.用户权限的分配与管理
(1)重新以sa用户名或“Windows身份验证”方式登录,如下图:
(2)在对象资源管理器中选择“安全性“-->登录名,右击用户名myName,选择属性,如下图:
(3)在登录属性对话框中进行相应的设置:
在左上角选择页中选择“用户映射”,在右边映射到此登录名的用户选项中勾选cpxs,数据库角色成员处勾选public,如下图:
(4)完成设定后退出,重新以SQLServer身份验证,登录名myName登录系统,如下图:
(5)完成登录后,在对象资源管理器左边展开数据库选项,如下图:
(5)在数据库选项下,点击db_shopping(或其他非cpxs数据库),看是否可正常访问?
请给出测试结果截图:
(6)在数据库选项下,点击cpxs数据库,展开表节点,看是否可正常访问cpxs中的表(如CP表)?
请给出测试结果截图:
思考:
为什么会有这样的结果?
若要使myName对cpxs有完全的权限,应如何做,请尝试。
(请根据以上实现理解数据库中角色的概念)
8.1.2.数据库表访问权限的管理
1.设定用户对表的访问权限
(1)重新以sa用户名或“Windows身份验证”方式登录,对象资源管理器中依次选择:
数据库-->CPXS-->表,右击其中一个表(如CP表),选择“属性”如下图:
(2)在表属性对话框中进行表的访问权限设置:
点击“添加”,如下图:
(3)在选择用户或角色对话框中点击“浏览”,如下图:
(4)在查找对象对话框中选择需设定的用户名myName,如下图:
(5)对myName的访问权限进行设定:
选择Select,如下图:
(6)点击“列权限”,在弹出的对话框中设定“产品编号”、“产品名称”和“价格”被选中,如下图:
2.用户对表的访问权限测试
(1)退出对象资源管理器,重新以SQLServer身份验证模式,以用户名myName和相应的口令登录数据库,如下图:
(2)测试对表的访问权限:
在对象资源管理器中依次展开“数据库”CPXS表,看是否可以看到CP表,是否可以看到其他表?
请给出测试结果:
(3)测试对表的访问权限:
打开查询分析器,输入如下语句:
请给出测试结果:
(4)测试对表的访问权限:
打开查询分析器,输入如下语句:
请给出测试结果:
思考:
对比以上(3)-(4)的测试结果,思考为什么会有这样的测试结果?
8.2.使用T-SQL语句进行权限管理
8.2.1.用户创建与权限分配
以下用户创建与权限管理需以有相应权限的用户来操作,建议以sa用户名或“Windows身份验证”方式登录。
(1)在查询分析器中编制程序,在sqlserver中创建一个新的登陆用户,登陆名为“myTestName”,密码为“testdb”,登陆后连接的数据库为“CPXS”数据库。
(2)在查询分析器中编制程序,使刚创建的登陆用户成为当前数据库用户:
(3)在查询分析器中编制程序,给用户授予创建和查询表的权限:
(4)在查询分析器中查询用户拥有的权限。
请给出测试结果截图:
练习:
将以上语句中参数改成null改成CP,执行该语句,给出并比较查询结果。
8.2.2.用户权限测试
1.登录数据库
(1)用新建的myTestName登录到数据库。
2.在查询分析器中输入代码检查用户“myTestName”的权限:
(1)执行如下语句,检查用户“myTestName”是否有创建数据库的权限:
createdatabaseTestDB
on
(
name=TestDB_data,--数据文件的逻辑名称,注意不能与日志逻辑同名
filename='C:
\Exam03\TestDB4.mdf',--物理名称,注意路径必须存在
size=5,--数据初始长度为5M
maxsize=10,--最大长度为10M
filegrowth=1--数据文件每次增长1M
)
logon
(
name=TestDB_log,
filename='C:
\Exam03\TestDB4.ldf',
size=2,
maxsize=5,
filegrowth=1
)
请给出测试结果截图:
(2)执行如下语句,检查用户“myTestName”是否有检查创建表的权限:
请给出测试结果截图:
思考:
完成后在左边对象资源管理视图中找到表t_Test,注意观查其前辍,并与其他表作比较,籍此理解什么是模式?
(3)执行如下语句,检查用户“myTestName”的查询权限:
请给出测试结果截图:
8.2.3.用户权限回收
以下用户创建与权限管理需以有相应权限的用户来操作,执行Revoke语句。
(1)以sa用户名或“Windows身份验证”方式登录,输入命令,回收myTestName的查询“CP”的权限:
(2)再次以用户名myTestName登录到数据库,检查myTestName用户是否具有查询“CP”表的权限:
请给出测试结果截图:
思考:
比较此次查询结果与前面相同查询结果的差别,籍此理解用户权限的分配与回收?
8.3.实验练习
在数据库中创建三个用户ZhangFei、GuanYu和LiuBei授予他们对数据库CPXS具有不同的访问权限,写出相应的过程或给出相应的T-SQL语句,并给出测试结果。
(如果可能,尽量也给出否定的测试结果)。
1.ZhangFei只能查询CP表中的数据
2.GuanYu可以管理XSS表中数据,同时还可以将该权限授予别的用户
3.LiuBei只能查询CP表的平均价格、最高价格和最低价格(提示:
可借助视图实现)