实验12 常用数据库系统安全.docx
- 文档编号:29999965
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:26
- 大小:1.40MB
实验12 常用数据库系统安全.docx
《实验12 常用数据库系统安全.docx》由会员分享,可在线阅读,更多相关《实验12 常用数据库系统安全.docx(26页珍藏版)》请在冰豆网上搜索。
实验12常用数据库系统安全
常用数据库系统安全
数据库是信息管理系统、电子商务、电子政务的基础,保存着重要的数据和信息,例如生产数据、交易记录、工程数据、个人资料等等。
数据完整性和合法存取会受到很多方面的安全威胁,包括密码策略、系统后门、数据库操作以及本身的安全方案。
数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄漏、更改或破坏。
本章围绕数据库的安全性配置、数据库的架构设计以及对数据的备份与恢复操作等方面的内容,展开详细讲解。
1SQLServer服务器的安全配置
SQLServer2008是微软公司推出的一个数据库产品,集成了许多新的功能特性和关键的改进,使得它成为至今为止的最强大和最全面的SQLServer版本。
SQLServer2008提供了丰富的安全特性,用于保护数据和网络资源。
它的安装更轻松、更安全,除了最基本的特性之外,其他特性都不是默认安装的,即便安装了也处于未启用的状态。
SQLServer提供了丰富的服务器配置工具,它的身份验证特性得到了增强,SQLServer更加紧密地与Windows身份验证相集成,并保护弱口令或陈旧的口令。
有了细粒度授权、SQLServerAgent代理和执行上下文,在经过验证之后,授权和控制用户可以采取的操作将更加灵活。
元数据也更加安全,因为系统元数据视图仅返回关于用户有权以某种形式使用的对象的信息。
在数据库级别,加密提供了最后一道安全防线,而用户与架构的分离使得用户的管理更加轻松。
SQLServer的安全机制一般主要包括三个等级:
●服务器级别的安全机制
这个级别的安全性主要通过登录帐户进行控制,要想访问一个数据库服务器,必须拥有一个登录帐户。
登录帐户可以是Windows账户或组,也可以是SQLServer的登录账户。
登录账户可以属于相应的服务器角色。
至于角色,可以理解为权限的组合。
●数据库级别的安全机制
这个级别的安全性主要通过用户帐户进行控制,要想访问一个数据库,必须拥有该数据库的一个用户账户身份。
用户账户是通过登录账户进行映射的,可以属于固定的数据库角色或自定义数据库角色。
●数据对象级别的安全机制
这个级别的安全性通过设置数据对象的访问权限进行控制。
SQLServer2008中广泛使用安全主体和安全对象管理安全。
一个请求服务器、数据库或架构资源的实体称为安全主体。
每一个安全主体都有唯一的安全标识符(SecrityIdentifier,ID)。
安全主体在3个级别上管理:
Windows、SQLServer和数据库。
安全主体的级别决定了安全主体的影响范围。
通常,Windows和SQLServer级别的安全主体具有实例级的范围,而数据库级别的安全主体的影响范围是特定的数据库。
安全主体能在分等级的实体集合(也称为安全对象)上分配特定的权限。
最顶层的三个安全对象是服务器、数据库和架构。
这些安全对象的每一个都包含其他的安全对象,后者依次又包含其他的安全对象,这些嵌套的层次结构称为范围。
因此,也可以说SQLServer中的安全对象范围是服务器、数据库和架构。
1.1身份验证模式配置
【实验目的】
掌握SQLServer2008数据库服务器的身份验证模式配置。
【原理简介】
SQLServer2008提供了Windows身份和混合身份两种验证模式。
1.Windows身份验证
使用Windows身份验证模式是默认的身份验证模式,它比混合模式要安全得多。
当用户通过Windows用户帐户连接时,SQLServer使用操作系统中的Windows主体标记验证帐户名和密码。
也就是说,用户身份由Windows进行确认。
SQLServer不要求提供密码,也不执行身份验证。
通过Windows身份验证完成的连接有时也称为可信连接,这是因为SQLServer信任由Windows提供的凭据。
Windows省份验证模式有以下主要优点:
●数据库管理员的工作可以集中在管理数据库上面,而不是管理用户账户。
对用户账户的管理可以交给Windows去完成。
●Windows有更强的用户账户管理工具。
可以设置账户锁定、密码期限等。
如果不通过定制来扩展SQLServer,SQLServer则不具备这些功能。
●Windows的组策略支持多个用户同时被授权访问SQLServer。
2.混合模式
使用混合安全的身份验证模式,可以同时使用Windows身份验证和SQLServer登录。
SQLServer登录主要用于外部的用户,例如那些可能从Internet访问数据库的用户。
可以配置从Internet访问SQLServer2008的应用程序以自动地使用指定的账户或提示用户输入有效的SQLServer用户账户和密码。
使用混合安全模式,SQLServer2008首先确定用户的连接是否使用有效的SQLServer用户账户登录。
仅当用户没有有效的登录时,SQLServer2008才检查Windows账户的信息。
在这种情况下,SQLServer2008将会确定Windows账户是否有连接到服务器的权限。
如果账户有权限,连接被接受;否则,连接被拒绝。
当使用混合模式身份验证时,在SQLServer中创建的登录名并不基于Windows用户帐户。
用户名和密码均通过使用SQLServer创建并存储在SQLServer中。
通过混合模式身份验证进行连接的用户每次连接时必须提供其凭据(登录名和密码)。
当使用混合模式身份验证时,必须为所有SQLServer帐户设置强密码。
如果用户是具有Windows登录名和密码的Windows域用户,则还必须提供另一个用于连接的(SQLServer)登录名和密码。
记住多个登录名和密码对于许多用户而言都较为困难。
每次连接到数据库时都必须提供SQLServer凭据也十分繁琐。
混合模式身份验证的缺点如下所示。
●SQLServer身份验证无法使用Kerberos安全协议。
●SQLServer登录名不能使用Windows提供的其他密码策略。
混合模式身份验证的优点如下。
●允许SQLServer支持那些需要进行SQLServer身份验证的旧版应用程序和由第三方提供的应用程序。
●允许SQLServer支持具有混合操作系统的环境,在这种环境中并不是所有用户均由Windows域进行验证。
●允许用户从未知的或不可信的域进行连接。
例如,既定客户使用指定的SQLServer登录名进行连接以接收其订单状态的应用程序。
●允许SQLServer支持基于Web的应用程序,在这些应用程序中用户可创建自己的标识。
●允许软件开发人员通过使用基于已知的预设SQLServer登录名的复杂权限层次结构来分发应用程序。
【实验环境】
SQLServer2005以上数据库系统。
【实验步骤】
在第一次安装SQLServer2008或者使用SQLServer2008连接其他服务器的时候,需要指定验证模式。
对于已指定验证模式的SQLServer2008服务器还可以进行修改,具体操作步骤如下:
(1)打开SQLServerManagementStudio窗口,选择一种身份验证模式建立与服务器的连接。
如图1所示。
图1SQLServerManagementStudio登录
(2)在【对象资源管理器】窗口中右击当前服务器名称,选择【属性】命令,打开【服务器属性】对话框,在左侧的选项卡列表框中,选择【安全性】选项卡,展开安全性选项内容,如图2所示。
在此选项卡中即可设置身份验证模式,登录审核选项。
图2更改身份验证模式
【实验报告】
1.尝试为数据系统身份验证模式分别设置为Windows身份认证和混合认证模式,并比较二者的异同。
【思考题】
1.作为WEB服务器的数据库时应该才有哪种身份认证模式。
1.2管理用户帐号
【实验目的】
掌握SQLServer2008数据库服务器的用户管理。
【原理简介】
服务器登录账号分为两类:
可用使用Windows账号登录,Windows账号可用是域或本地用户账号、本地组账户或通用的和全局的域组账户;可用通过指定唯一的登录ID和密码来创建SQLServer账号登录,默认登录包括本地管理员组、本地管理员、sa、NetworkService和SYSTEM。
●系统管理员组SQLServer中管理员组在数据库服务器上属于本地组。
这个组的成员通常包括本地管理员用户账户和任何设置为管理员本地系统的其他用户。
在SQLServer中,此组默认授予sysadmin服务器角色。
●管理员用户账户管理员在SQLServer服务器上的本地用户账户。
该账户提供对本地系统的管理权限,主要在安装系统时使用它。
如果计算机是Windows域的一部分,管理员账户通常也有域范围的权限。
在SQLServer中,这个账户默认授予sysadmin服务器角色。
●Sa登录是SQLServer系统管理员的账户。
而在SQLServer中采用了新的集成和扩展的安全模式,sa不再是必需的,提供此登录账户主要是为了针对以前SQLServer版本的向后兼容性。
与其他管理员登录一样,sa默认授予sysadmin服务器角色。
在默认安装SQLServer的时候,sa账户没有被指派密码。
●NetworkService和SYSTEM登录它是SQLServer服务器上内置的本地账户,而是否创建这些账户的服务器登录,依赖于服务器的配置。
例如,如果已经将服务器配置为报表服务器,此时将有一个NETWORKSERVICE的登录账户,这个登录将是mester、msdb、ReportServer和ReportServerTempDB数据库的特殊数据库角色RSExceRole的成员。
在服务器实例设置期间,NETWORKSERVICE和SYSTEM账户可以是为SQLServer、SQLServer代理、分析服务和报表服务器所选择的服务账户。
在这种情况下,SYSTEM账户通常具有sysadmin服务器和角色,允许其完全访问以管理服务器实例。
要访问特定的数据库,还必须具有用户名。
用户名在特定的数据库内创建,并关联一个登录名(当一个用户创建时,必须关联一个登录名)。
通过授权给用户来指定用户可以访问的数据库对象的权限。
一般情况下,用户登录SQLServer实例后,还不具备访问数据库的条件。
在用户可以访问数据库之前,管理员必须为该用户在数据库中建立一个数据库账号作为访问该数据库的ID。
这个过程就是将SQLServer登录账号映射到需要访问的每个数据库中,这样才能够访问数据库。
如果数据库中没有用户账户,则即使用户能够连接到SQLServer实例也无法访问到该数据库。
【实验环境】
SQLServer2005以上数据库系统。
【实验步骤】
(1)打开MicrosoftSQLServerManagementStudio,展开【服务器】节点,然后展开【安全性】节点。
(2)右击【登录名】节点,从弹出的菜单中选择【新建登录名】命令,将打开【登录名-新建】窗口,然后输入登录名为test_Manage,同时,选择【SQLServer身份验证】单选按钮,并设置密码,如图3所示。
图3创建SQLServer登录账户
(4)单击【确定】按钮,完成SQLServer登录账户的创建。
为了测试创建的登录名是否成功,下面用新的登录名test_Manage来进行测试,具体步骤如下所示:
(1)在SQLServerManagementStudio中,单击【连接】|【数据库引擎】命令,将打开【连接到服务器】窗口。
(2)从【身份验证】下拉表中,选择【SQLServer身份验证】选项,【登录名】文本框中输入stest_Manage,【密码】文本框输入相应的密码,如图4所示。
图4连接服务器
(3)单击【连接】按钮,登录服务器,如图5所示。
图5使用test_Manage登录成功
但是由于默认的数据库是master数据库,所有其他的数据库没有权限访问。
这里访问“taobao”数据库,就会提示错误信息。
下面通过使用SQLServerManagementStudio来创建数据库用户账户,然后给用户授予访问数据库“taobao”的权限。
具体步骤如下所示:
(1)以sa用户登录SQLServerManagementStudio,并展开【服务器】节点。
展开【数据库】节点,然后再展开“taobao”节点。
(2)再展开【安全性】节点,右击【用户】节点,从弹出菜单中选择【新建用户】命令,打开【数据库用户-新建】窗口。
(3)单击【登录名】文本框旁边的【选项】按钮
,打开【选择登录名】窗口,然后单击【浏览】按钮,打开【查找对象】窗口,选择刚刚创建的SQLServer登录账户test_Manage,如图6所示。
图6选择登录账户
(4)单击【确定】按钮返回。
设置用户名为test_Manage,选择架构为dbo,并设置用户的角色为db_owner,具体设置如图7所示。
图7新建数据库用户
(5)单击【确定】按钮,完成数据库用户的创建。
(6)为了验证是否创建成功,可以刷新【用户】节点,用户就可以看到刚才创建的test_Manage用户账户,如图8所示。
图8查看【用户】节点
数据库用户创建成功后,就可以使用该用户关联的登录名test_Manage进行登录,就可以访问“taobao”的所有内容,如图9所示。
图9查看数据表
【实验报告】
1.按照实验步骤完成实验,并记录实验过程。
【思考题】
1.分析SQLServer把登录账号与数据库用户分开有什么好处。
1.3管理数据库角色
【实验目的】
掌握SQLServer2008数据库服务器的角色管理。
【原理简介】
角色是SQLServer2008用来集中管理数据库或者服务器的权限。
数据库管理员将操作数据库的权限赋予角色。
然后,数据库管理员再将角色赋给数据库用户或者登录账户,从而使数据库用户或者登录账户拥有了相应的权限。
为便于管理服务器上的权限,SQLServer提供了若干“角色”,这些角色是用于分组其他主体的安全主体。
“角色”类似于MicrosoftWindows操作系统中的“组”。
为方便使用和向后兼容提供了固定服务器角色。
请尽可能分配更具体的权限。
服务器级角色也称为“固定服务器角色”,因为您不能创建新的服务器级角色。
服务器级角色的权限作用域为服务器范围。
您可以向服务器级角色中添加SQLServer登录名、Windows帐户和Windows组。
固定服务器角色的每个成员都可以向其所属角色添加其他登录名。
下表显示了服务器级角色及其能够执行的操作。
服务器级角色名称
说明
sysadmin
sysadmin固定服务器角色的成员可以在服务器中执行任何活动。
serveradmin
serveradmin固定服务器角色的成员可以更改服务器范围的配置选项和关闭服务器。
securityadmin
securityadmin固定服务器角色的成员可以管理登录名及其属性。
他们可以GRANT、DENY和REVOKE服务器级权限。
如果他们具有对数据库的访问权限,还可以GRANT、DENY和REVOKE数据库级权限。
此外,他们还可以重置SQLServer登录名的密码。
安全说明
可以授予对数据库引擎的访问权限以及配置允许安全管理员分配大多数服务器权限的用户权限。
securityadmin角色应被视为与sysadmin角色等效。
processadmin
processadmin固定服务器角色的成员可以终止在SQLServer实例中运行的进程。
setupadmin
setupadmin固定服务器角色的成员可以添加和删除链接服务器。
bulkadmin
bulkadmin固定服务器角色的成员可以运行BULKINSERT语句。
diskadmin
diskadmin固定服务器角色用于管理磁盘文件。
dbcreator
dbcreator固定服务器角色的成员可以创建、更改、删除和还原任何数据库。
public
每个SQLServer登录名都属于public服务器角色。
如果未向某个服务器主体授予或拒绝对某个安全对象的特定权限,该用户将继承授予该对象的public权限。
只有在希望所有用户都能使用对象时,才对对象分配public权限。
下表显示了固定数据库级角色及其能够执行的操作。
所有数据库中都有这些角色。
数据库级别的角色名称
说明
db_owner
db_owner固定数据库角色的成员可以执行数据库的所有配置和维护活动,还可以删除数据库。
db_securityadmin
db_securityadmin固定数据库角色的成员可以修改角色成员身份和管理权限。
向此角色中添加主体可能会导致意外的权限升级。
db_accessadmin
db_accessadmin固定数据库角色的成员可以为Windows登录名、Windows组和SQLServer登录名添加或删除数据库访问权限。
db_backupoperator
db_backupoperator固定数据库角色的成员可以备份数据库。
db_ddladmin
db_ddladmin固定数据库角色的成员可以在数据库中运行任何数据定义语言(DDL)命令。
db_datawriter
db_datawriter固定数据库角色的成员可以在所有用户表中添加、删除或更改数据。
db_datareader
db_datareader固定数据库角色的成员可以从所有用户表中读取所有数据。
db_denydatawriter
db_denydatawriter固定数据库角色的成员不能添加、修改或删除数据库内用户表中的任何数据。
db_denydatareader
db_denydatareader固定数据库角色的成员不能读取数据库内用户表中的任何数据。
【实验环境】
SQLServer2005以上数据库系统。
【实验步骤】
1.管理服务器角色
(1)打开SQLServerManagementStudio,在【对象资源管理器】窗口,展开【安全性】节点,然后再展开【服务器角色】节点。
(2)双击sysadmin节点,打开【服务器角色属性】节点,如图10,然后单击【添加】按钮,打开【选择登录名】窗口。
图10服务器角色属性
(3)单击【浏览】按钮,打开【查找对象】对话框,启用test_Manage选项旁边的复选框,如图11所示。
单击【确定】按钮返回到【选择登录名】对话框,
图11添加登录名
(5)单击【确定】按钮返回【服务器角色属性】窗口,在角色成员列表中,就可以看到服务器角色sysadmin的所有成员,其中包括刚刚添加的test_Manage,如图12所示。
图12【服务器角色属性】窗口
(6)用户可以再次通过【添加】按钮添加新的登录名,也可以通过【删除】按钮删除某些不需要的登录名。
(7)添加完成后,单击【确定】按钮关闭【服务器角色属性】窗口。
2.将用户添加到固定数据库角色中来配置他们对数据库拥有的权限,具体步骤如下所示:
(1)打开SQLServerManagementStudio,在【对象资源管理器】窗口,展开【数据库】节点,然后再展开数据库【taobao】节点中的【安全性】节点。
(2)接着展开【角色】节点,然后再展开【数据库角色】节点,双击db_owner节点,打开【数据库角色属性】窗口。
单击【添加】按钮,打开【选择数据库用户或角色】对话框,然后单击【浏览】按钮打开【查找对象】对话框,选择数据库用户test_manage,单击【确定】按钮返回【选择数据库用户或角色】对话框。
图13【选择数据库用户或角色】对话框
(5)单击【确定】按钮,返回【数据库角色属性】窗口,在这里可以看到当前角色拥有的架构以及该角色所有的成员,其中包括刚添加的数据库用户test_Manage,如图14所示。
图14【数据库角色属性】窗口
(6)添加完成后,单击【确定】按钮关闭【数据库角色属性】窗口。
3.用户自定义角色
创建自定义数据库角色的步骤如下所示:
(1)打开SQLServerManagementStudio,在【对象资源管理器】窗口,展开【数据库】|【taobao】|【安全性】|【角色】节点,右击【数据库角色】节点从弹出菜单中选择【新建数据库角色】命令,打开【数据库角色-新建】窗口。
(2)设置角色名称为TestRole,所有者选择dbo,单击【添加】按钮,选择数据库用户test_Manage,如图15所示。
图15【数据库角色-新建】窗口
(3)选中【安全对象】选项,打开【安全对象】选项页面,通过单击【搜索】按钮,添加一个数据表为“安全对象”,选中【选择】后面【授予】列的复选框,如图20-16所示。
图16为角色分配权限
(4)单击【列权限】按钮,还可以为该数据角色配置表中每一列的具体权限,如图17所示。
图17分配列权限
(5)具体的权限分配完成后,单击【确定】按钮创建这个角色,并返回到SQLServerManagementStudio。
(6)关闭所有程序,并重新登录为test_Manage。
(7)展开【数据库】|【taobao】|【表】节点,可以看到表节点下面只显示了拥有查看权限的表。
(8)由于在【列权限】窗口设置该角色的权限为:
不允许查看【商品信息】表中的“商品价格”列,那么在查询视图中输入下列语句将出现错误。
【实验报告】
1.按照实验步骤完成实验,并记录实验过程。
【思考题】
1.分析系统管理员,Sa用户登录权限有什么不同。
1.4管理权限
【实验目的】
掌握SQLServer2008数据库服务器的权限管理。
【原理简介】
数据库权限指明用户获得哪些数据库对象的使用权,以及用户能够对这些对象执行何种操作。
用户在数据库中拥有的权限取决于以下两方面的因素:
●用户账户的数据库权限
●用户所在角色的类型
权限提供了一种方法来对特权进行分组,并控制实例、数据库和数据库对象的维护和实用程序的操作。
用户可以具有授予一组数据库对象的全部特权的管理权限,也可以具有授予管理系统的全部特权但不允许存取数据的系统权限。
在SQLServer2008中,所有对象权限都可以授予。
在服务器级别,可以为服务器、端点、登录和服务器角色授予对象权限。
也可以为当前的服务器实例管理权限;在数据库级别,可以为应用程序角色、程序集、非对称密钥、凭据、数据库角色、数据库、全文目录、函数、架构等管理权限。
一旦有了保存数据的结构,就需要给用户授予开始使用数据库中数据的权限,可以通过给用户授予对象权限来实现。
利用对象权限,可以控制谁能够读取、写入或者以其他方式操作数据。
下面简要介绍12个对象权限:
●Control这个权限提供对象及其下层所有对象上的类似于主所有权的能力。
例如,如果给用户授予了数据库上的“控制”权限,那么他们在该数据库内的所有对象(比如表和视图)上都拥有“控制”权限。
●Alter这个权限允许用户创建(CREATE)、修改(ALTER)或者删除(DROP)受保护对象及其下层所有对象。
他
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验12 常用数据库系统安全 实验 12 常用 数据库 系统安全
![提示](https://static.bdocx.com/images/bang_tan.gif)