MYSQL数据库安全实验

1)预备知识

本实验要求实验者具备如下的相关知识。

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数据库管理系统利用角色设置、管理用户的权限。登录名本身并不能让用户访问服务器中的数据库资源。要访问具体数据库中的资源,还必须有该数据库的用户名。新的登录创建以后,才能创建数据库用户,数据库用户在特定的数据库内创建,必须和某个登录名相关联。数据库用户创建后,通过授予用户权限来指定用户访问特定对象的权限。通过角色,可以将用户集中到一个单元中,然后对这个单元应用权限。对角色授予或收回权限时,将对其中的所有成员生效。利用角色进行权限设置可以实现对所有用户权限的设置,大大减少了管理员的工作量。

 
2)实验步骤一

    本实验通过练习以掌握管理数据库登录的方法;掌握管理数据库用户的方法;掌握管理数据库角色的方法;掌握管理数据库权限的方法,实验任务共分为五部分,详情如下:

    管理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服务时,点击是。

    

 

 

 

 

 
3)实验步骤二

    管理数据库登录

    SQL Server有两个默认的用户登录账号:即sa和administrators\builtin。sa是系统管理员,它是SQL Server的一个超级登录账号,这个账号具有操作SQL Server服务器的一切权限。BUILTIN\Administrators组成员的 Windows NT 4.0 或 Windows 2000 用户自动成为 sysadmin 固有服务器角色成员。

    (1)使用企业管理器管理Windows身份验证的登录帐号。

    ① 回到桌面,右击我的电脑,点击管理。

    

 

 

 

 

    然后一次展开系统工具-本地用户和组-用户,此时在右边可以看到当前系统中所有的用户。

    

 

 

 

 

    在右侧空白处右击,点击新用户。

    

 

 

 

 

    添加一个用户firestar,并给该用户设置一个密码,本实验使用的密码是admin,密码可随意设置,但是需要记住,在后面需要用到,把用户下次登录时须更改密码前面的勾选去掉,把密码永不过期的选项选上,然后点击创建,设置如图:

    

 

 

 

 

    创建完后点击关闭。

    

 

 

 

 

    此时在用户列表中可以看到该用户已经添加成功。

    

 

 

 

 

    然后右击该用户,选择属性。

    

 

 

 

 

    弹出如下对话框:

    

 

 

 

 

    点击隶属于选项卡。

    

 

 

 

 

    然后点击左下角的添加按钮。弹出选择组对话框。

    

 

 

 

 

    点击左下角的高级,弹出如下对话框:

    

 

 

 

 

    点击立即查找,在搜索结果中选择 administrators。

    

 

 

 

 

    然后点击确定按钮,会自动返回上一回话窗口。

    

 

 

 

 

    同样点击确定。此时,在firestar属性的隶属于选项卡下可以看到,多了一个administrators。

    

 

 

    然后点击右下角的应用,最后点击确定。

    ②在SQL Server Management Studio中,右击数据库,选择新建数据库

    

 

 

 

 

    在数据库名称内输入student新建一个student数据库,然后点击确定 。

    

 

 

 

 

    展开实例下的“安全性”,右击“登录名”按钮,在弹出的快捷菜单中选择“新建登录”。

    

 

 

 

 

    打开SQL Server登录属性对话框。在“常规”选项卡中,单击“名称”输入框右侧的按钮。

    

 

 

 

 

    弹出选择用户或组对话框

    

 

 

 

 

    点击高级,弹出新的对话框

    

 

 

 

 

    点击右侧的立即查找,在搜索结果中,找到firestar并选择该用户,然后点击确定。

    

 

 

 

 

    会自动返回上一个对话框,然后点击确定。

    

 

 

 

 

    验证方式选择 “Windows 身份验证”。

    

 

 

 

 

    默认数据库选择student,完成登陆账号firestar的创建。

    

 

 

 

 

    ③选择“服务器角色”选项卡。可以在服务器角色列表框中选择相应的服务器角色成员。在这里,设置登录用户firestar的服务器角色为系统管理员。

    

 

 

 

 

    ④选择“用户映射”选项卡,在列表框中列出了该账号可以访问的数据库,如果单击数据库左边的复选框,表示该用户可以访问相应的数据库。在这里,选中数据库master和student左边的复选框,表示登陆用户firestar可以访问的数据库为master和student。在下方的数据库角色成员身份都选择public。然后点击确定。

    

 

 

 

 

    在对象资源管理器中,展开安全性-登录名,可以看到firestar已存在。

    

 

 

 

 

    同时,展开数据库-系统数据库-student-安全性-用户,在用户列表中可以看到数据库student中已经建立一个数据库用户firestar。

    

 

 

 

 

    验证用WinUser账号登录SQL Server:首先在操作系统中注销当前用户的登陆,将用户切换到WinUser,再用此账号连接SQL Server查询分析器,用Windows身份验证登录,可以进入查询分析器,使用数据库master和student。

    由于远程桌面注销会又会自动连接,所以我们需要先修改当前用户(administrator)的登录密码。

    来到桌面,右击我的电脑,点击管理,在计算机管理窗口,依次展开 系统工具-本地用户和组-用户(可参考之前新建firestar时的步骤),在右侧右击administrator,选择设置密码。

    

 

 

 

 

    会弹出如下对话框,点击继续。

    

 

 

 

 

    然后设置一个密码(我设置的密码是admin),可以随意设置,但是需要记住密码,后面还需要登陆该用户。

    

 

 

 

 

    点击确定,会提示密码已设置

    

 

 

 

 

    然后点击左下角的开始,选择注销

    

 

 

 

 

    弹出确认窗口,点击注销。

    

 

 

 

 

    然后会自动到登陆页面,输入之前新建的firestar和密码,点击确定登录。

    

 

 

 

 

    登录后,点击左下角的开始-所有程序-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身份验证。然后输入刚才新建的账号和密码,然后点击连接。

    

 

 

 

 

    登录成功,此时可以新建查询来查询数据。

 

4)实验步骤三

    管理数据库用户

    数据库用户对数据的访问权限以及对数据库对象的所有关系都是通过用户账号来控制的。在数据库中,用户账号与登录账号是两个不同的概念。一个合法的登录账号只表明该账号通过了Windows认证或SQL Server 认证,但不能表明其可以对数据库数据和数据对象进行某种或某些操作,只有其同时拥有了用户账号后,才能够访问数据库。所以一个登录账号总是与一个或多个数据库用户账号(这些账号必须分别存在相异的数据库中)相对应,这样才可以访问数据库。

    (1)创建数据库用户

    打开SQL Server Management Studio,展开服务器-数据库,选择要创建用户的数据库,如student,展开student,用鼠标右键单击“安全性”节点,从弹出的菜单中选择“新建-用户”命令。

    

 

 

 

 

    弹出“新建用户”对话框,在用户名输入框输入要新建的数据库用户名称,如dbuser

    

 

 

 

 

    在“登录名”处点击后面的按钮

    

 

 

 

 

    弹出选择登录名对话框,在该对话框选择浏览

    

 

 

    弹出查找对象对话框,在里面选择一个用户,选择administrators。

    

 

 

 

 

 

 

    然后点击确定,自动返回到选择登录名对话框

    

 

 

 

 

 

 

 

 

    点击确定,在此用户拥有的架构勾选db_owner,数据库角色成员身份同样选择db_owner,单击“确定”按钮,即可完成数据库用户的创建。

    

 

 

 

 

 

    (2)修改用户信息

    用鼠标右键单击要修改的用户,在系统弹出菜单上单击“属性”

    

 

 

 

 

    可打开“数据库用户”对话框查看该用户的信息,同时需要时能直接修改相应用户的设置信息。

    

 

 

 

 

    (3)删除数据库用户。

    在企业管理器中,用鼠标右键单击要删除的数据库用户,如数据库student中的数据库用户dbuser,从快捷菜单中选择“删除”命令即可。

    

 

 

 

 

 
5)实验步骤四

    管理数据库角色

    SQL Server有自己的固有角色。固有角色是指 SQL Server预先定义好的系统角色。用户不能修改这些角色的任何属性,也不能创建新的服务器固有角色和数据库固有角色。

    数据库角色是在数据库的安全级别上创建,一个数据库角色只在其所在的数据库中有效,对其他数据库无效。在数据库中,除了有固有的数据库角色外,还可以自定义数据库角色,同时根据需要,可以为数据库角色添加成员或删除自定义角色。

    1.创建数据库角色

    打开SQL Server Management Studio,展开服务器-数据库,选择要创建用户的数据库,如student,展开student,用鼠标右键单击“安全性”节点,从弹出的菜单中选择“新建-数据库角色”命令。

    

 

 

 

 

    弹出“新建角色”对话框,在角色名称输入框中输入数据库新角色的名称,如NewRole,点击所有者后面的按钮

    

 

 

 

 

    在里面选择一个用户,例如选择winuser(如果不会,参考前面的步骤)

    

 

 

 

 

 

 

 

 

    在此角色拥有的架构中选择db_owner,然后点击确定,完成角色创建。

    

 

 

 

 

    可以在安全性-角色-数据库角色中看到,刚才添加的角色已经成功。

    

 

 

 

 

    (2)删除自定义的数据库角色

    在SQL Server Management Studio中,用鼠标右键单击要删除的自定义角色,如NewRole,从弹出的菜单中选择“删除”命令即可删除自定义角色。

    

 

 

 

 

    注意:不能删除一个有成员的角色,在删除角色之前,应先删除其成员。

 
6)实验步骤五

    管理数据库权限

    权限用来指定授权用户可以使用的数据库对象和这些授权用户可以对这些数据库对象执行的操作。用户在登录到SQL Server之后,其用户账号所归属的NT组或角色所被赋予的权限决定了该用户能够对哪些数据库对象执行哪种操作以及能够访问、修改哪些数据。在SQL Server中包括语句级权限和对象级权限。

    (1)进行语句级权限管理:

    启动SQL Server Management Studio,展开实例数据库,右击student数据库,在弹出的快捷菜单中选择“属性”,然后选择“权限”选项卡。在用户WinUser一栏中,将“创建表”和“创建视图”选中.

    

 

 

 

 

    在SQLUser一栏中,则选择除“创建表”和“创建视图”以外的选项

    

 

 

 

 

    图中权限设置的方法是:

    许可权限中复选框单击为勾号时:表示授予该权限。

    许可权限中复选框单击为叉号时:表示角色或用户不具有该操作权限。

    许可权限中复选框既没勾号,也没叉号时:表示角色或用户是否具有该操作权限要根据隐含规则来决定。

    这样的结果是,授予用户WinUser可以在数据库student中创建视图和表。授予用户SQLUser可以在数据库student中进行除创建视图和表以外的所有操作。

 

7)分析与思考

 

1、 SQL Server的Windows认证模式和混合认证模式的区别?

通过 Windows 身份验证进行连接
当用户通过 Windows 用户帐户连接时,SQL Server 使用操作系统中的 Windows 主体标记验证帐户名和密码。 也就是说,用户身份由 Windows 进行确认。 SQL Server 不要求提供密码,也不执行身份验证。 Windows 身份验证是默认身份验证模式,并且比 SQL Server 身份验证更为安全。 Windows 身份验证使用 Kerberos 安全协议,提供有关强密码复杂性验证的密码策略强制,还提供帐户锁定支持,并且支持密码过期。 通过 Windows 身份验证完成的连接有时也称为可信连接,这是因为 SQL Server 信任由 Windows 提供的凭据。

通过 SQL Server 身份验证进行连接
当使用 SQL Server 身份验证时,在 SQL Server 中创建的登录名并不基于 Windows 用户帐户。 用户名和密码均通过使用 SQL Server 创建并存储在 SQL Server 中。 通过 SQL Server 身份验证进行连接的用户每次连接时必须提供其凭据(登录名和密码)。 当使用 SQL Server 身份验证时,必须为所有 SQL Server 帐户设置强密码。

 

2、 分析数据库各种角色权限的异同,自定义数据库,并进行权限管理,深入理解实验原理。

 

角色

当几个用户需要在某个特定的数据库中执行类似的动作时(这里没有相应的Windows用户组),就可以向该数据库中添加一个角色(role)。数据库角色指定了可以访问相同数据库对象的一组数据库用户。
数据库角色的成员可以分为如下几类:


Windows用户组或用户账户
SQL Server登录
其他角色

SQL Server的安全体系结构中包括了几个含有特定隐含权限的角色。除了数据库拥有者创建的角色之外,还有两类预定义的角色。这些可以创建的角色可以分为如下几类:

固定服务器
固定数据库
用户自定义

 

固定服务器

 


由于固定服务器是在服务器层次上定义的,因此它们位于从属于数据库服务器的数据库外面。下表列出了所有现有的固定服务器角色。

 

固定服务器角色

说    明

sysadmin

执行SQL Server中的任何动作

serveradmin

配置服务器设置

setupadmin

安装复制和管理扩展过程

securityadmin

管理登录和CREATE DATABASE的权限以及阅读审计

processadmin

管理SQL Server进程

dbcreator

创建和修改数据库

diskadmin

管理磁盘文件

 


下面两个系统过程用来添加或删除固定服务器角色成员:

sp_addsrvrolemember
sp_dropsrvrolemember

注意:不能添加、修改或删除固定服务器角色。另外,只有固定服务器角色的成员才能执行上述两个系统过程来从角色中添加或删除登录账户。

 

sa登录

 


sa登录是系统管理员的登录。在以前的SQL Server版本中不存在角色,sa登录具有所有可能的关于系统管理工作的权限。在SQL Server 2005中,sa登录保持了向后兼容性。sa登录永远是固定服务器角色syadmin中的成员,并且不能从该角色中删除。

注意:只有当没有其他方法登录到SQL Server系统中时,再使用sa登录。

 

固定服务器角色及其权限

 


在某个SQL Server系统中,每个固定服务器角色都有其隐含的权限。使用系统过程sp_srvrolepermission可以浏览每个固定服务器角色的权限。该系统过程的语法形式为:
sp_srvrolepermission[[@srvrolename =] 'role']
如果没有指定role的值,那么所有的固定服务器角色的权限都将显示出来。下面的部分将讨论每个固定服务器角色的权限。

 

1. sysadmin

 


固定服务器角色sysadmin的成员被赋予了SQL Server系统中所有可能的权限。例如,只有这个角色中的成员(或一个被这个角色中的成员赋予了CREATE DATABASE权限的用户)才能够创建数据库。
固定服务器角色和sa登录之间有着特殊的关系。sa登录一直都是固定服务器角色中的成员,并且不能从该角色中删除。

 

2. serveradmin

固定服务器角色serveradmin的成员可以执行如下的动作:


向该服务器角色中添加其他登录
运行dbcc pintable命令(从而使表常驻于主内存中)
运行系统过程sp_configure(以显示或更改系统选项)
运行reconfigure选项(以更新系统过程sp_configure所做的所有改动)
使用shutdown命令关掉数据库服务器
运行系统过程sp_tableoption为用户自定义表设置选项的值

 

3. setupadmin

固定服务器角色setupadmin中的成员可以执行如下的动作:
向该服务器角色中添加其他登录
添加、删除或配置链接的服务器
执行一些系统过程,如sp_serveroption

 

4. securityadmin

 


固定服务器角色securitypadmin中的成员可以执行关于服务器访问和安全的所有动作。这些成员可以进行如下的系统动作:
向该服务器角色中添加其他登录
读取SQL Server的错误日志
运行如下的系统过程:如sp_addlinkedsrvlogin、sp_addlogin、sp_defaultdb、sp_defaultlanguage、sp_denylogin、sp_droplinkedsrvlogin、sp_droplogin、sp_grantlogin、sp_helplogins、sp_remoteoption和sp_revokelogin(所有这些系统过程都与系统安全相关。)

 

5. processadmin

固定服务器角色processadmin中的成员用来管理SQL Server进程,如中止用户正在运行的查询。这些成员可以进行如下的动作:
向该服务器角色中添加其他登录
执行KILL命令(以取消用户进程)

 

6. dbcreator

固定服务器角色dbcreator中的成员用来管理与数据库创建和修改有关的所有动作。这些成员可以进行如下的动作:
向该服务器角色中添加其他登录
运行CREATE DATABASE和ALTER DATABASE语句
使用系统过程sp_renamedb来修改数据库的名称

 

7. diskadmin

固定服务器角色diskadmin的成员可以进行如下与用来存储数据库对象的文件和文件组有关的动作:
向该服务器角色中添加其他登录
运行如下系统过程:sp_ddumpdevice和sp_dropdevice。
运行DISK INIT语句

 

固定服务器角色

 


固定服务器角色在数据库层上进行定义,因此它们存在于属于数据库服务器的每个数据库中。下表列出了所有的固定数据库角色。

 

固定服务器角色

说    明

db_owner

可以执行数据库中技术所有动作的用户

db_accessadmin

可以添加、删除用户的用户

db_datareader

可以查看所有数据库中用户表内数据的用户

db_datawriter

可以添加、修改或删除所有数据库中用户表内数据的用户

db_ddladmin

可以在数据库中执行所有DDL操作的用户

db_securityadmin

可以管理数据库中与安全权限有关所有动作的用户

db_backoperator

可以备份数据库的用户(并可以发布DBCC和CHECKPOINT语句,这两个语句一般在备份前都会被执行)

db_denydatareader

不能看到数据库中任何数据的用户

db_denydatawriter

不能改变数据库中任何数据的用户

 


除了上表中列出的固定服务器角色之外,还有一种特殊的固定服务器角色,名为public,这里将首先介绍这一角色。

 

public角色

 


public角色是一种特殊的固定服务器角色,数据库的每个合法用户都属于该角色。它为数据库中的用户提供了所有默认权限。这样就提供了一种机制,即给予那些没有适当权限的所有用户以一定的(通常是有限的)权限。public角色为数据库中的所有用户都保留了默认的权限,因此是不能被删除的。

一般情况下,public角色允许用户进行如下的操作:
使用某些系统过程查看并显示master数据库中的信息
执行一些不需要一些权限的语句(例如PRINT)

 

固定服务器角色及其权限

 


在数据库中,每个固定数据库角色都有其特定的权限。这就意味着对于某个数据库来说,固定数据库角色的成员的权限是有限的。使用系统过程sp_dbfixedrolepermission就可以查看每个固定数据库角色的权限。该系统过程的语法为:

sp_db.xedrolepermission [[@rolename =] 'role']
如果没有指定role的值,那么所有固定数据库角色的权限都可以显示出来。下面的几节将讨论每个固定数据库角色的权限。

 

1. db_owner

固定数据库角色db_owner的成员可以在特定的数据库中进行如下的动作:

向其他固定数据库角色中添加成员,或从其中删除成员
运行所有的DDL语句
运行BACKUP DATABASE和BACKUP LOG语句
使用CHECKPOINT语句显式地启动检查点进程


运行下列dbcc命令:dbcc checkalloc、dbcc checkcatalog、dbcc checkdb、dbcc updateusage

授予、取消或剥夺每一个数据库对象上的下列权限:SELECT、INSERT、UPDATE、DELETE和REFERENCES

使用下列系统过程向数据库中添加用户或角色:sp_addapprole、sp_addrole、sp_addrolemember、sp_approlepassword、sp_changeobjectowner、sp_dropapprole、sp_droprole、sp_droprolemember、sp_dropuser、sp_grantdbaccess

使用系统过程sp_rename为任何数据库对象重新命名

 

2. db_accessadmin

 


固定数据库角色db_accessadmin的成员可以执行与数据库访问有关的所有动作。这些角色可以在具体的数据库中执行下列操作:
运行下列系统过程:sp_addalias、sp_dropalias、sp_dropuser、sp_grantdbacess、sp_revokedbaccess
为Windows用户账户、Windows组和SQL Server登录添加或删除访问

 

3. dbdatareader

固定数据库角色dbdatareader的成员对数据库中的数据库对象(表或视图)具有SELECT权限。然而,这些成员不能把这个权限授予其他任何用户或角色。(这个限制对REVOKE语句来说同样成立。)

 

4. dbdatawriter

固定数据库角色dbdatawriter的成员对数据库中的数据库对象(表或视图)具有INSERT、UPDATE和DELETE权限。然而,这些成员不能把这个权限授予其他任何用户或角色。(这个限制对REVOKE语句来说也同样成立。)

 

5. db_ddladmin

固定数据库角色db_ddladmin的成员可以进行如下的动作:
运行所有DDL语句
对任何表上授予REFERENCESE权限
使用系统过程sp_procoption和sp_recompile来修改任何存储过程的结构
使用系统过程sp_rename为任何数据库对象重命名
使用系统过程sp_tableoption和sp_changeobjectowner分别修改表的选项和任何数据库对象的拥有者

 

6. db_securityadmin

固定数据库角色db_securityadmin的成员可以管理数据库中的安全。这些成员可以进行如下的动作:
运行与安全有关的所有Transact-SQL语句(GRANT、DENY和REVOKE)
运行以下系统过程:sp_addapprole、sp_addrole、sp_addrolemember、sp_approlepassword、sp_changeobjectowner、sp_dropapprole、sp_droprole、sp_droprolemember

 

7. db_backupoperator

固定数据库角色db_backupoperator的成员可以管理数据库备份的过程。这些成员可以进行如下动作:
运行BACKUP DATABASE和BACKUP LOG语句
用CHECKPOINT语句显式地启动检查点进程
运行如下dbcc命令:dbcc checkalloc、dbcc checkcatalog、dbcc checkdb、dbcc updateusage

 

8. db_denydatareader和db_denydatawriter

顾名思义,固定数据库角色db_denydatareader的成员对数据库中的数据库对象(表或视图)没有SELECT权限。如果数据库中含有敏感数据并且其他用户不能读取这些数据,那么就可以使用这个角色。
固定数据库角色db_denydatawriter的成员对数据库中的任何数据库对象(表或视图)没有INSERT、UPDATE和DELETE权限。

 

 

3、 查阅近期数据库安全事件,分析攻击原理,掌握数据库安全的重要性

攻击原理

第一步信息收集(敏感目录文件、whois信息、旁注、端口开放、iis几、)
第二部漏洞挖掘(web应用指纹、漏洞有那些xss、CSRF、XSIO、SQL、任何文件读取、上传、之类的)
第三步漏洞利用(目的思考、利用漏洞拿到相关权限、然后提权)
再之后就是提权拿服务器、然后创建隐藏账户、然后擦痕迹

数据库安全重要性

随着计算机和网络技术发展,互联网信息系统的应用越来越广泛。数据库作为业务平台信息技术的核心和基础,承载着越来越多的关键数据,渐渐成为单位公共安全中最具有战略性的资产,数据库的安全稳定运行也直接决定着业务系统能否正常使用。并且平台的数据库中往往储存着等极其重要和敏感的信息。这些信息一旦被篡改或者泄露,轻则造成企业经济损失,重则影响企业形象,甚至行业、社会安全。可见,数据库安全至关重要。所以对数据库的保护是一项必须的,关键的,重要的工作任务。

 

8)课后习题

 

posted @ 2021-09-19 12:59  今天码代码了吗  阅读(370)  评论(0)    收藏  举报