还剩13页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
安全性实验内容与要求SQLServer数据库实验SQLServer提供了多种安全机制主要的有如下3条1.最小权限原则SQLServer通过给不同用户赋予不同权限的方式来保证安全本原则要求只给某用户完成工作所必须的权限,以尽量减小用户有意或无意的错误对数据库造成的损害2.CIA原则C机密性,未授权者或使用非法手段无法访问数据I完整性,未授权者或使用非法手段无法修改数据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域中,所以使用该方式进行登录比较方便实验内容以DBA身份(可以是SQLServer上的sa或者windows上的系统管理组的某个成员)登陆系统,在图形界面下创建新登录,新建登录用户可以使用Windows认证模式和SQLServer认证模式首先,右键安全性,再选择登录名,最后选择新建登录名,便可以弹出如下的窗口,我们填写要新建的登录名,以及选择登录方式(windows身份验证还是SQLServer身份验证)点击确定,便可以成功的新建登录使用T-SQL命令createloginlogin-name…和createloginlogin-namefromwindows重复第1步的内容我们执行了如下的T-SQL命令运行的结果如图所示,我们看到在安全性-登录名的目录下,已经有了名为majunyi的登录名,这表明我们之前进行的操作已经成功了在服务器角色选项卡中赋予新建用户角色完成后查找T-SQL中对应命令,在图形界面上撤消该权限后使用命令完成授予权限和收回权限的任务我们在服务器角色选项卡中选择了新建服务器角色,新建了一个名为majunyiX服务器角色,并将安全对象选为我们刚刚创建的登录名majunyi,并开启所有权限之后,我们打开在这个服务器角色,再将登录名majunyi的权限全部取消,如下图所示执行如下的SQL代码,即可将权限授予登录名majunyi执行后,我们看到,权限已经被授予了执行如下的SQL代码,即可将登录名majunyi的权限取消查看执行后的结果,我们又发现权限被去除了将新建用户映射到移动通信数据库某用户执行相关SQL操作,检查该用户的权限用户在权限范围内、超出权限范围访问相应数据对象,查看访问结果和DBMS的反映我们执行了如下的代码,来将新建登录名majunyi映射到我们存有移动通信数据的数据库DB_EXP中我们右键了数据库DB_EXP,选择属性,再查看权限可以看到我们刚刚映射进来的用户majunyi,以及他的权限(如图所示)为了进一步的验证权限的影响,我们将用户majunyi的权限设置为拒绝新建表接下来,我们用用户majunyi连接数据库,再执行一条新建表的语句,查看执行的效果,我们执行了如下的语句执行后的结果如图所示,果不其然,由于权限的限制,用户majunyid建表操作被拒绝了,没有执行成功对特定服务器对象设置权限,双击登陆名以后选择安全对象,赋予该登录名对服务器内的某个对象的权限执行相关SQL操作,检查该用户的权限用户在权限范围内、超出权限范围访问相应数据对象,查看访问结果和DBMS的反映如下图所示,我们双击了登录名majunyi,并选择了安全对象,在安全对象JUNYIMA-PC中,我们拒绝了他创建服务器角色的权限之后,我们便执行下面的SQL语句,尝试去创建一个服务器角色,看看会有什么样的反映执行后的结果如下图所示,可见,由于权限的限制,用户majunyi创建服务器角色的操作失败了,并且系统给出了“用户没有此权限”的提示分别在图形化界面、命令行中,撤销用户权限当我们在图形界面时,我们首先需要双击需要进行更改的用户名,再选择安全对象将我们想要撤销的权限的对勾给去掉(如图所示),最后点击确定,便可以完成此操作当我们使用命令行时,我们可以执行如下的SQL脚本,来进行消除用户权限的操作如下图所示的代码执行后,将会将原来赋予用户majunyi可以查看任意数据库的权限改成拒绝分别在图形化界面、命令行中,删除数据库用户当我们在图形化界面中时,如图所示,我们右键想要删除的用户,选择删除,即可根据实际操作,指出服务器角色和数据库角色有多少种,分别有什么权限?如上图所示,默认的数据库角色成员身份有9种,分别为db_accessadmindb_backupoperatordb_datareaderdb_datawriterdb_denydatareaderdb_denydatawriterdb_ownerdb_securityadmin下面我将详细的介绍一下这几个数据库角色成员身份db_accessadmin:可以添加或删除用户IDdb_backupoperator:可以发出DBCC、CHECKPOINT和BACKUP语句db_datareader:可以选择数据库内任何用户表中的所有数据db_datawriter:可以更改数据库内任何用户表中的所有数据db_denydatareader:不能选择数据库内任何用户表中的任何数据db_denydatawriter:不能更改数据库内任何用户表中的任何数据db_owner:在数据库中有全部权限db_securityadmin:可以管理全部权限、对象所有权、角色和角色成员资格如上图所示,默认的服务器角色有7个,分别为bulkadmindbcreatordiskadminprocessadminscurityadminserveradminsetupadmin.下面我将详细的介绍他们Bulkadmin固定服务器角色的成员可以运行BULKINSERT语句Dbcreator固定服务器角色的成员可以创建数据库,并更改还原自己的数据库Diskadmin固定服务器角色的成员用于管理磁盘文件Processadmin固定服务器角色的成员可以终止SQLServer实例中运行的进程Scurityadmin固定服务器角色的成员将管理登录名及其属性它们可以GRANT、DENY和REVOKE服务器级权限也可以GRANT、DENY和REVOKE数据库级权限另外,它们可以重置SQLServer登录名的密码Serveradmin固定服务器角色的成员可以更改服务器范围的配置选项和关闭服务器Setupadmin固定服务器角色的成员可以添加和删除链接服务器,并且也可以执行某些系统存储过程创建数据库时,还会自动创建SYS、GUEST和dbo组通过帮助文档,了解这些组在数据库中起到的作用数据库设备从逻辑上被划分为数据库段以允许将某一特定的对象放置在指定的段上(创建对象时指定),数据库设备可拥有多达192个段,一段可使用255个逻辑设备上的存储空间当用户创建一个数据库时,SQLSERVER会自动在该数据库中创建三个段SYSTEM、LOGSEGMENT、DEFAULT,这三个段分别用来存储数据库的系统表、事务日志和其他数据库对象以DBA身份登陆系统,创建用户组,为用户组授予(grant)或撤销(revoke)针对数据库中表、视图等不同数据对象的不同的访问权限首先,我们以windows用户登录并连接到数据库,并针对用户majunyi执行如下的SQL代码,即可将权限授予登录名majunyi,在这里我选择了所有的权限,即试图将用户majunyi赋予所用的数据库权限执行这一段SQL脚本后,我们使用图形界面查看用户majunyi的权限我们可以看到,权限已经被授予给他了执行如下的SQL代码,即可将登录名majunyi的权限取消再次进入图形界面,查看SQL脚本执行后的结果,我们又发现权限被去除了将组成员资格授予现有用户或组,现有用户或组访问数据库对象,查看访问结果撤销现有用户或组的组成员资格,查看访问结果我们右键了数据库DB_EXP,选择属性,再查看权限可以看到我们刚刚映射进来的用户majunyi,以及他的权限(如图所示)为了进一步的验证权限的影响,我们将用户majunyi的权限设置为拒绝新建表接下来,我们用用户majunyi连接数据库,再执行一条新建表的语句,查看执行的效果,我们执行了如下的语句执行后的结果如图所示,果不其然,由于权限的限制,用户majunyid建表操作被拒绝了,没有执行成功分别在图形化界面、命令行中从数据库删除组当我们在图形化界面中时,如图所示,我们右键想要删除的用户,选择删除,即可当我们使用命令行进行删除用户的操作时,我们需要执行如下的SQL脚本,下面的脚本将会把用户名为test的用户给删掉分别采用windows认证方式和SQLServer认证方式用不同的用户进行登录连接如下图所示,我们分别用windows认证方式和SQLServer认证方式中的用户majunyi登录了我们的数据库所以,在对象资源管理器可以清楚的看到有2个链接,上面的一个链接便是我们用windows认证方式创建的登录链接而下面那个便是使用SQLServer认证方式登录的用户名majunyi。