1、数据库管理系统 SQL Server实验报告第 1 页 2011 年 5 月 4 日实验 8 数据库安全性实验日期和时间:2014/11/05 实验室:2 栋实验楼班级:12 计科 4 学号:20123569 姓名:施文君实验环境:硬件:Windows 7 旗舰版( 32 位/ DirectX 11 ) ,SQL Server 2005软件:CPU: 英特尔 Pentium(奔腾) 双核 T4300 2.10GHz,内存:2 GB ( 海力士 DDR2 800MHz )硬盘:希捷 ST9500325AS ( 500 GB )显卡:ATI Mobility Radeon HD 4570 (M92
2、) ( 512 MB / 华硕 )实验原理:SQL Server 2005 数据库的安全性通过以下几个方面得以保证: 网络系统的安全性:这可以通过在网络系统边界安装防火墙系统得以实施。 服务器的安全性:即保证运行 SQL Server 2005 的服务器本身及其操作系统的安全。 SQL Server 2005 的登录安全性:即允许哪些用户登录 SQL Server 服务器。 数据库的安全性:即规定用户登录 SQL Server 服务器以后可以使用哪些数据库。 数据库对象的安全性:即规定用户打开某一数据库后,可以操作哪些数据库对象以及怎样操作。实验主要任务:一、创建登录账户:SQL Server
3、 2005 的登录安全性(通过修改身份认证方式 Windows 身份认证和 SQL、Windows 混合身份认证及在 服务器安全性里建立登录名实现)1. 理解 Windows 身份认证和 SQL、Windows 身份认证的含义区别,利用 SQL 管理控制平台建立 5 个登录账号,创建密码, ,默认数据库为 MASTER,再利用 SQL 语句创建 3 个登录账号,创建密码。如:create login s20120001 WITHPASSWORD =S123_456(登录账号建议使用本班学生的学号,密码用强密码方式) 。然后用其中的登录账户进入系统。2. 删除一个登录账号3. 查看各服务器角色的
4、含义并为所创建的登录账号分配服务器角色。(服务器角色是指根据 SQL Server 的管理任务,以及这些任务相对的重要性等级来把具有 SQL Server 管理职能的用户划分为不同的用户组,每一组所具有的管理 SQL Server 的权限都是 SQL Server 内置的,即不能对其进行添加、修改和删除,只能向Comment U1: 服务器的登录账号和数据库用户名可以一样,也可以不一样,如本实验,服务器的登录账号为学生的学号,数据库用户名为 U1-U7,此时需要建立登录账号和数据库用户名之间的联系。数据库管理系统 SQL Server实验报告第 2页 2011年 5月 4日其中加入用户或者其他
5、角色。SQL Server提供的固定服务器角色,其具体含义如下: 系统管理员(sysadmin):可以在数据库引擎中执行任何活动。默认情况下,Windows BUILTINAdministrators组(本地管理员组)的所有成员都是sysadmin固定服务器角色的成员。 服务器管理员(Serveradmin):可以更改服务器范围的配置选项和关闭服务器。 磁盘管理员(diskadmin):管理磁盘文件。 进程管理员(processadmin ):可以终止在数据库引擎实例中运行的进程。 安全管理员(securityadmin):可以管理登录名及其属性。 安装管理员(setupadmin):可以添加
6、和删除链接服务器,并可以执行某些系统存储过程。 数据库创建者(dbcreator ):可以创建、更改、删除和还原任何数据库。 大容量插入操作管理者(bulkadmin):可以执行大容量插入操作)二、管理数据库的用户(通过在不同的数据库里建立用户名,并与相应的任务一所建立的服务器登录名建立映射关系实现)在数据库中,一个用户或工作组取得合法的登录账户,只表明该账户可以通过 Windows认证或 SQL Server认证,但并不表明其可以访问数据库和对数据库对象进行某种或某些操作,管理员必须在数据库中为用户建立一个数据库账户,并授予此账户访问数据库及数据库中对象的权限后,才能使该用户访问数据库。一台
7、服务器除了有一套服务器登录帐户列表外,每个数据库中也都有一套相互独立的数据库用户列表。每个数据库用户都和服务器登录帐户之间存在着一种映射关系。系统管理员可以将一个服务器登录帐户映射到用户需要访问的每一个数据库中的一个用户帐户和角色上。一个登录帐户在不同的数据库中可以映射成不同的用户,从而拥有不同的权限。导入(或附加)学生成绩数据库,附加 SPJ表,然后以不同的登录账户访问相关数据库对数据库实施如下操作:1. 使用USE 数据库名GO 查看各个登录账户能否使用各数据库。2. 分别使用 SQL SERVER管理控制台为学生成绩数据库创建数据库用户 U1-U5和TRANSACT-SQL的数据库用户
8、U6,U7 ,U8,与相应的登录账户建立好映射关系。如:USE 学生成绩create user u3for login s3-WITH DEFAULT_SCHEMA=DBO3. 查看各数据库角色的含义并为所创建的用户分配数据库角色(在 SQL Server管理控制台中,展开 SQL Server服务器组中相应服务器,展开“数据库”目录树,再展开某个具体的数据库,选择“安全性| 角色|数据库角色”,在右侧窗口中会看到数据库中已存在的角色。在未创建新角色之前,数据库中只有固定数据库角色。 )数据库管理系统 SQL Server实验报告第 3 页 2011 年 5 月 4 日(数据库角色是为某一用户
9、或某一组用户授予不同级别的管理或访问数据库以及数据库对象的权限,这些权限是数据库专有的,并且还可以给一个用户授予属于同一数据库的多个角色。SQL Server 在安装成功后,提供了十种固定数据库角色。固定数据库角色是在数据库级别定义的,并且存在于每个数据库中。SQL Server 提供的固定数据库角色的具体含义如下: public:维护全部默认权限。 db_accessadmin:可以为登录帐户添加或删除访问权限。 db_backupoperator:可以备份该数据库。 db_datareader:可以对数据库中的任何表或视图运行 SELECT 语句。 db_datawriter:可以在所有用
10、户表中添加、删除或更改数据。 db_ddladmin:可以在数据库中运行任何数据定义语言(DDL)命令。 db_denydatareader:不能读取数据库内用户表中的任何数据。 db_denydatawriter:不能添加、修改或删除数据库内用户表中的任何数据。 db_owner:可以执行数据库的所有配置和维护活动。 db_securityadmin:可以修改角色成员身份和管理权限。在固定的数据库角色中,public 是一个特殊的数据库角色,每个数据库用户都属于public 数据库角色。当尚未对某个用户授予或拒绝对安全对象的特定权限时,则该用户将继承授予该安全对象的 public 角色的权限
11、。)4. 利用 TRANSACT-SQL 语句 DROP USER user_name 删除用户 U8。三、权限的管理权限用来指定授权用户可以使用的数据库对象以及对这些数据库对象可以执行的操作。用户在登录到 SQL Server 之后,根据其用户帐户所属的 Windows 组或角色,决定了该用户能够对哪些数据库对象执行哪种操作以及能够访问、修改哪些数据。在每个数据库中,用户的权限独立于用户帐户和用户在数据库中的角色,每个数据库都有自己独立的权限系统。权限的管理主要是完成对权限的授权、拒绝和回收。权限的管理主要是对权限的授权(grant) 、拒绝(deny) 、和回收 (revoke)。管理权限
12、可以通过以下方式实现:1. 从数据库的角度来管理。2. 从用户或角色的角度来管理。3. 从数据库对象的角度来管理。在 SQL Server 中,可以通过 SQL Server 管理控制台或 Transact-SQL 语句管理权限。(一)管理数据库的权限:从数据库的角度来管理。在 SQL Server 管理控制台中,展开 SQL Server 服务器组中相应服务器。 (2)展开“数据库”,右击某个数据库的名称,在弹出的快捷菜单中选择“属性”选项,会弹出数据库属性对话框。单击“权限” 选择页,打开权限窗口。在权限选择页中,可以单击“添加”按钮,添加用户或角色。选择权限。1.利用 SQL Serve
13、r 管理控制台对学生成绩数据库为用户 U1 授予CONNECT、CREATE TABLE、 CREATE VIEW、 INSERT、 SELECT 等 6 种权限。并验证相应的权限。 (注意:要能执行建表语句,需要两个权限:(1).create table 权限:(2.) 所在架构的 alter 权限:alter schema数据库管理系统 SQL Server实验报告第 4 页 2011 年 5 月 4 日2.利用 SQL Server 管理控制台对学生成绩数据库为用户 U1 回收相应的权限,并验证。(二)管理用户的权限:从用户或角色的角度来管理管理用户的权限就是设置一个用户能对哪些对象执行
14、哪些操作。选择数据库-安全性- 用户-右键单击数据库用户-属性-安全对象- 添加-特定对象-相关表或视图等-选择权限。 ,1.对用户 U2,利用对用户的授权机制授予其查询课程表的权限, 并验证。2.回收其查询课程表的权限, 并验证。(三)管理数据库对象的权限:从数据库对象的角度来管理可以从数据库对象的角度完成相同的工作,即设置一个数据库对象能被哪些用户/角色执行哪些操作。在 SQL Server 管理控制台中,展开 SQL Server 服务器组中相应服务器。展开“数据库” ,再展开指定的数据库,选择“ 表”,在右边窗口的数据表列表中右击表名称,在弹出的快捷菜单中选择“属性”选项,打开表属性对
15、话框,选择“权限”选择页。可以单击“ 添加” 按钮添加用户或角色,也可以撤消已授的权限。1.对于成绩表,对用户 U3 赋予其 SELECT 、DELETE 、 INSERT、 UPDATE 成绩列的权限,并验证。同时验证验证将学号 2005226146 的成绩改为 100验证学号 2005226146 的学号改为 2005999999如果给用户 U3 赋予了修改学号的权限,可以修改吗?为什么(利用第五章的数据库的参照完整性回答)2. 回收其查询成绩表的权限,并验证。四、参照王珊教材第四章利用 Transact-SQL 语句完成下列权限的设置,并验证。 (先在管理控制平台下回收用户的上述所有的权
16、限。 )(一)授权1. 把查询学生表和张姓同学的视图的权限授给用户 U12. 把对学生表和课程表的全部权限授予用户 U2 和 U33. 把对成绩表的查询权限授予所有用户4. 把查询学生表和修改学生学号的权限授给用户 U45. 把对成绩的 INSERT 权限授予 U5 用户,并允许他再将此权限授予其他用户(with grant option)6. U5 将相应权限授予 U6,并允许他再将此权限授予其他用户7. U6 将相应权限授予 U7(二)回收权限8. 把用户 U4 修改学生学号的权限收回9. 收回所有用户对表 SC 的查询权限10. 把用户 U5 对成绩表的 INSERT 权限收回验证结果是
17、否正确数据库管理系统 SQL Server实验报告第 5 页 2011 年 5 月 4 日将以上任务的实验完成情况、实验结果、实验原理、总结分栏一一填写到下表中,格式参考任务 1 或者自定。任务 1:1.理解 Windows 身份认证和 SQL、Windows 身份认证的含义区别,利用 SQL 管理控制平台建立 5 个登录账号,创建密码, ,默认数据库为 MASTER,2.删除一个登录账号3.查看各服务器角色的含义并为所创建的登录账号分配服务器角色。完成情况(代码及运行结果评析):1. create login s20126666 withPASSWORD =S123create login
18、s20127777 withPASSWORD =S123create login s20128888 withPASSWORD =S123数据库管理系统 SQL Server实验报告第 6 页 2011 年 5 月 4 日2.3数据库管理系统 SQL Server实验报告第 7 页 2011 年 5 月 4 日数据库管理系统 SQL Server实验报告第 8 页 2011 年 5 月 4 日小结:Comment U2: 服务器的登录账号和数据库用户名可以一样,也可以不一样,如本实验,服务器的登录账号为学生的学号,数据库用户名为 U1-U7,此时需要建立登录账号和数据库用户名之间的联系。数据库
19、管理系统 SQL Server实验报告第 9页 2011年 5月 4日任务 2: 通过在不同的数据库里建立用户名,并与相应的任务一所建立的服务器登录名建立映射关系实现导入(或附加)学生成绩数据库,附加 SPJ表,然后以不同的登录账户访问相关数据库对数据库实施如下操作:1.使用USE 数据库名GO 查看各个登录账户能否使用各数据库。2.分别使用 SQL SERVER管理控制台为学生成绩数据库创建数据库用户 U1-U5和TRANSACT-SQL的数据库用户 U6,U7 ,U8,与相应的登录账户建立好映射关系。3.查看各数据库角色的含义并为所创建的用户分配数据库角色4. 利用 TRANSACT-SQ
20、L语句 DROP USER user_name 删除用户 U8。完成情况(代码及结果):1数据库管理系统 SQL Server实验报告第 10 页 2011 年 5 月 4 日用户 20121111 的服务器角色是 sysadmin,所以可以访问 spj 表2.数据库管理系统 SQL Server实验报告第 11 页 2011 年 5 月 4 日数据库管理系统 SQL Server实验报告第 12 页 2011 年 5 月 4 日create user U6for login s20126666create user U7for login s20127777create user U8for
21、 login s201288883.数据库管理系统 SQL Server实验报告第 13 页 2011 年 5 月 4 日数据库管理系统 SQL Server实验报告第 14 页 2011 年 5 月 4 日4.DROP USER U8命令成功完成,U8 已经删除。数据库管理系统 SQL Server实验报告第 15 页 2011 年 5 月 4 日总结:(实验结果及原理的分析)任务 3: (一)管理数据库的权限:从数据库的角度来管理。1.利用 SQL Server 管理控制台对学生成绩数据库为用户 U1 授予CONNECT、CREATE TABLE、 CREATE VIEW、 INSERT、
22、 SELECT 等 6 种权限。并验证相应的权限。 (注意:要能执行建表语句,需要两个权限:(1).create table 权限:(2.) 所在架构的 alter 权限:alter schema2.利用 SQL Server 管理控制台对学生成绩数据库为用户 U1 回收相应的权限,并验证。(二)管理用户的权限:从用户或角色的角度来管理1.对用户 U2,利用对用户的授权机制授予其查询课程表的权限, 并验证。2.回收其查询课程表的权限, 并验证。(三)管理数据库对象的权限:从数据库对象的角度来管理1.对于成绩表,对用户 U3 赋予其 SELECT 、DELETE 、 INSERT、 UPDATE
23、 成绩列的权限,并验证。同时验证验证将学号 2005226146 的成绩改为 100验证学号 2005226146 的学号改为 2005999999如果给用户 U3 赋予了修改学号的权限,可以修改吗?为什么(利用第五章的数据库的参照完整性回答)2. 回收其查询成绩表的权限,并验证。完成情况(代码及结果):1.数据库管理系统 SQL Server实验报告第 16 页 2011 年 5 月 4 日select *from 学生名单create table 宿舍(宿舍号 char(20) primary key)数据库管理系统 SQL Server实验报告第 17 页 2011 年 5 月 4 日数
24、据库管理系统 SQL Server实验报告第 18 页 2011 年 5 月 4 日2.数据库管理系统 SQL Server实验报告第 19 页 2011 年 5 月 4 日3数据库管理系统 SQL Server实验报告第 20 页 2011 年 5 月 4 日数据库管理系统 SQL Server实验报告第 21 页 2011 年 5 月 4 日4数据库管理系统 SQL Server实验报告第 22 页 2011 年 5 月 4 日数据库管理系统 SQL Server实验报告第 23 页 2011 年 5 月 4 日数据库管理系统 SQL Server实验报告第 24 页 2011 年 5 月
25、 4 日回收成绩表的权限后数据库管理系统 SQL Server实验报告第 25 页 2011 年 5 月 4 日总结:(实验结果及原理的分析)可以从数据库对象的角度完成相同的工作,即设置一个数据库对象能被哪些用户/角色执行哪些操作。任务 4: -1.把查询学生表和张姓同学的视图的权限授给用户U1GRANT SELECTON 学生TO U1;CREATE VIEW 张姓同学ASSELECT *FROM 学生WHERE 姓名LIKE 张%;GRANT SELECTON 张姓同学TO U1;我之后用用户 U1 登陆,验证结果如下:数据库管理系统 SQL Server实验报告第 26 页 2011 年
26、 5 月 4 日-2.把对学生表和课程表的全部权限授予用户U2和U3GRANT ALL PRIVILEGESON 学生TO U2,U3;GRANT ALL PRIVILEGESON 课程TO U2,U3 ;-3.把对成绩表的查询权限授予所有用户GRANT SELECTON 成绩数据库管理系统 SQL Server实验报告第 27 页 2011 年 5 月 4 日TO PUBLIC;-4.把查询学生表和修改学生学号的权限授给用户U4GRANT UPDATE(学号),SELECTON 学生TO U4;-5.把对成绩的INSERT 权限授予 U5用户,并允许他再将此权限授予其他用户(with gra
27、nt option)GRANT INSERTON 成绩TO U5WITH GRANT OPTION;-验证:INSERT INTO 成绩 (学号 ,课程号, 成绩)VALUES (20122956,0050219,89);-6.U5将相应权限授予U6 ,并允许他再将此权限授予其他用户GRANT INSERTON 成绩TO U6WITH GRANT OPTION;-7.U6将相应权限授予U7GRANT INSERT数据库管理系统 SQL Server实验报告第 28 页 2011 年 5 月 4 日ON 成绩TO U7;数据库管理系统 SQL Server实验报告第 29 页 2011 年 5 月 4 日数据库管理系统 SQL Server实验报告第 30 页 2011 年 5 月 4 日总结:(实验结果及原理的分析)小结:(不少于 100 字)你在完成查询任务的过程中遇到的问题及解决的方法有:我在做实验的时候,经常用 windows 身份认证打开我保存的语句,所以当你做查询的时候,就永远可以对任何数据库做任何动作,做的结果老是不对,后来我就记得在关闭连接的时候,记得把新建查询也关闭,下次用你登陆的身份打开保存的 SQL 语句。要求:1. 报告格式和内容要求:a. 内容和格式整齐。大标题采用黑体四号字加粗,小标题采用小四号字加粗。正