数据库实验指导书2015 (1)

《数据库概论》实验指导书

通过对敏感数据进行加密存储能有效地防止数据泄密。通常由用户决定是否选用数据加密功能。

4.2 SQL Server 2005实现数据库安全性 (1)一台计算机上可以安装多个SQL Server,使得不同的应用程序可以拥有自己的SQL Server。SQL Server的每一个安装称为一个实例(instance),每个实例必须有属于自己的唯一的名字。

(2)在SQL Server中,有很多种方法来保证安全性。可以通过Windows验证来让Windows自己设置安全性;可以通过视图来限制用户对敏感数据的访问;还可以它通过特定的创建登录名、用户、角色以及授权来明确访问的许可权限。

(3)登录帐号与身份验证。如果用户准备建立与SQL Server的连接,就必须拥有相应的登录帐号。SQL Server提供两种身份验证模式:一种是Windows身份验证模式,由SQL Server系统管理员将Windows帐号或Windows组定义为合法的SQL Server登录帐号,只进行Windows身份验证,用户不必提供SQL Server登录帐号的用户名和密码。另一种是混合模式,如果用户准备建立与SQL Server的连接,那么既可以使用Windows身份验证,也可以使用SQL Server身份验证,对于后者,用户必须提供SQL Server登录帐号的用户名和密码(由SQL Server系统管理员预先定义登录帐号)。

(4)数据库用户帐号和角色。如果用户通过Windows或SQL Server身份验证,即可登录(连接)到SQL Server,但这并不意味着就能够访问SQL Server中的所有数据库,要想访问某个数据库,用户必须在该数据库中拥有用户帐号。数据库用户帐号和角色用来标识数据库中的用户,并控制数据库对象的所有权和执行语句的权限。角色允许将多个用户归类到某个单元中,之后便可对此单元实施一定的许可权限。SQL Server为常用的管理功能提供了预定义(或固定)的服务器角色和数据库角色,固定服务器角色是指在服务器级别提供的管理特权的分组,与用户数据库无关。固定数据库角色是指在数据库级别提供管理特权的分组。用户还可以创建自定义的数据库角色,来表达组织内部分组的工作,这样用户就不必为其中的各个成员分别授予或废除许可权限。如果某角色的职能发生了改变,那么也能非常容易地改变角色的许可权限,这种变更将自动应用于每个角色成员。 (5)许可权限验证。在每个数据库内部,可以为用户帐号和角色分配执行(或限制)某种动作的许可权限。然后按如下步骤进行许可权限验证:在用户执行某个动作之后,客户端将发送T-SQL语句给SQL Server;SQL Server接收到T-SQL语句后将检查用户是否具有执行该语句的许可权限;如果是,SQL Server执行相应的操作;否则,SQL Server返回错误信息。 (6)SQL Server 2005中的几个相关概念:架构(Schema)、用户(User)、角色(Role)和登录(Login)。其中,架构是一个独立数据库用户的非重复命名空间,可以被视为数据库对象的容器。 (7)SQL Server 2005 中数据库对象的引用形式为:

[DatabaseServer].[DatabaseName].[DatabaseSchema].[DatabaseObject]

5、实验步骤

5.1 实验准备:通过执行S_T.sql,在SQL Server 2005中创建一个建立示例数据库S_T。

5.2 利用SQL Server Management Studio进行安全性控制

5.2.1 使用系统管理员账号(如sa)设置SQL Server的安全认证模式,并添加SQL Server登录账户。

(1)设置SQL Server的安全认证模式。在对象资源管理器中展开服务器组,右击需要设

置的SQL服务器,从弹出的快捷菜单中选择“属性”命令。在弹出的窗口中,单击左上角“安全性”选项,右边显示安全性相关设置项目。选中“Windows身份验证模式”或“SQL Server和Windows身份验证模式”单选按钮。设置改变后,必须停止并重新启动SQL Server服务,新设置才能生效。

(2)添加SQL Server登录帐号。打开SQL服务器,选择“安全性”下的“登录名”文件

夹,右击“登录名”文件夹,在弹出的快捷菜单中选择“新建登录名”命令,在出现的窗口的“登录名”文本框中输入一个不带反斜杠的用户名(如tempuser),选中“SQL

21

《数据库概论》实验指导书

Server身份验证”单选按钮,并在“密码”与“确认密码”文本框中输入相同的口令(如qq),默认数据库为master(或改为S_T),默认语言为English,单击“确定”按钮完成创建。

(3)修改登录账号的属性。即双击要修改属性的登录账号,在其属性对话框中修改SQL

Server账号temp的口令(如将口令修改为tempqq)

(4)删除登录账号(如tempuser)。(注意:在实际操作时,先不要执行此项操作!)

使用上述方法,创建4个登录帐号:tempuser,temp1,temp2,temp3; 密码分别为:tempqq,qq1,qq2,qq3。

5.2.2 管理数据库用户 (1)添加数据库用户。展开要添加用户的某数据库(如S_T数据库),展开安全性,右击用户目录,从弹出的快捷菜单中选择“新建数据库用户”命令;打开“数据库用户”对话框;单击“登录名”文本框右边的按钮来选择一个登录账号(如tempuser);在“用户名”文本框中输入用户名,默认情况下它被设置为登录账号名;若需要可以指定数据库用户拥有的架构、数据库角色成员身份等;单击“确定”按钮完成数据库用户的创建。 (2)删除数据库用户。

使用上述方法,为S_T数据库添加4个用户:tempuser,temp1,temp2,temp3,与SQL Server登录帐号一一对应(映射)。

5.2.3 管理数据库角色

(1)添加数据库角色。展开要添加用户的某数据库(如S_T数据库),展开安全性,右击

角色目录,从弹出的快捷菜单中选择“新建数据库角色”命令;打开“数据库角色”对话框;单击“所有者”文本框右边的按钮来选择一个数据库用户(如dbo);在“角色名称”文本框中输入角色名(如db_operator),若需要可以指定数据库角色拥有的架构、此数据库角色的成员信息等;再将数据库用户temp2,temp3添加到数据库角色db_operator中。单击“确定”按钮完成数据库角色的创建。

(2)删除数据库角色。右击要删除的用户自定义角色,在跨界菜单中选择“删除”命令,

在提示对话框中确认,即可完成删除。注意:不能删除一个有成员的角色,在删除这样的角色之前,应先删除其成员;只能删除用户自定义角色,不能删除系统的固定角色!

5.2.4 权限管理

(1)语句权限的管理。右击要修改用户语句权限的数据库(如S_T数据库),在快捷菜单

中选择“属性”命令,打开S_T数据的属性对话框;单击“权限”标签,打开对话框中的“权限”选项卡;在“权限”选项卡中列出了数据库中所有的用户,以及所有的语句权限,可以单击用户与权限交叉点上的方框来选择权限,单击“确定”按钮设置生效。

按照如上方法,将创建表、创建视图的权限授予tempuser。

(2)对象权限的管理。右击要修改用户(或角色)对象权限的数据库(如S_T数据库),

选择“用户”(或“角色”)目录,在右边用户(或角色)列表中双击某用户(角色),打开该用户(或角色)的属性对话框;选择“安全对象”选项卡,添加安全对象并设置各自的权限,单击“确定”按钮设置生效。

22

《数据库概论》实验指导书

按照如上方法,将SELECT,UPDATE(Sname,Sage,Ssex,Sdept) ON Student的权限授予数据库用户temp1。将SELECT ON Student,Course,SC的权限授予数据库角色db_operator。

(3)收回权限。

检验效果:用创建的用户替换sa系统用户,来尝试与数据库服务器的连接,对数据表中的数据进行存取操作,并记录与分析可能会遇到的问题。尝试通过授予更高的权限来解决问题。

5.3 利用T-SQL进行安全性控制

5.3.1 使用系统管理员账户设置SQL Server的安全认证模式,并添加SQL Server登录账户。

(1)设置SQL Server的安全认证模式。(见4.2.1) (2)添加SQL Server登录帐号。

EXEC sp_addlogin 'testuser','qq','S_T','ENGLISH'

/*创建一个SQL Server登录名testuser,密码为qq,数据库为S_T,默认语言为英语*/ EXEC sp_addlogin 'test1','qq1','S_T','ENGLISH' EXEC sp_addlogin 'test2','qq2','S_T_1','ENGLISH' EXEC sp_addlogin 'test3','qq3','S_T_1','ENGLISH'

(3)修改登录账号的属性。

EXEC sp_password 'qq','testqq','testuser'

(4)删除登录账号(如testuser)。

EXEC sp_droplogin 'testuser'’

5.3.2 管理数据库用户

(1)添加数据库用户

/* sp_grantdbaccess为登录帐号在当前数据库中添加一个安全账户,即数据库用户。以下T-SQL代码将登录帐号添加到S_T数据库用户中。*/

USE S_T

EXEC sp_grantdbaccess 'testuser','testuser' EXEC sp_grantdbaccess 'test1','test1' EXEC sp_grantdbaccess 'test2','test2' EXEC sp_grantdbaccess 'test3','test3'

(2)删除数据库用户(如test3)

EXEC sp_revokedbaccess 'test3'

5.3.3 管理数据库角色

(1) 添加数据库角色

/* 在S_T数据库中创建一个新角色db_operator,并将数据库用户test2,test3添加到该角色中 */

USE S_T

EXEC sp_addrole 'db_operator'

EXEC sp_addrolemember 'db_operator', 'test2' EXEC sp_addrolemember 'db_operator', 'test3'

23

《数据库概论》实验指导书

(2) 删除数据库角色

/* 删除db_operator角色。 */

EXEC sp_droprole 'db_operator'

5.3.4 权限管理

(1)语句权限的管理

系统管理员授予用户testuser如下权限:CREATE TABLE、CREATE VIEW。

USE S_T

GRANT CREATE TABLE, CREATE VIEW TO testuser

(2)对象权限的管理

GRANT SELECT,UPDATE(Sname,Sage,Ssex,Sdept) ON Student TO test1 GRANT SELECT ON Student,Course,SC TO db_operator

(3)收回权限

REVOKE CREATE TABLE, CREATE VIEW FROM testuser

REVOKE SELECT UPDATE(Sname,Ssex,Sdept)ON Student FROM test1 REVOKE SELECT ON Student FROM db_operator

检验效果:用创建的用户替换sa系统用户,来尝试与数据库服务器的连接,对数据表中的数据进行存取操作,并记录与分析可能会遇到的问题。尝试通过授予更高的权限来解决问题。

附:实验内容提纲

利用S_T.sql建立示例数据库S_T。

设置SQL Server的安全认证模式:

(1) Windows身份验证模式;

(2) 混合模式(SQL Server和Windows身份验证模式) 添加SQL Server登录帐号:4个

tempuser, temp1, temp2, temp3; 密码分别为:tempqq, qq1, qq2, qq3。 为S_T数据库添加(数据库)用户:4个 tempuser, temp1, temp2, temp3

(与SQL Server登录帐号一一对应(映射))

为S_T数据库添加自定义(数据库)角色: 1个,即db_operator。

将数据库用户temp2和temp3添加到db_operator角色中,成为其角色成员。 将在S_T数据库中创建表、创建视图的权限授予数据库用户tempuser。

将SELECT,UPDATE(Sname,Sage,Ssex,Sdept) ON Student的权限授予数据库用户temp1。 将SELECT ON Student,Course,SC的权限授予数据库角色db_operator。

检验结果:用创建的登录账号替换sa系统账号,来尝试与数据库服务器建立连接,对数据表中的数据进行存取操作,并记录与分析可能会遇到的问题。尝试通过授予更高的权限来解决问题。 从数据库用户temp1回收UPDATE(Sname,Ssex,Sdept) ON Student的权限,从数据库角色db_operator回收SELECT ON SC的权限,然后检验结果的正确性。

24

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4