一、实验目的
本实验的目的是通过实验使学生加深对数据安全性的理解,并掌握SQL Server中有关用户,角色及操作权限的管理方法.
相关知识介绍:
SQL Server提供以下四种防线: (1)Windows NT操作系统的安全防线
Windows NT的网络管理员负责建立用户组,设置帐号并注册,同时决定不同的用户对不同的系统资源的访问级别。用户只有拥有了一个有效的Windows NT登录帐号,才能对网络资源进行访问。
(2)SQL Server的运行安全防线
SQL Server 通过另外一种帐号设置来创建附加安全层。SQL Server具有标准登录和集成登录两种用户登录方式,用户只有登录成功,才能与SQL Server建立一次连接。
(3)SQL Server数据库的安全防线
SQL Server的特定数据库都有自己的用户和角色(用户组),该数据库只能由它的用户或角色访问,其他用户无权访问其数据,数据库系统可以通过创建和管理特定的数据库的用户和角色来保证数据库不被非法用户访问。
(4)SQL Server数据库对象的安全防线
SQL Server可以对权限进行管理,SQL的DCL功能保证合法用户即使登陆了数据库也不能进行超越权限的数据操作,即合法用户必须在自己的权限范围内进行数据操作. 二、实验内容
(1) 在SQL Server Management Studio中设置SQL Server的安全认证模式. (2) 通过图形界面,实现对SQL Server的用户和角色管理。
(3) 分别通过SQL Server图形界面和SQL的数据控制功能,设置和管理数
1
据操作权限。 三、实验步骤
1.在SQL Server Management Studio中为所属的SQL服务器设置为SQL Server和Windows NT混合安全认证模式.其步骤如下:
(1)在对象资源管理器中,用鼠标右击需要设置的SQL服务器,在弹出的菜单中选择“属性”项,则出现服务器对话框.如图6-1所示,在“选择页”中选择“安全性”。
(2)在“服务器身份验证”中选择“SQL Server和Windows身份验证模式\"单选项。
图6—1 服务器属性对话框
2.在SQL Server Management Studio中为自己建立一个服务器用户、数据库用户和数据库角色.
(1)在对象资源管理器中展开服务器,用鼠标单击“安全性”文件夹右侧的‘+’,再用鼠标右击“登录名”,在弹出的菜单中选择“新建登录名”选项,则出现新建登录名对话框。
(2)如图6—2所示,选择“选择页”中的“常规\"选项,输入登录名(本例为U1),选择SQL Server身份验证,并输入用户口令。指定此登录名可以访问的数据库(本例选中Test数据库).
图6-2 新建登录名对话框-—常规选项
(3)如图6—3所示,选择“选择页”中的“服务器角色”选项,需要确定用户所属的服务器角色,在本例中采用缺省值public即可。
图6—3 新建登录名对话框——服务器角色
(4)如图6-4所示,选择“选择页”中的“用户映射”选项,需要确定映射到此登录名的用户,在本例中勾选Test。数据库角色成员身份选择public.
图6-4 新建登录名对话框-—用户映射
(5)单击“确定”按钮,即完成了创建登录用户的工作。 (6)按照上述方法创建登录用户U2、U3。
3.登录新建用户。
(1)重新登录SQL Server Management Studio,如图6—5所示,选择“SQL Server身份验证”,用户名为U1,输入用户口令,连接到SQL Server。
图6-5 新建用户登录
2
(2)新建查询,选择Test数据库,在查询编辑窗口中键入SQL查询命令“SELECT * FROM Student”.运行后,在运行结果窗口得到消息“拒绝了对对象 ’Student'(数据库 'Test’,所有者 'dbo')的 SELECT 权限.”,可见用户U1没有对Student表的SELECT权限。
4.要将Test数据库的部分操作权限赋予数据库用户U1,有两种方法。 方法一:通过图形界面方式
(1)以sa身份进入SQL Server Management Studio,展开服务器,用鼠标单击“数据库”文件夹右侧的‘+’,用鼠标单击Test数据库文件夹右侧的‘+’,用鼠标右击“用户\".在屏幕右侧的“用户”窗口中选择“U1”项,用鼠标右击,在弹出的菜单中选择“属性\"项,则出现数据库用户属性对话框,选择“安全对象\"选项,如图6—6所示。
图6-6 数据库用户U1对话框--安全对象选项
(2)点击“搜索”按钮,出现“添加对象”对话框,选择“特定对象”,点击“确定”按钮,如图6—7所示。
图6—7 添加权限对象对话框
(3)如图6—8所示,在“选择对象”对话框中点击“对象类型”按钮。
图6—8 选择权限对象对话框
(4)如图6-9所示,在“选择对象类型”对话框中勾选“表”,然后点击“确定”按钮,返回到“选择对象”对话框。
图6-9 选择权限对象类型
(5)如图6—10所示,在“选择对象”对话框中,点击“浏览”按钮,进入“查找对象”对话框。
图6—10 选择权限对象
(6)如图6-11所示,在“查找对象”对话框中勾选表Student,然后点击“确定”按钮,再次返回到“选择对象\"对话框。
图6-11 查找权限对象
(7)如图6—12所示,点击“确定”按钮,返回到安全对象设置对话框.
图6-12 选择权限对象对话框
(8)在安全对象设置对话框中,通过勾选dbo.Student对应的权限给用户U1授权。如图6—13所示,勾选“选择”权限对应的授权框,再点击“确定\"按钮,使得用户U1获得Student表的查询权限。
图6-13 授权
(9)验证用户U1对Student表的操作权限。以用户U1的身份登录,在SQL Server Management Studio中新建查询,并在查询编辑区中使用SQL语句查询到Student表中的数据。但是如果以用户U1的身份查询其他基本表,依然无法查看表中数据。
3
方法二:通过SQL的数据控制功能
对用户U1授权,必须是数据库对象拥有者以上用户授予。我们可以以系统管理员或sa用户登录。选择“Test”数据库,在查询编辑区中输入授权语句“GRANT SELECT ON SC TO U1;”,然后执行即可.
5.使用角色来管理数据库权限。
创建角色,使该角色拥有一组权限,然后将角色授予一个指定的用户。
方法一:通过图形界面
创建角色R1,使该角色拥SC表的插入、更新权限,然后将角色R1授予指定的用户U1。
(1)在“对象资源管理器\"中展开服务器,用鼠标单击“数据库”文件夹右侧的‘+',用鼠标单击Test数据库文件夹右侧的‘+’,展开数据库文件夹,然后依次展开“安全性”、“角色”.鼠标右击“数据库角色\",在弹出的菜单中选择“新建数据库角色”项(如图6-14所示),则出现数据库角色属性对话框。
图6-14 新建数据库角色
(2)在“选择页”中选择“常规”选项,并在“角色名称”一栏输入R1,如图6-15所示。
图6—15 数据库角色对话框--常规选项
(3)赋予角色权限的方法与赋予“数据库用户权限”的方法类似。在“选择页”中选择“安全对象\"选项,如图6-16所示。
图6-16数据库角色对话框——安全对象选项
(4)点击“搜索”按钮,出现“添加对象\"对话框,选择“特定对象\",点击“确定”按钮,如图6-17所示.
图6—17 添加权限对象对话框
(5)如图6—18所示,在“选择对象”对话框中点击“对象类型”按钮.
图6—18 选择权限对象对话框
(6)如图6-19所示,在“选择对象类型\"对话框中勾选“表”,然后点击“确定”按钮,返回到“选择对象”对话框。
图6—19 选择权限对象类型对话框
(7)如图6-20所示,在“选择对象\"对话框中,点击“浏览\"按钮,进入“查找对象\"对话框。
图6-20 选择权限对象对话框
(8)如图6—21所示,在“查找对象\"对话框中勾选表SC,然后点击“确定\"按钮,再次返回到“选择对象\"对话框。
图6-21 查找权限对象对话框
(9)如图6—22所示,点击“确定”按钮,返回到安全对象设置对话框。
图6-22 选择权限对象对话框
(10)在安全对象设置对话框中,通过勾选dbo。SC对应的权限给角色R1授权.如图6-23所示,勾选“选择”权限对应的授权框,点击“确定”按钮,使得角色R1获得SC表的插入和修改权限。
图6-23角色授权
4
(11)如图6-24所示,在“选择页”中选择“常规”选项,点击“添加\"按钮,实现将角色R1授予用户。
图6-24 角色赋予用户
(12)如图6—25所示,在“选择数据库用户或角色”对话框中,点击“浏览”按钮,进入“查找对象”对话框。
图6-25 选择数据库用户或角色对话框
(13)如图6—26所示,在“查找对象”对话框中勾选U1,点击“确定”按钮返回。
图6—26 选择被授权用户对话框
(14)如图6—27所示,点击“确定”按钮完成授权,实现把角色R1授予用户U1.
图6-27 完成角色授权
(15)验证用户U1的操作权限.以用户U1的身份登录,在SQL Server Management Studio中新建查询,并在查询编辑区中使用SQL语句,验证用户U1的操作权限。
方法二:通过SQL的数据控制功能
对角色授权,必须是数据库对象拥有者以上用户授予。我们可以以系统管理员或sa用户登录SQL ServerManagement Studio。
创建角色R2,使该角色拥Student表的SELECT、INSERT权限,然后将角色R2授予指定的用户U2和U3。
1)在平台中使用语句sp_addrole @rolename=’角色名'创建角色R2; 2)用GRANT语句为角色R2赋予Student表的SELECT、INSERT权限; 3)在查询分析器中使用语句sp_addrolemember '角色名’,'用户名’将角色授予指定的用户。
6.分别以用户U1,U2,U3的身份进入数据库,实现权限内的操作和权限外的操作,看看会得到什么结果? 附录:
实验7 数据库安全性
基本权限表
1、角色R1 对象 Student SC Course 2、角色R2 对象 Student SC Course 3、用户U1
SELECT √ INSERT √ UPDATE DELETE SELECT INSERT √ UPDATE √ DELETE 5
对象 Student SC Course 4、用户U2 对象 Student SC Course 5、用户U3 对象 Student SC Course SELECT √ √ SELECT √ SELECT √ INSERT √ INSERT √ INSERT √ UPDATE √ UPDATE UPDATE DELETE DELETE DELETE 6
因篇幅问题不能全部显示,请点此查看更多更全内容