0


实验六 SQL SERVER安全管理

【实验目的】

1.了解SQL Server 的认证模式,安全管理的主要内容和方法。

2.掌握用户管理、访问权限管理的基本方法。

【实验环境】

Windows 10系统 + SQL Server 2012

【实验内容】

1.用SSMS工具建立SQL Server身份验证模式的登录名:log1、log2、log3。

2.利用EDUC数据库以及student、course、student_course表,用log1建立一个新的数据库引擎查询,在“可用数据库”下拉列表框中是否能看到并选中EDUC数据库?为什么?

3.将log1、log2和log3映射为EDUC数据库中的用户,用户名同登录名。

4.再次用log1建立一个新的数据库引擎查询,这次在“可用数据库”下拉列表框中是否能看到并选中EDUC数据库?为什么?

5.用log1用户在EDUC数据库中执行下述语句,能否成功?为什么?

select * from course

6.授予log2具有对course表查询权限,授予log3具有对course表的插入权限。

7.在SSMS中,用log3建立一个新的数据库引擎查询,执行下述语句,能否成功?为什么?

insert into course(cno,spno,cname) values(‘C02003’, ‘sp02’, ‘软件工程’),再执行下述语句,能否成功?为什么?

select * from course

8.在SSMS中,在log2建立的数据库引擎查询中,再次执行下述语句:

select * from course ,这次能否成功?

但如果执行下述语句:

insert into course values(’c02004’,’sp01’,’计算机图形学’,null,null, null,null,null,null),能否成功?为什么?

9.授予log3在EDUC数据库中具有建表权限。

10.在EDUC数据库中建立用户定义的角色:selectrole,并授予该角色对student、course、student_course表具有查询权。

11.新建立一个SQL Server 身份验证模式的登录名:pub_user,并让该登录名成为EDUC数据库中的合法用户。

12.在SSMS中,用EDUC建立一个新的数据库引擎查询,执行下述语句,能否成功?为什么?

select * from course

13.将pub_user用户添加selectrole角色中。

14.在pub_user 建立的数据库引擎查询中,再次执行下述语句,能否成功?为什么?

select * from course

【实验方法和步骤】

1.在开始菜单中选中SQL Server Management Studio图标,启动SSMS。启动后,单击“连接”按钮,进入SSMS窗口。如下图所示:

图1

2.用SSMS工具建立SQL Server身份验证模式的登录名:log1、log2、log3。展开“安全性”结点,右击“登录名”,选择新建登录名。具体操作如下图所示:

图2

3.利用EDUC数据库以及student、course、student_course表,用log1建立一个新的数据库引擎查询,在“可用数据库”下拉列表框中是否能看到并选中EDUC数据库?为什么?

** 可以看到EDUC数据库,但不可选中。因为log1仅是SQLserver合法的登录用户,不是EDUC数据库的合法用户。**

图3

图4

4.将log1、log2和log3映射为EDUC数据库中的用户,用户名同登录名。

** 依次展开EDUC数据库、安全性结点,右击“用户”,选择“新建用户”。**

具体操作图下图所示:

图5

5.再次用log1建立一个新的数据库引擎查询,这次在“可用数据库”下拉列表框中是否能看到并选中EDUC数据库?为什么?

** 刷新刚连接的服务器节点,可以选中EDUC数据库。因为当前登录名log1已成为EDUC**数据库的合法用户。

6.用log1用户在EDUC数据库中执行下述语句,能否成功?为什么?

select * from course

** 不能成功,因为log1**用户没有被授予查询权限。

结果如下图所示:

图6

7.授予log2具有对course表的查询权限,授予log3具有对course表的插入权限。

** 右击log2属性,依次点击搜索—特定对象—对象类型—表,点击“确定”。然后选择“浏览”,选中course**表,单击确定,返回页面后,授予相应的权限,最后点击“确定”即可。

结果如下图所示:

图7

8.在SSMS中,用log3建立一个新的数据库引擎查询,执行下述语句,能否成功?

insert into course(cno,spno,cname) values(‘C02003’, ‘sp02’, ‘软件工程’),再执行下述语句,能否成功?

select * from course

** 执行上述插入语句可以成功,因为log3**被授予了插入权限。

** 执行查询语句不能成功,因为log3**没有被授予查询权限。

结果如下图所示:

图8

图9

图10

9.在SSMS中,在log2建立的数据库引擎查询中,再次执行下述语句:

select * from course ,这次能否成功?

但如果执行下述语句:

insert into course values(‘c02004’,’sp01’,’计算机图形学’,null,null, null,null,null,null),能否成功?为什么?

** 执行上述查询语句可以成功。**

** 执行上述插入语句不能成功,因为log2**没有被授予插入权限。

结果如下图所示:

图11

图12

10.授予log3在EDUC数据库中具有建表权限。

** 右击log3属性,选择“安全对象”,依次点击搜索—特定对象—对象类型—数据库—EDUC—确定,返回页面后,勾选“创建表”,最后点击确定即可。**

结果如下图所示:

图13

11.在EDUC数据库中建立用户定义的角色:selectrole,并授予该角色对student、course、student_course表具有查询权。

    **展开“角色”结点,右击“数据库角色”,选择“新建数据库角色”,输入角色名称****selectrole****。选择“安全对象”,依次点击搜索—特定对象—对象类型—表—浏览,将****student****、****course****、****student****_****course****表选中,点击确定。返回页面后,为每张表勾选“选择”,完成后点击确定即可。**

具体操作如下图所示:

图14

12.新建立一个SQL Server 身份验证模式的登录名:pub_user,并让该登录名成为EDUC数据库中的合法用户。

** 上述操作中,已详细阐述如何建立新的登录名并让其成为EDUC**数据库合法用户,此处不再赘述。

结果如下图所示:

图15

图16

13.在SSMS中,用pub_user 建立一个新的数据库引擎查询,执行下述语句,能否成功?为什么?

select * from course

** 不能成功,没有授予数据库用户pub_user查询权限。**

结果如下图所示:

图17

14.将pub_user用户添加selectrole角色中。

** 展开“数据库角色”结点,右击selectrole属性,依次点击添加—浏览,选择pub_user点击确定即可。**

图18

图19

15.在pub_user 建立的数据库引擎查询中,再次执行下述语句,能否成功?为什么?

select * from course

** 执行上述语句,可以成功。因为pub_user继承了selectrole的权限。**

结果如下图所示:

图20

【实验结果】

** ** 本次实验结果已在【实验方法与步骤】中详细写明,此处不再赘述。

【总结】

①SQL Server身份验证模式:Windows验证、混合验证模式

②角色分类:服务器角色、数据库角色(固定的数据库角色、用户自定义角色)、应用程序角色

③权限种类:对象权限、语句权限、隐含权限

④管理权限:授予权限、收回权限、拒绝权限

标签: sql 安全 数据库

本文转载自: https://blog.csdn.net/PXYNLJY/article/details/122370474
版权归原作者 NLJYBSA 所有, 如有侵权,请联系我们删除。

“实验六 SQL SERVER安全管理”的评论:

还没有评论