数据库完整性与安全性实验1Word文档下载推荐.docx
《数据库完整性与安全性实验1Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据库完整性与安全性实验1Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。
完整性,未授权者或使用非法手段无法修改数据。
A:
可用性,已授权者可随时使用数据。
3.深度防护:
实际上任何一个程序都运行在操作系统上,一台计算机上还有其它应用程序。
所以SQLServer的安全不能仅仅考虑本身的安全,而必须结合操作系统安全及其它相关因素(比如杀毒软件和防火墙)来考虑。
这就是深度防护。
SQLServer仅仅运行在Windows操作系统上,允许直接使用Windows用户作为SQLServer用户,由于是同一公司的产品,其和操作系统的联系和配合特别紧密,为其它数据库所远远不及的。
在SQLServer服务器及其它Windows服务器上,应该进行多方面的安全配置:
包括操作系统补丁管理、管理员用户和组管理、其它本地用户组管理和设置本地安全策略。
为了提供网络上的客户端访问,还需要进行端点等相关设置。
SQLServer对两种实体提供安全机制。
分别是登录名(以前曾称为login,现在在T-SQL中仍然这样使用,但为避免混淆,Microsoft已经开始改称其为服务器主体)和用户名(user,就是数据库主体)。
现在有3种登录名:
windows域登录名(就是域用户),windows本地登录名(本地用户)和SQLServer登录名。
用户登录以后,SQLServer将其映射为自己的user,进行相应安全管理。
从而提供了两种身份认证模式:
Windows认证模式和SQLServer认证模式。
1.Windows认证模式
SQLServer数据库系统通常运行在NT服务器平台或基于NT构架的Windowsserver上,而NT作为网络操作系统,本身就具备管理登录、验证用户合法性的能力,所以Windows认证模式正是利用这一用户安全性和账号管理的机制,允许SQLServer也可以使用NT的用户名和口令。
在该模式下,用户只要通过Windows的认证就可连接到SQLServer,而SQLServer本身也不需要管理一套登录数据。
2.SQLServer认证模式
在SQLServer认证模式下,用户在连接到SQLServer时必须提供建立在SQLServer上的用户名(登录名)和登录密码,这些登录信息存储在系统表syslogins中,与NT的登录账号无关。
SQLServer自己执行认证处理,如果输入的登录信息与系统表syslogins中的某条记录相匹配则表明登录成功。
注:
该方式常用于系统开发中,因为客户机常常与服务器不是同一台计算机,甚至也不在同一个windows域中,所以使用该方式进行登录比较方便。
实验内容:
1.以DBA身份(可以是SQLServer上的sa或者windows上的系统管理组的某个成员)登陆系统,在图形界面下创建新登录,新建登录用户可以使用Windows认证模式和SQLServer认证模式。
首先,右键安全性,再选择登录名,最后选择新建登录名,便可以弹出如下的窗口,我们填写要新建的登录名,以及选择登录方式(windows身份验证还是SQLServer身份验证)。
点击确定,便可以成功的新建登录。
2.使用T-SQL命令createloginlogin-name…和createloginlogin-namefromwindows重复第1步的内容。
我们执行了如下的T-SQL命令:
运行的结果如图所示,我们看到在安全性-登录名的目录下,已经有了名为majunyi的登录名,这表明我们之前进行的操作已经成功了:
3.在服务器角色选项卡中赋予新建用户角色。
完成后查找T-SQL中对应命令,在图形界面上撤消该权限后使用命令完成授予权限和收回权限的任务。
我们在服务器角色选项卡中选择了新建服务器角色,新建了一个名为majunyiX服务器角色,并将安全对象选为我们刚刚创建的登录名majunyi,并开启所有权限。
之后,我们打开在这个服务器角色,再将登录名majunyi的权限全部取消,如下图所示。
执行如下的SQL代码,即可将权限授予登录名majunyi:
执行后,我们看到,权限已经被授予了:
执行如下的SQL代码,即可将登录名majunyi的权限取消:
查看执行后的结果,我们又发现权限被去除了。
4.将新建用户映射到移动通信数据库某用户。
执行相关SQL操作,检查该用户的权限。
用户在权限范围内、超出权限范围访问相应数据对象,查看访问结果和DBMS的反映。
我们执行了如下的代码,来将新建登录名majunyi映射到我们存有移动通信数据的数据库DB_EXP中。
我们右键了数据库DB_EXP,选择属性,再查看权限。
可以看到我们刚刚映射进来的用户majunyi,以及他的权限(如图所示)。
为了进一步的验证权限的影响,我们将用户majunyi的权限设置为拒绝新建表。
接下来,我们用用户majunyi连接数据库,再执行一条新建表的语句,查看执行的效果,我们执行了如下的语句:
执行后的结果如图所示,果不其然,由于权限的限制,用户majunyid建表操作被拒绝了,没有执行成功。
5.对特定服务器对象设置权限,双击登陆名以后选择安全对象,赋予该登录名对服务器内的某个对象的权限。
如下图所示,我们双击了登录名majunyi,并选择了安全对象,在安全对象JUNYIMA-PC中,我们拒绝了他创建服务器角色的权限。
之后,我们便执行下面的SQL语句,尝试去创建一个服务器角色,看看会有什么样的反映。
执行后的结果如下图所示,可见,由于权限的限制,用户majunyi创建服务器角色的操作失败了,并且系统给出了“用户没有此权限”的提示。
6.分别在图形化界面、命令行中,撤销用户权限。
当我们在图形界面时,我们首先需要双击需要进行更改的用户名,再选择安全对象。
将我们想要撤销的权限的对勾给去掉(如图所示),最后点击确定,便可以完成此操作。
当我们使用命令行时,我们可以执行如下的SQL脚本,来进行消除用户权限的操作。
如下图所示的代码执行后,将会将原来赋予用户majunyi可以查看任意数据库的权限改成拒绝。
7.分别在图形化界面、命令行中,删除数据库用户。
当我们在图形化界面中时,如图所示,我们右键想要删除的用户,选择删除,即可。
8.根据实际操作,指出服务器角色和数据库角色有多少种,分别有什么权限?
如上图所示,默认的数据库角色成员身份有9种,分别为db_accessadmin,db_backupoperator,db_datareader,db_datawriter,db_denydatareader,db_denydatawriter,db_owner,db_securityadmin下面我将详细的介绍一下这几个数据库角色成员身份。
db_accessadmin:
可以添加或删除用户ID
db_backupoperator:
可以发出DBCC、CHECKPOINT和BACKUP语句。
db_datareader:
可以选择数据库内任何用户表中的所有数据。
db_datawriter:
可以更改数据库内任何用户表中的所有数据。
db_denydatareader:
不能选择数据库内任何用户表中的任何数据。
db_denydatawriter:
不能更改数据库内任何用户表中的任何数据。
db_owner:
在数据库中有全部权限。
db_securityadmin:
可以管理全部权限、对象所有权、角色和角色成员资格。
如上图所示,默认的服务器角色有7个,分别为bulkadmin,dbcreator,diskadmin,processadmin,scurityadmin,serveradmin,setupadmin.下面我将详细的介绍他们。
Bulkadmin:
固定服务器角色的成员可以运行BULKINSERT语句
Dbcreator:
固定服务器角色的成员可以创建数据库,并更改还原自己的数据库。
Diskadmin:
固定服务器角色的成员用于管理磁盘文件。
Processadmin:
固定服务器角色的成员可以终止SQLServer实例中运行的进程。
Scurityadmin:
固定服务器角色的成员将管理登录名及其属性。
它们可以GRANT、DENY和REVOKE服务器级权限。
也可以GRANT、DENY和REVOKE数据库级权限。
另外,它们可以重置SQLServer登录名的密码。
Serveradmin:
固定服务器角色的成员可以更改服务器范围的配置选项和关闭服务器。
Setupadmin:
固定服务器角色的成员可以添加和删除链接服务器,并且也可以执行某些系统存储过程。
9.创建数据库时,还会自动创建SYS、GUEST和dbo组。
通过帮助文档,了解这些组在数据库中起到的作用。
数据库设备从逻辑上被划分为数据库段以允许将某一特定的对象放置在指定的段上(创建对象时指定),数据库设备可拥有多达192个段,一段可使用255个逻辑设备上的存储空间。
当用户创建一个数据库时,SQLSERVER会自动在该数据库中创建三个段:
SYSTEM、LOGSEGMENT、DEFAULT,这三个段分别用来存储数据库的系统表、事务日志和其他数据库对象。
10.以DBA身份登陆系统,创建用户组,为用户组授予(grant)或撤销(revoke)针对数据库中表、视图等不同数据对象的不同的访问权限。
首先,我们以windows用户登录并连接到数据库,并针对用户majunyi执行如下的SQL代码,即可将权限授予登录名majunyi,在这里我选择了所有的权限,即试图将用户majunyi赋予所用的数据库权限:
执行这一段SQL脚本后,我们使用图形界面查看用户majunyi的权限。
我们可以看到,权限已经被授予给他了:
再次进入图形界面,查看SQL脚本执行后的结果,我们又发现权限被去除了。
11.将组成员资格授予现有用户或组,现有用户或组访问数据库对象,查看访问结果。
撤销现有用户或组的组成员资格,查看访问结果。
12.分别在图形化界面、命令行中从数据库删除组。
当我们使用命令行进行删除用户的操作时,我们需要执行如下的SQL脚本,下面的脚本将会把用户名为test的用户给删掉:
13.分别采用windows认证方式和SQLServer认证方式用不同的用户进行登录连接。
如下图所示,我们分别用windows认证方式和SQLServer认证方式中的用户majunyi登录了我们的数据库。
所以,在对象资源管理器可以清楚的看到有2个链接,上面的一个链接便是我们用windows认证方式创建的登录链接。
而下面那个便是使用SQLServer认证方式登录的用户名majunyi。