预备知识
本实验要求实验者具备如下的相关知识。
1、数据库安全的概念
对任何企业组织来说,数据的安全性最为重要。安全性主要是指允许那些具有相应的数据访问权限的用户能够登录到数据库,并访问数据以及对数据库对象实施各种权限范围内的操作,但是要拒绝所有的非授权用户的非法操作。因此安全性管理与用户管理是密不可分的。
2、SQL Server的安全性
SQL Server 2000 的安全性管理是建立在认证(authentication)和访问许可(permission)两者机制上的。认证是用来确定登录SQL Server 的用户的登录账号和密码是否正确,以此来验证其是否具有连接SQL Server 的权限。但是通过认证阶段并不代表该用户能够访问SQL Server 中的数据,用户只有在获取访问数据库的权限之后,才能够对服务器上的数据库进行权限许可下的各种操作(主要是针对数据库对象,如表、视图、存储过程等),这种用户访问数据库权限的设置是通过用户账号来实现的,同时在SQL Server 中,角色作为用户组的代替物大大地简化了安全性管理。
3、SQL Server的认证模式
SQL Server提供了2种安全管理模式,即Windows 身份验证模式和混合身份验证模式,数据库设计者和数据库管理员可以根据实际情况进行选择。每个用户必须通过登录帐户建立自己的身份验证,以获得对SQL Server 实例的访问权限。
SQL Server 2000提供了两种确认用户的登录认证模式:Windows认证模式和混合认证模式。
(1)Windows认证模式
SQL Server数据库系统通常运行在NT服务器平台或基于NT 构架的Windows 2000上,而NT作为网络操作系统,本身就具备管理登录、验证用户合法性的能力,所以Windows认证模式正是利用这一用户安全性和账号管理的机制,允许SQL Server也可以使用NT的用户名和口令。在该模式下,用户只要通过Windows的认证就可连接到SQL Server,而SQL Server本身也不需要管理一套登录数据。
(2)混合认证模式
在混合认证模式下,Windows认证和SQL Server 认证这两种认证模式都是可用的。NT的用户既可以使用NT认证,也可以使用SQL Server 认证。
在SQL Server认证模式下,用户在连接SQL Server时必须提供登录名和登录密码,这些登录信息存储在系统表syslogins中,与NT的登录账号无关。SQL Server自己执行认证处理,如果输入的登录信息与系统表syslogins 中的某条记录相匹配则表明登录成功。
4、SQL Server权限管理
SQL Server数据库管理系统利用角色设置、管理用户的权限。登录名本身并不能让用户访问服务器中的数据库资源。要访问具体数据库中的资源,还必须有该数据库的用户名。新的登录创建以后,才能创建数据库用户,数据库用户在特定的数据库内创建,必须和某个登录名相关联。数据库用户创建后,通过授予用户权限来指定用户访问特定对象的权限。通过角色,可以将用户集中到一个单元中,然后对这个单元应用权限。对角色授予或收回权限时,将对其中的所有成员生效。利用角色进行权限设置可以实现对所有用户权限的设置,大大减少了管理员的工作量。
实验目的
了解数据库安全的含义与内容,掌握有关安全的设置方法,具体如下:
1、掌握管理SQL Server认证模式的方法;
2、掌握管理数据库登录的方法;
3、掌握管理数据库用户的方法
4、掌握管理数据库角色的方法
5、掌握管理数据库权限的方法
实验步骤一
本实验通过练习以掌握管理数据库登录的方法;掌握管理数据库用户的方法;掌握管理数据库角色的方法;掌握管理数据库权限的方法,实验任务共分为五部分,详情如下:
管理SQL Server认证模式
(1)确认 SQL Server 验证
①在桌面上单击“开始”,选择“程序”→“Microsoft SQL Server 2005” →“SQL Server Management Studio”,出现“连接到服务器”对话框。
②在“连接到服务器”对话框中,按表中的指定值进行设置,然后单击“连接”按钮,如下图。
③如果“对象资源管理器”不可见,则选择“视图”菜单上的“对象资源管理器”。
④在“对象资源管理器”中,右击服务器,然后单击“属性”。
⑤单击“安全性”。
⑥在“服务器身份验证”选项区中,可以选择身份验证模式,“Windows 身份验证模式”或“SQL Server 和Windows 身份验证模式”,本次实验选择“SQL Server 和Windows 身份验证模式”。
⑦选择身份验证模式后,单击“确定”按钮以执行该更改。有如下提示:
⑧在“对象资源管理器”中,右击服务器,然后单击“重新启动”。
当提示确认时,请单击“是”。
如果通知“SQL Server 代理”服务也将停止时,请单击“是”。
⑨在“摘要”面板中,右击“SQL Server 代理”,然后单击“启动”。
当提示是否确实要启动SQLSERVERAGENT服务时,点击是。
实验步骤二
管理数据库登录
SQL Server有两个默认的用户登录账号:即sa和administrators\builtin。sa是系统管理员,它是SQL Server的一个超级登录账号,这个账号具有操作SQL Server服务器的一切权限。BUILTIN\Administrators组成员的 Windows NT 4.0 或 Windows 2000 用户自动成为 sysadmin 固有服务器角色成员。
(1)使用企业管理器管理Windows身份验证的登录帐号。
① 回到桌面,右击我的电脑,点击管理。
然后一次展开系统工具-本地用户和组-用户,此时在右边可以看到当前系统中所有的用户。
在右侧空白处右击,点击新用户。
添加一个用户WinUser,并给该用户设置一个密码,本实验使用的密码是admin,密码可随意设置,但是需要记住,在后面需要用到,把用户下次登录时须更改密码前面的勾选去掉,把密码永不过期的选项选上,然后点击创建,设置如图:
创建完后点击关闭。
此时在用户列表中可以看到该用户已经添加成功。
然后右击该用户,选择属性。
弹出如下对话框:
点击隶属于选项卡。
然后点击左下角的添加按钮。弹出选择组对话框。
点击左下角的高级,弹出如下对话框:
点击立即查找,在搜索结果中选择 administrators。
然后点击确定按钮,会自动返回上一回话窗口。
同样点击确定。此时,在winuser属性的隶属于选项卡下可以看到,多了一个administrators。
然后点击右下角的应用,最后点击确定。
②在SQL Server Management Studio中,右击数据库,选择新建数据库
在数据库名称内输入student新建一个student数据库,然后点击确定 。
展开实例下的“安全性”,右击“登录名”按钮,在弹出的快捷菜单中选择“新建登录”。
打开SQL Server登录属性对话框。在“常规”选项卡中,单击“名称”输入框右侧的按钮。
弹出选择用户或组对话框
点击高级,弹出新的对话框
点击右侧的立即查找,在搜索结果中,找到winuser并选择该用户,然后点击确定。
会自动返回上一个对话框,然后点击确定。
验证方式选择 “Windows 身份验证”。
默认数据库选择student,完成登陆账号winuser的创建。
③选择“服务器角色”选项卡。可以在服务器角色列表框中选择相应的服务器角色成员。在这里,设置登录用户winuser的服务器角色为系统管理员。
④选择“用户映射”选项卡,在列表框中列出了该账号可以访问的数据库,如果单击数据库左边的复选框,表示该用户可以访问相应的数据库。在这里,选中数据库master和student左边的复选框,表示登陆用户winuser可以访问的数据库为master和student。在下方的数据库角色成员身份都选择public。然后点击确定。
在对象资源管理器中,展开安全性-登录名,可以看到winuser已存在。
同时,展开数据库-系统数据库-student-安全性-用户,在用户列表中可以看到数据库student中已经建立一个数据库用户winuser。
验证用WinUser账号登录SQL Server:首先在操作系统中注销当前用户的登陆,将用户切换到WinUser,再用此账号连接SQL Server查询分析器,用Windows身份验证登录,可以进入查询分析器,使用数据库master和student。
由于远程桌面注销会又会自动连接,所以我们需要先修改当前用户(administrator)的登录密码。
来到桌面,右击我的电脑,点击管理,在计算机管理窗口,依次展开 系统工具-本地用户和组-用户(不会的可参考之前新建winuser时的步骤),在右侧右击administrator,选择设置密码。
会弹出如下对话框,点击继续。
然后设置一个密码(我设置的密码是admin),可以随意设置,但是需要记住密码,后面还需要登陆该用户。
点击确定,会提示密码已设置
然后点击左下角的开始,选择注销
弹出确认窗口,点击注销。
然后会自动到登陆页面,输入之前新建的winuser和密码,点击确定登录。
登录后,点击左下角的开始-所有程序-Microsoft SQL Server 2005-SQL Server Management Studio 进入SQL Server Management Studio。
身份验证选择 Windows 身份验证。
点击连接后,登陆成功,此时可以新建查询,使用数据库master和student。
(2)使用SQL Server Management Studio管理SQL Server身份验证的登录帐号。
注销winuser,切换到administrator用户(不会的可参考之前从administrator切换到winuser的步骤)。
①在 SQL Server Management Studio中,展开实例下的“安全性”,右击“登录名”按钮,在弹出的快捷菜单中选择“新建登录”(参考前面新建登录步骤),
②在登录名输入框内输入需要新建的用户名,这里新建的用户名是SQLUser。验证方式选择SQL Server身份验证,然后在密码框输入SQLUser的密码。这里设置成test。把强制实施密码策略的复选框去勾选去掉,默认数据库选择master,然后点击确认。
注意:采用该方法创建的SQL Server登录账号只能用于登录SQL Server服务,与登录的计算机的Windows账号无关,不能用此账号登录Windows。
③单击“用户映射”,在“映射到此用登录名的用户”中,将所有数据库都选中,下方的数据库角色成员身份全部选择public,然后单击确定完成账号的创建。
④关闭SQL Server Management Studio重新打开,在登录页面处身份验证选择SQL Server身份验证。然后输入刚才新建的账号和密码,然后点击连接。
登录成功,此时可以新建查询来查询数据。
实验步骤三
管理数据库用户
数据库用户对数据的访问权限以及对数据库对象的所有关系都是通过用户账号来控制的。在数据库中,用户账号与登录账号是两个不同的概念。一个合法的登录账号只表明该账号通过了Windows认证或SQL Server 认证,但不能表明其可以对数据库数据和数据对象进行某种或某些操作,只有其同时拥有了用户账号后,才能够访问数据库。所以一个登录账号总是与一个或多个数据库用户账号(这些账号必须分别存在相异的数据库中)相对应,这样才可以访问数据库。
(1)创建数据库用户
打开SQL Server Management Studio,展开服务器-数据库,选择要创建用户的数据库,如student,展开student,用鼠标右键单击“安全性”节点,从弹出的菜单中选择“新建-用户”命令。
弹出“新建用户”对话框,在用户名输入框输入要新建的数据库用户名称,如dbuser
在“登录名”处点击后面的按钮
弹出选择登录名对话框,在该对话框选择浏览
弹出查找对象对话框,在里面选择一个用户,选择administrators。
然后点击确定,自动返回到选择登录名对话框
点击确定,在此用户拥有的架构勾选db_owner,数据库角色成员身份同样选择db_owner,单击“确定”按钮,即可完成数据库用户的创建。
(2)修改用户信息
用鼠标右键单击要修改的用户,在系统弹出菜单上单击“属性”
可打开“数据库用户”对话框查看该用户的信息,同时需要时能直接修改相应用户的设置信息。
(3)删除数据库用户。
在企业管理器中,用鼠标右键单击要删除的数据库用户,如数据库student中的数据库用户dbuser,从快捷菜单中选择“删除”命令即可。
实验步骤四
管理数据库角色
SQL Server有自己的固有角色。固有角色是指 SQL Server预先定义好的系统角色。用户不能修改这些角色的任何属性,也不能创建新的服务器固有角色和数据库固有角色。
数据库角色是在数据库的安全级别上创建,一个数据库角色只在其所在的数据库中有效,对其他数据库无效。在数据库中,除了有固有的数据库角色外,还可以自定义数据库角色,同时根据需要,可以为数据库角色添加成员或删除自定义角色。
1.创建数据库角色
打开SQL Server Management Studio,展开服务器-数据库,选择要创建用户的数据库,如student,展开student,用鼠标右键单击“安全性”节点,从弹出的菜单中选择“新建-数据库角色”命令。
弹出“新建角色”对话框,在角色名称输入框中输入数据库新角色的名称,如NewRole,点击所有者后面的按钮
在里面选择一个用户,例如选择winuser(如果不会,参考前面的步骤)
在此角色拥有的架构中选择db_owner,然后点击确定,完成角色创建。
可以在安全性-角色-数据库角色中看到,刚才添加的角色已经成功。
(2)删除自定义的数据库角色
在SQL Server Management Studio中,用鼠标右键单击要删除的自定义角色,如NewRole,从弹出的菜单中选择“删除”命令即可删除自定义角色。
注意:不能删除一个有成员的角色,在删除角色之前,应先删除其成员。
实验步骤五
管理数据库权限
权限用来指定授权用户可以使用的数据库对象和这些授权用户可以对这些数据库对象执行的操作。用户在登录到SQL Server之后,其用户账号所归属的NT组或角色所被赋予的权限决定了该用户能够对哪些数据库对象执行哪种操作以及能够访问、修改哪些数据。在SQL Server中包括语句级权限和对象级权限。
(1)进行语句级权限管理:
启动SQL Server Management Studio,展开实例数据库,右击student数据库,在弹出的快捷菜单中选择“属性”,然后选择“权限”选项卡。在用户WinUser一栏中,将“创建表”和“创建视图”选中.
在SQLUser一栏中,则选择除“创建表”和“创建视图”以外的选项
图中权限设置的方法是:
许可权限中复选框单击为勾号时:表示授予该权限。
许可权限中复选框单击为叉号时:表示角色或用户不具有该操作权限。
许可权限中复选框既没勾号,也没叉号时:表示角色或用户是否具有该操作权限要根据隐含规则来决定。
这样的结果是,授予用户WinUser可以在数据库student中创建视图和表。授予用户SQLUser可以在数据库student中进行除创建视图和表以外的所有操作。
答案
分析与思考
1、 SQL Server的Windows认证模式和混合认证模式的区别?
主要集中在信任连接和非信任连接。
windows 身份验证相对于混合模式更加安全,使用本连接模式时候,sql不判断sa密码,而仅根据用户的windows权限来进行身份验证,我们称为“信任连接”,但是在远程连接的时候会因NTML验证的缘故,无法登陆。
混合模式验证就比较既当本地用户访问sql时候采用windows身份验证建立信任连接,当远程用户访问时由于未通过windows认证,而进行sql server认证(使用sa的用户也可以登录sql),建立“非信任连接”,从而使得远程用户也可以登录。
更加直接一些就是windows身份验证,不验证sa密码,如果windows登录密码不正确,无法访问sql,混合模式既可以使用windows身份验证登录,有可以在远程使用sa密码登录。
准确来说,混合身份验证模式,也就是基于Windows
身份验证和SQL Server身份混合验证。在这个模式中,系统会判断账号在Windows操作系统
下是否可信,对于可信连接,系统直接采用Windows身份验证机制,而非可信连接,这个连接
不仅包括远程用户还包括本地用户,SQL Server 会自动通过账户的存在性和密码的匹配
性来进行验证。比如当SQL Server实例在Windows 98上运行时,必须使用混合模式,因为在
Windows 98上不支持Windows身份验证模式
2、 分析数据库各种角色权限的异同,自定义数据库,并进行权限管理,深入理解实验原理。
服务器登录名,指有权限登录到某服务器的用户;
登录名一定属于某些角色,默认为public
服务器角色,指一组固定的服务器用户
服务器角色不容许更改
登录后也不一定有权限操作数据库
数据库用户,指有权限能操作数据库的用户
数据库用户对应于服务器登录名以便登录者可以操作数据库
数据库角色,指一组固定的有某些权限的数据库角色
数据库角色可以添加,可以定制不同权限
服务器登录名需要于数据库的用户映射后才拥有操作数据库的权限
数据库用户属于某组数据库角色以获取操作数据库的权限
3、 查阅近期数据库安全事件,分析攻击原理,掌握数据库安全的重要性
近日知名视频网站B站发生了一起涉及网民人数超拜仁的数据库泄露事件,据了解这是一次黑客恶意入侵造成的恶性事件。B站的数据库发生了脱库。主要原因就是因为数据库安全管理行为没有根据时间进行更新维护。
Oracle 的广告技术部门,因服务器处于不安全且未设置密码的状态,导致数据库中全球数十亿人的记录被泄露。
Oracle 于 2014 年以超过 4 亿美元的价格收购了初创企业 BlueKai ,并将其产品添加到 Oracle 的数据云(ODC)和营销云(OMC)中。BlueKai 通过 cookie 和其他跟踪技术监视网络上的用户,并为第三方提供数据收集服务,同时维护着一个大型数据库。因为背后有 Oracle 的支撑,BlueKai 的发展相当迅速。据 Whotracks 网站估计,BlueKai 跟踪了所有 Web 流量的 1%以上。
但在相当长的一段时期内,保存这些数据的服务器压根没有设置密码,导致网络跟踪数据被全面泄露在公开互联网上。
其中的数十亿条记录,随时可供任何人翻阅查看。