第46章管理SQL Server服务器安全性.docx
- 文档编号:12360419
- 上传时间:2023-04-18
- 格式:DOCX
- 页数:14
- 大小:526.64KB
第46章管理SQL Server服务器安全性.docx
《第46章管理SQL Server服务器安全性.docx》由会员分享,可在线阅读,更多相关《第46章管理SQL Server服务器安全性.docx(14页珍藏版)》请在冰豆网上搜索。
第46章管理SQLServer服务器安全性
第46章管理SQLServer服务器安全性
要想保证数据库数据的安全,必须搭建一个相对安全的运行环境。
因此,对服务器安全性管理至关重要。
在SQLServer2008中,对服务器安全性管理主要通过更加健壮的验证模式,安全的登录服务器的账户管理以及对服务器角色的控制,从而,更加有力的保证了服务器的安全便捷。
46.1身份验证模式
SQLServer2008提供了Windows身份和混合身份两种验证模式,每一种身份验证都有一个不同类型的登录账户。
无论哪种模式,SQLServer2008都需要对用户的访问进行两个阶段的检验:
验证阶段和许可确认阶段。
●验证阶段用户在SQLServer2008获得对任何数据库的访问权限之前,必须登录到SQLServer上,并且被认为是合法的。
SQLServer或者Windows要求对用户进行验证。
如果验证通过,用户就可以连接到SQLServer2008上;否则,服务器将拒绝用户登录
●许可确认阶段用户验证通过后会登录到SQLServer2008上,此时系统将检查用户是否有访问服务器上数据的权限。
如果在服务器级别配置安全模式,它们会应用到服务器上的所有数据库。
但是,由于每个数据服务器实例都有独立的安全体系结构,这就意味着不同的数据库服务器实例,可以使用不同的安全模式。
1.Windows身份验证
使用Windows身份验证模式是默认的身份验证模式,它比混合模式要安全得多。
当数据库仅在内部访问时使用Windows身份验证模式可以获得最佳工作效率。
在使用Windows身份验证模式时,可以使用Windows域中有效的用户和组账户来进行身份验证。
这种模式下,域用户不需要独立的SQLServer用户账户和密码就可以访问数据库。
这对于普通用户来说是非常有益的,因为这意味着域用户不需记住多个密码。
如果用户更新了自己的域密码,也不必更改SQLServer2008的密码。
但是,在该模式下用户仍然要遵从Windows安全模式的所有规则,并可以用这种模式去锁定账户、审核登录和迫使用户周期性地更改登录密码。
当用户通过Windows用户帐户连接时,SQLServer使用操作系统中的Windows主体标记验证帐户名和密码。
也就是说,用户身份由Windows进行确认。
SQLServer不要求提供密码,也不执行身份验证。
图9-2所示,就是本地账户启用SQLServerManage-mentStudio窗口是,使用操作系统中的Windows主体标记进行的连接。
图9-2Windows身份验证模式
其中,服务器名称中MR代表当前计算机名称,Administrator是指登录该计算机时使用的Windows账户名称。
这也是SQLServer默认的身份验证模式,并且比SQLServer身份验证更为安全。
Windows身份验证使用Kerberos安全协议,提供有关强密码复杂性验证的密码策略强制,还提供帐户锁定支持,并且支持密码过期。
通过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帐户设置强密码。
图9-3所示,就是选择混合模式身份验证的登录界面。
图9-3使用SQLServer身份验证
如果用户是具有Windows登录名和密码的Windows域用户,则还必须提供另一个用于连接的(SQLServer)登录名和密码。
记住多个登录名和密码对于许多用户而言都较为困难。
每次连接到数据库时都必须提供SQLServer凭据也十分繁琐。
混合模式身份验证的缺点如下所示。
●SQLServer身份验证无法使用Kerberos安全协议。
●SQLServer登录名不能使用Windows提供的其他密码策略。
混合模式身份验证的优点如下。
●允许SQLServer支持那些需要进行SQLServer身份验证的旧版应用程序和由第三方提供的应用程序。
●允许SQLServer支持具有混合操作系统的环境,在这种环境中并不是所有用户均由Windows域进行验证。
●允许用户从未知的或不可信的域进行连接。
例如,既定客户使用指定的SQLServer登录名进行连接以接收其订单状态的应用程序。
●允许SQLServer支持基于Web的应用程序,在这些应用程序中用户可创建自己的标识。
●允许软件开发人员通过使用基于已知的预设SQLServer登录名的复杂权限层次结构来分发应用程序。
使用SQLServer身份验证不会限制安装SQLServer的计算机上的本地管理员权限。
3.配置身份验证模式
通过前面的学习,大家已经对SQLServer2008的两种身份验证模式有了一定的认识。
下面我们将学习在安装SQLServer之后,设置和修改服务器身份验证模式的操作方法。
在第一次安装SQLServer2008或者使用SQLServer2008连接其他服务器的时候,需要指定验证模式。
对于已指定验证模式的SQLServer2008服务器还可以进行修改,具体操作步骤如下:
(1)打开SQLServerManagementStudio窗口,选择一种身份验证模式建立与服务器的连接。
(2)在【对象资源管理器】窗口中右击当前服务器名称,选择【属性】命令,打开【服务器属性】对话框,如图9-4所示。
图9-4打开【服务器属性】对话框
在默认打开的【常规】选项卡中,显示了SQLServer2008服务器的常规信息,包括SQLServer2008的版本、操作系统版本、运行平台、默认语言以及内存和CPU等等。
(3)在左侧的选项卡列表框中,选择【安全性】选项卡,展开安全性选项内容,如图9-5所示。
在此选项卡中即可设置身份验证模式。
图9-5【安全性】选项卡
(4)通过在【服务器身份验证】选项区域下,选择相应的单选按钮,可以确定SQLServer2008的服务器身份验证模式。
无论使用哪种模式,都可以通过审核来跟踪访问SQLServer2008的用户,默认时仅审核失败的登录。
当启用审核后,用户的登录被记录于Windows应用程序日志、SQLServer2008错误日志或两种之中,这取决于如何配置SQLServer2008的日志。
可用的审核选项如下:
●无禁止跟踪审核
●仅限失败的登录默认设置,选择后仅审核失败的登录尝试。
●仅限成功的登录仅审核成功的登录尝试。
●失败和成功的登录审核所有成功和失败的登录尝试。
46.2管理登录帐号
与两种验证模式一样,服务器登录也有两种情况:
可用使用域账号登录,域账号可用是域或本地用户账号、本地组账户或通用的和全局的域组账户;可用通过指定唯一的登录ID和密码来创建SQLServer2008登录,默认登录包括本地管理员组、本地管理员、sa、NetworkService和SYSTEM。
●系统管理员组SQLServer2008中管理员组在数据库服务器上属于本地组。
这个组的成员通常包括本地管理员用户账户和任何设置为管理员本地系统的其他用户。
在SQLServer2008中,此组默认授予sysadmin服务器角色。
●管理员用户账户管理员在SQLServer2008服务器上的本地用户账户。
该账户提供对本地系统的管理权限,主要在安装系统时使用它。
如果计算机是Windows域的一部分,管理员账户通常也有域范围的权限。
在SQLServer2008中,这个账户默认授予sysadmin服务器角色。
●Sa登录是SQLServer系统管理员的账户。
而在SQLServer2008中采用了新的集成和扩展的安全模式,sa不再是必需的,提供此登录账户主要是为了针对以前SQLServer版本的向后兼容性。
与其他管理员登录一样,sa默认授予sysadmin服务器角色。
在默认安装SQLServer2008的时候,sa账户没有被指派密码。
如果要组织非授权访问服务器,可以为sa账户设置一个密码,而且应该像Windows账户密码那样,周期性地进行修改。
●NetworkService和SYSTEM登录它是SQLServer2008服务器上内置的本地账户,而是否创建这些账户的服务器登录,依赖于服务器的配置。
例如,如果已经将服务器配置为报表服务器,此时将有一个NETWORKSERVICE的登录账户,这个登录将是mester、msdb、ReportServer和ReportServerTempDB数据库的特殊数据库角色RSExceRole的成员。
在服务器实例设置期间,NETWORKSERVICE和SYSTEM账户可以是为SQLServer、SQLServer代理、分析服务和报表服务器所选择的服务账户。
在这种情况下,SYSTEM账户通常具有sysadmin服务器和角色,允许其完全访问以管理服务器实例。
只有获得Windows账户的客户才能建立与SQLServer2008的信任连接(即SQLServer2008委托Windows验证用户的密码)。
如果正在为其创建登录的用户(比如Novell客户)无法建立信任连接,则必须为他们创建SQLServer账户登录。
下面来创建两个标准登录,以供后面使用。
具体操作过程如下。
(1)打开MicrosoftSQLServerManagementStudio,展开【服务器】节点,然后展开【安全性】节点。
(2)右击【登录名】节点,从弹出的菜单中选择【新建登录名】命令,将打开【登录名-新建】窗口,然后输入登录名为shop_Manage,同时,选择【SQLServer身份验证】单选按钮,并设置密码,如图9-6所示。
图9-6创建SQLServer登录账户
(4)单击【确定】按钮,完成SQLServer登录账户的创建。
为了测试创建的登录名是否成功,下面用新的登录名shop_Manage来进行测试,具体步骤如下所示:
(1)在SQLServerManagementStudio中,单击【连接】|【数据库引擎】命令,将打开【连接到服务器】窗口。
(2)从【身份验证】下拉表中,选择【SQLServer身份验证】选项,【登录名】文本框中输入shop_Manage,【密码】文本框输入相应的密码,如图9-7所示。
图9-7连接服务器
(3)单击【连接】按钮,登录服务器,如图9-8所示。
图9-8使用shop_Manage登录成功图9-9无法访问数据库
但是由于默认的数据库是master数据库,所有其他的数据库没有权限访问。
这里访问“网店购物系统”数据库,就会提示错误信息,如图9-9所示。
46.3管理用户
要访问特定的数据库,还必须具有用户名。
用户名在特定的数据库内创建,并关联一个登录名(当一个用户创建时,必须关联一个登录名)。
通过授权给用户来指定用户可以访问的数据库对象的权限。
可以这样想象,假设SQLServer是一个包含许多房间的大楼,每一个房间代表一个数据库,房间里的资料可以表示数据库对象。
则登录名就相当于进入大楼的钥匙,而每个房间的钥匙就是用户名。
房间中的资料则可以根据用户名的不同而有不同的权限。
在上一节中,我们介绍了创建登录账户。
而创建的登录账户将不为该登录账户映射相应的数据库用户,所以该登录账户无法访问数据库。
一般情况下,用户登录SQLServer实例后,还不具备访问数据库的条件。
在用户可以访问数据库之前,管理员必须为该用户在数据库中建立一个数据库账号作为访问该数据库的ID。
这个过程就是将SQLServer登录账号映射到需要访问的每个数据库中,这样才能够访问数据库。
如果数据库中没有用户账户,则即使用户能够连接到SQLServer实例也无法访问到该数据库。
下面通过使用SQLServerManagementStudio来创建数据库用户账户,然后给用户授予访问数据库“网店购物系统”的权限。
具体步骤如下所示:
(1)打开SQLServerManagementStudio,并展开【服务器】节点。
(2)展开【数据库】节点,然后再展开“网店购物系统”节点。
(3)再展开【安全性】节点,右击【用户】节点,从弹出菜单中选择【新建用户】命令,打开【数据库用户-新建】窗口。
(4)单击【登录名】文本框旁边的【选项】按钮
,打开【选择登录名】窗口,然后单击【浏览】按钮,打开【查找对象】窗口,选择刚刚创建的SQLServer登录账户shop_Manage,如图9-10所示。
图9-10选择登录账户
(5)单击【确定】按钮返回,在【选择登录名】对话框就可以看到选择的登录名对象,如图9-11所示。
图9-11【选择登录名】对话框
(6)单击【确定】按钮返回。
设置用户名为WD,选择架构为dbo,并设置用户的角色为db_owner,具体设置如图9-12所示。
图9-12新建数据库用户
(7)单击【确定】按钮,完成数据库用户的创建。
(8)为了验证是否创建成功,可以刷新【用户】节点,用户就可以看到刚才创建的WD用户账户,如图9-13所示。
图9-13查看【用户】节点
数据库用户创建成功后,就可以使用该用户关联的登录名shop_Manage进行登录,就可以访问“网店购物系统”的所有内容,如图9-14所示。
图9-14查看【场馆信息】表
添加数据库用户还可以用系统存储过程sp_grantdbaccess来实现,具体语法是:
CREATEUSERuser_name
[{{FOR|FROM}
{
LOGINlogin_name
|CERTIFICATEcert_name
|ASYMMETRICKEYasym_key_name
}
|WITHOUTLOGIN
]
[WITHDEFAULT_SCHEMA=schema_name]
其中语法的参数介绍如下:
●user_name指定在此数据库中用于识别该用户的名称。
user_name是sysname。
他的长度最多是128个字符。
●LOGINlogin_name指定要创建数据库用户的SQLServer登录名。
login_name必须是服务器中有效的登录名。
当此SQLServer登录名进入数据库时,他将获取正在创建的数据库用户的名称和ID。
●CERTIFICATEcert_name指定要创建数据库用户的证书。
●ASYMMETRICKEYasym_key_name指定要创建数据库用户的非对称密钥。
●WITHDEFAULT_SCHEMA=schema_name指定服务器为此数据库用户解析对象名时将搜索的第一个架构。
●WITHOUTLOGIN指定不应将用户映射到现有登录名。
下面的例子建立了一个SQLServer的登录账户,然后将该账户添加为“网店购物系统”数据库的用户。
USEmaster
GO
CREATELOGINadmin
WITHPASSWORD='admini_strator';
USE网店购物系统
CREATEUSERadminFORLOGINadmin;
GO
执行上述语句,就为“网店购物系统”数据库创建了一个名字为admin的用户,如图9-15所示。
图9-15查看数据库用户
使用系统存储过程创建SQLServer登录时候,密码要符合SQLServer2008的密码策略,如果密码过于简单,将无法创建账户。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第46章 管理SQL Server服务器安全性 46 管理 SQL Server 服务器 安全性