1、实验4数据库安全保护实验实验4 数据库安全保护实验一、实验目的和要求(1) 通过实验使学生加深对数据完整性的理解;(2) 掌握使用SQL语句进行数据库权限授予和回收的方法;(3) 掌握使用SQL语句进行视图建立;(4) 掌握SQL Server中数据库备份和恢复的方法。二、实验内容和步骤数据库的安全性是指保护数据库,以防止不合法的使用所造成的数据泄露、更改或破坏。系统安全保护措施是否有效是数据库系统的主要指标之一。数据库的安全性和计算机系统的安全性,包括操作系统、网络系统的安全性,是紧密联系、相互支持的。对于数据库管理来说,保护数据不受内部和外部侵害是一项重要的工作。SQL Server正日益
2、广泛地应用于各种场合,作为SQL Server的数据库系统管理员,需要深入理解SQL Server的安全性控制策略,以实现安全管理的目标。SQL Server包含各种精确的可配置的安全功能。使用这些功能,管理员可实施针对其所处环境的特定安全风险优化的深度防御。SQL Server 2008具有了最新的安全技术,以保证数据的安全。微软公司利用自己Windows操作系统产品的安全性设置,将SQL Server的安全性建构在其上,并且增加了专门的数据安全管理等级。这些机制保证了数据库的访问层次与数据安全。SQL Server安全策略是通过系统的身份验证实现的。身份验证是指当用户访问系统时,系统对该用
3、户的账号和口令的确认过程。身份验证的内容包括确认用户的账号是否有效、能否访问系统、能访问系统的哪些数据等。身份验证模式是指系统确认用户的方式。SQL Server系统是基于Windows操作系统的,这样SQL Server的安全系统可以通过两种方式实现:SQL Server和Windows结合使用以及只使用Windows。Windows系统用户能否访问SQL Server系统,取决于SQL Server系统身份验证方式的设置。Windows 身份验证模式只允许使用Windows身份验证方式。此时,用户无法以SQL Server的登录账号登录服务器。它要求用户登录到Windows系统,当用户访问
4、SQL Server时,不用再次登录。虽然用户仍会被提示登录,但SQL Server的用户名会自动从用户网络登录ID中提取。Windows 身份验证模式最适用于只在部门访问数据库的情况。与SQL Server身份验证方式相比,Windows身份验证方式具有下列优点:提供了更多的功能,如安全确认和口令加密、审核、口令失效、最小口令长度和账号锁定;通过增加单个登录账号,允许在SQL Server系统中增加用户组;允许用户迅速访问SQL Server系统,而不必使用另一个登录账号和口令。混合身份验证模式既允许使用Windows身份验证方式,又允许使用SQL Server身份验证方式。它使用户既可以登
5、录SQL Server,也可用Windows的集成登录。当使用混合模式时,无论是使用Windows身份验证方式的用户,还是使用SQL Server身份验证方式的用户,都可以连接到SQL Server系统上。也就是说,身份验证模式是对服务器来说的,而身份验证方式是对客户端计算机来说的。 查看与更改身份验证模式(1)在【对象资源管理器】面板中,展开服务器结点,右键鼠标,快捷菜单中执行【属性】命令。(2)在【服务器属性】对话框中,选择【安全性】,窗口右侧即会显示出当前的身份验证模式。注:设置改变后,用户必须停止并重新启动SQL Server服务,设置才生效。 创建SQL Server登录一、创建Wi
6、ndows系统账户登录(1)打开【计算机管理】面板,找到【本地用户和组】,右键单击【用户】,执行快捷菜单中的【新用户】命令,按下图所示新建【TEST】用户。(2)启动并登录SQL Server Management Studio,在【对象资源管理器】面板中展开【安全性】分支。 (3)鼠标右键单击【登录名】分支,在弹出的快捷菜单中选择【新建登录名】命令,弹出【登录名-新建】对话框,选中【Windows身份验证】单选按钮,单击【搜索】按钮。(4)在弹出的【选择用户或组】对话框中点击【高级】按钮。(4)单击【立即查找】按钮,在搜索结果中选择【TEST】,确定操作。(5)观察实验结果。在【安全性】分支
7、中已可看到新建的【TEST】登录名,验证实验成功。二、创建标准登录账户假设要在SQL Server系统中新加一个名为MyLog的用户,操作步骤如下。(1)启动并登录SQL Server Management Studio,在【对象资源管理器】面板中展开【安全性】分支。(2)右击【登录名】分支,在弹出的快捷菜单中选择【新建登录名】命令,弹出【登录名-新建】对话框。(3)在【登录名】文本框中输入“MyLog”,点选【SQL Server身份验证】单选按钮,在【密码】与【确认密码】文本框中输入“SO9”。注意,不要采用与用户名相同的密码,大家在实际使用时要特别留意,因为这样做会大大降低数据库的安全性
8、。在【默认数据库】下拉列表框中选择【master】选项,也就是当新建的用户登录,所有的默认操作都将是针对数据库master的。确认操作。(4)验证实验结果。(5)退出SSMS,并重新启动,在【SQL Server身份验证】模式下,用MyLog登录服务器。尝试连接【MASTER】数据库。尝试连接【MyDB】数据库。观察结果,分析原因。利用T_SQL添加SQL Server账号:执行系统存储过程sp_addlogin:Sp_addlogin login_id,passwd,defdb,deflanguage如:Sp_addlogin FOX ,Saying,pubs其中:Login_id为注册标识
9、或SQL Server用户名;Passwd为口令,默认口令是NULL(即不需要口令),用户可以在任何时候使用;sp_password系统存储过程改变自己的口令;Defdb指定用户在注册时连接到的默认数据库,如果没有指定默认数据库,则默认数据库是master;Deflanguage说明用户注册到SQL Server时使用的默认语言代码。 修改登录账号的属性利用企业管理器:用鼠标双击要修改属性的登录账号,在属性对话框中进行修改。利用T_SQL:涉及以下几个系统存储过程:sp_password修改账号口令,sp_defaultdb修改账号默认数据库,sp_defaultlanguage修改账号默认语
10、言。其中,系统存储过程sp_password的格式是: sp_password old_passwd,new_passwd,login_id sp_password Saying , Singing, FOX 删除登录账号利用企业管理器:右击要删除的账号,在弹出的快捷菜单中选择“删除”命令,在确认对话框中单击“是”按钮,这个登录账号就永久被删除了。利用T_SQL:使用系统存储过程sp_droplogin来删除SQL Server登录账号。如:sp_droplogin student sp_droplogin FOX 启用和禁用登录要启用、禁用或解锁一个登录的操作步骤:(1)启动Microsof
11、t SQL Server Management Studio,在【对象资源管理器】视图中,连接到适当的服务器,然后向下浏览至【安全性】文件夹。(2)展开【安全性】文件夹和【登录名】文件夹以列出当前的登录。右击【MyLog】,然后从快捷菜单中选择“属性”以查看此登录的属性。这样会打开“登录属性”对话框。 (3)在【登录属性】对话框左侧列表中选择【状态】选项,打开【状态】页面。(4)然后可以进行以下操作: 要启动登录,在“登录”选项区下选择“启用”单选按钮。 要禁用登录,在“登录”选项区下选择“禁用”单选按钮。 (5)最后单击“确定”按钮,完成操作。 修改登录具体操作步骤如下:(1)选择Mylog
12、,打开“登录属性”对话框。(2)单击【登录属性】对话框左侧的【用户映射】选项,可以为当前用户添加一个连接数据库【MyDB】。(3)切换用MyLog登录连接服务器,观察MYDB数据库。 创建数据库用户(1) 通过设置“用户映射”指明数据库用户。首先将【MyDB】数据库【安全性】下面的【MyLog】删除。(2)选择【MyDB】数据库结点,展开,定位至【安全性】,鼠标右键点击【用户】,执行快捷菜单中的【新建用户】命令。(3)如下图所示的位置,点击【 】按钮。(4)在【选择登录名】对话框中,点击【浏览】按钮。(5)在【查找对象】对话框中,勾选【MyLog】,确定操作。(6)录入新建的用户名【MyUse
13、r】,再次执行【确定】按钮。(7)观察并确认试验结果。 操作权限权限分为3种状态:授予、拒绝、撤销,可以使用如下的语句来修改权限的状态。v 授予权限(GRANT):授予权限以执行相关的操作。通过角色,所有该角色的成员继承此权限。v 撤销权限(REVOKE):撤销授予的权限,但不会显示阻止用户或角色执行操作。用户或角色仍然能继承其他角色的GRANT权限。v 拒绝权限(DENY):显式拒绝执行操作的权限,并阻止用户或角色继承权限,该语句优先于其他授予的权限。一、授予权限 语法格式:GRANTALL|statement,.n TO security_account,.n 试分析以下语句功能:USE
14、MyDB Go GRANT SELECT, INSERT ON STUDENTS TO MyUser GO切换至 MYLOG连接服务器。按照下图所示执行对应操作,理解权限和授权的含义。分析为何SQL Server系统对于语法正确的SQL语句会差别对待,允许执行或拒绝执行的依据是什么?切换至 Windows 验证。分析下语句功能:USE MyDB Go GRANT CREATE TABLE TO MyUser GO二、回收权限REVOKE ALL|statement,.n FROM security_account,.n 执行以下语句,分析其功能:USE MyDB Go REVOKE INSER
15、T ON STUDENTS FROM MyUser GO 删除SQL Server登录当一个用户不再需要具有数据库操作的权限时,在安全管理上要进行用户的删除操作。下面以删除用户Teacher为例,讲解在SQL Server中删除用户登录的操作步骤。(1)启动并登录SQL Server Management Studio,在【对象资源管理器】面板中展开【安全性】|【登录名】分支,右击用户名【Mylog】,在弹出的快捷菜单中选择【删除】命令,弹出【删除对象】对话框。(2)单击【确定】按钮,这个用户就删除了,此时会弹出一个删除登录名提示框。 (3)如果要彻底删除用户,还要展开【数据库】|【MyDB】
16、|【安全性】|【用户】分支,右击【MyUser】,弹出【删除对象】对话框。单击【确定】按钮,登录名将彻底从系统中删除。 备份数据库备份就是制作数据库结构和数据的拷贝,以便在数据库遭到破坏时能够修复数据库。数据库的破坏是难以预测的,因此必须采取能够还原数据库的措施。一般地,造成数据丢失的常见原因包括以下几种。v 软件系统瘫痪v 硬件系统瘫痪v 人为误操作v 存储数据的磁盘被破坏v 地震、火灾、战争、盗窃等灾难用户执行完全的数据库备份,包括所有对象、系统表以及数据。在备份开始时,SQL Server复制数据库中的一切,而且还包括备份进行过程中所需要的事务日志部分。因此,利用完整备份还可以还原数据库
17、在备份操作完成时的完整数据库状态。完整备份方法首先将事务日志写到磁盘上,然后创建相同的数据库和数据库对象及复制数据。由于是对数据库的完整备份,因而这种备份类型速度较慢,将占用大量磁盘空间。在对数据库进行完整备份时,所有未完成的事务或者发生在备份过程中的事务都将被忽略。完整备份是指备份整个数据库,不仅包括表、视图、存储过程和触发器等数据库对象,还包括能够恢复这些数据的足够的事务日志。完整备份的优点是操作比较简单,在恢复时只需要一步就可以将数据库恢复到以前的状态。SQL Server2000有数据库完全备份、数据库差异备份、事务日志文件备份、文件及文件组备份等四种形式。在备份一个数据库之前,需要先
18、创建一个备份设备,然后再去复制要备份的数据库、事务日志、或文件/文件组等,而备份设备可以是磁带、磁盘文件或是网络驱动。一、备份设备使用SQL Server Management Studio 创建备份设备的具体步骤如下:(1)启动 SQL Server Management Studio,打开SQL Server Management Studio窗口,并使用windows或者SQL Server 身份验证建立连接。(2)在“对象资源管理器”视图中,展开服务器的“服务器对象”文件夹(3)右击“备份设备”,然后从快捷菜单中选择“新建备份设备”,打开“备份设备”对话框,(4)在“设备名称”文本框中
19、,输入“我的备份”。设置好目标文件或者保持默认值,这里必须保证SQL Server 2008所选择的硬盘驱动器上有足够的可用空间。(5)单击“确定”按钮完成创建永久备份设备。二、数据库的备份按步骤实现对数据库【MyDB】的备份操作。(1)启动SSMS,并连接到SQL Server中的数据库。在【对象资源管理器】中展开【数据库库】结点,右键快捷菜单中执行【新建数据库】命令。 (2)将新建的数据库命名为【MyDB】,其余保留默认设置不变。(3)在下图所示的位置处,点击【可用数据库】列表,将其由默认的【master】改选为我们刚新建的数据库【MyDB】。(4)将下面所有的SQL语句复制、粘贴至查询窗
20、口中执行。CREATE TABLE Students ( Sno CHAR(5) PRIMARY KEY, Sname CHAR(20) NOT NULL UNIQUE, Ssex CHAR(2) CONSTRAINT de_Ssex DEFAULT 男, Sage INT CHECK ( Sage BETWEEN 16 AND 24), Sdept CHAR(15) CHECK ( Sdept IN (电子商务,计算机,数学) )CREATE TABLE Courses ( Cno CHAR(5) PRIMARY KEY, Cname CHAR(20) NOT NULL, Pre_Cno C
21、HAR(5) REFERENCES COURSES(Cno), Credits INT, ); CREATE TABLE Reports ( Sno CHAR(5) REFERENCES STUDENTS(Sno), Cno CHAR(5) REFERENCES Courses(Cno), Grade INT CHECK (Grade=0 AND Grade=100), CONSTRAINT Sno_Cno PRIMARY KEY(Sno,Cno) );INSERT INTO Students VALUES (S01,王建平,男,21,电子商务);INSERT INTO Students VA
22、LUES (S02,刘华,女,19,电子商务);INSERT INTO Students VALUES (S03,范林军,女,18,计算机);INSERT INTO Students VALUES (S04,李伟,男,19,计算机);INSERT INTO Courses VALUES(C01,英语,NULL,4);INSERT INTO Courses VALUES(C05,C+,NULL,3);INSERT INTO Courses VALUES(C02,数据结构,C05,2);INSERT INTO Courses VALUES(C03,数据库,C02,2);INSERT INTO Co
23、urses VALUES(C04,DB_设计,C03,2);INSERT INTO Courses VALUES(C07,操作系统,C05,3);INSERT INTO Courses VALUES(C06,网络原理,C07,3);INSERT INTO Reports VALUES(S01,C01,92);INSERT INTO Reports VALUES(S01,C03,84);INSERT INTO Reports VALUES(S02,C01,90);INSERT INTO Reports VALUES(S02,C02,94);INSERT INTO Reports VALUES(S
24、02,C03,82);INSERT INTO Reports VALUES(S03,C01,72);INSERT INTO Reports VALUES(S03,C02,90);INSERT INTO Reports VALUES(S04,C03,75);语句执行完毕后,请先检查【MyDB】数据库中是否成功新建三张表,三张表中的数据是否成功录入。(5)鼠标右键点击要备份的数据库【MyDB】, 在弹出的快捷菜单中选择【任务】/【备份】命令,如下图所示:(6)进入【备份数据库】对话框,在【常规】选项卡中设置数据库的数据源和备份地址。下图中,先点击右下角的【添加】按钮。【选择备份目标】处,点击【】按
25、钮。打开了【定位数据库文件】对话框,设置备份路径为D:,备份文件名为MyBack,确定你的操作。(7)回到【选择备份目标】对话框,点击【确定】按钮,等待备份成功的提示。执行下语句,分析其功能:USE MyDBGOTRUNCATE TABLE REPORTSGO请同学自己在相应的操作窗口,用相应的方法来验证你的分析。 恢复数据库(1)鼠标右键单击要恢复的数据库【MyDB】,在弹出的快捷菜单中依次选择【任务】/【还原】/【数据库】命令,如下图所示:(2)进入【还原数据库】对话框,在【常规】选项卡中,确认还原的目标和源数据库以及用于还原的备份。(3)在【还原数据库】对话框的【选项】选项卡中,勾选【覆盖现有数据库】复选框。(4)对数据库【MyDB】的还原成功完成。 分离和附加数据库 看图说话。参考以下操作截图,结合你的实验过程,请用你的语言描述如何将数据库从服务器上分离出去,又如何将数据库重新附加回来,要求给出详尽步骤。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1