SQL Server 安全性概述.docx
- 文档编号:9237310
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:34
- 大小:216.73KB
SQL Server 安全性概述.docx
《SQL Server 安全性概述.docx》由会员分享,可在线阅读,更多相关《SQL Server 安全性概述.docx(34页珍藏版)》请在冰豆网上搜索。
SQLServer安全性概述
面向数据库管理员的SQLServer2008安全性概述
SQLServer技术文章
作者:
DonKiely
更新:
GeoffAllix(内容主管)
技术审查:
SethuKalavukar、SameerTejani、AlComeau、RobWalters和NirajNagrani
出版日期:
2007年10月
适用产品:
SQLServer 2008
摘要:
SQL Server 2008在设计、默认和部署方面均提供了保护措施。
Microsoft承诺在必要时将交换有关线程、对策和安全增强的信息,以尽量保证数据安全。
本文涉及SQL Server 2008的一些最重要的安全特性。
它将告诉管理员如何安全地安装SQL Server,以及如何在应用程序和用户使用其中存储的数据时,仍能保证其安全。
版权
这是一份预备文档,在本文档中所述软件的最终商业版本发布之前,该文档的内容可能会发生重大变化。
本文档中提供的信息代表了MicrosoftCorporation当前(软件发布之前)对所讨论问题持有的观点。
因为Microsoft必须响应不断变化的市场条件,所以其当前的观点不应被解释为是一种承诺,软件发布之后,Microsoft不能保证现在所提供的所有信息准确无误。
这份白皮书仅供参考。
Microsoft对本文档中提供的信息不做任何担保、明示、暗示或法律方面的承诺。
用户有责任遵守所有适用的版权法。
在版权权利限制下,未经Microsoft公司明确的书面许可,本文档的任何内容不能被复制、存储或放进检索系统,或者以任何形式或任何手段(电子、机械、复印、录制或其他)或为达到任何目的进行转换。
Microsoft对本文档涵盖的主题内容可能拥有专利、专利申请、商标、版权或其他知识产权。
没有来自Microsoft的任何书面许可协议的明确表示,本文档不赋予您对这些专利、商标、版权或其他知识产权的任何许可。
©2007MicrosoftCorporation。
保留所有权利。
Microsoft、Windows和SQLServer是MicrosoftCorporation在美国和/或其他国家的注册商标或商标。
本文档中提及的真实的公司和产品名称可能是其各自所有者的商标。
导言
随着越来越多的网络相互连接,安全性也变得日益重要。
公司的资产必须受到保护,尤其是数据库,它们存储着公司的宝贵信息。
安全是数据引擎的关键特性之一,保护企业免受各种威胁。
Microsoft®SQL Server™ 2008安全特性的宗旨是使其更加安全,且使数据保护人员能够更方便地使用和理解安全。
在过去几年中,世界各地的人们对于安全的、基于计算机的系统有了更深刻的理解。
Microsoft在此过程中一直处于前沿,而SQL Server就是落实这种理解的首批产品之一。
它实现了重要的“最少特权”原则,因此不必授予用户超出工作所需的权限。
它提供了深层次的防御工具,可以采取措施防御最危险黑客的攻击。
关于Microsoft首创的TrustworthyComputing技术,已经有了很多文献和讨论,它可指导公司的所有软件开发。
有关更多信息,请参阅TrustworthyComputing网站:
(
该首创技术的4个核心组件为:
∙Securebydesign。
作为抵御黑客及保护数据的基础,软件需要进行安全设计。
∙Securebydefault。
系统管理员不必操心新安装的安全,默认设置即可保证。
∙Secureindeployment。
软件自身应能更新最新的安全补丁,并能协助维护。
∙Communications。
交流最佳实践和不断发展的威胁信息,以使管理员能够主动地保护系统。
这些指导准则在SQL Server 2008中均得到了体现,它提供了保护数据库所需的所有工具。
本文介绍了系统和数据库管理员需要掌握的最重要的安全特性。
首先介绍如何安全地安装和配置SQL Server 2008。
它讨论了验证和授权特性,这些特性用以控制对服务器的访问,并规定用户一旦通过验证就可以执行的操作。
最后介绍管理员需要理解的数据库安全特性,以便为数据库以及访问这些数据库的应用程序提供安全的环境。
安全配置
要安全地安装SQL Server,必须有一个安全的环境。
对于运行SQL Server 2008的服务器,其外部安全要求没有太多改变。
需要保护服务器的物理安全,并要定期备份数据,如果联网,还须将其放到一个或多个防火墙后面,避免在运行其他服务器应用程序的计算机上安装SQL Server,且要尽可能减少必要的网络协议数量。
要在MicrosoftWindowsServer® 2003或MicrosoftWindowsServer® 2008计算机上安装SQL Server,以使它能充分利用操作系统级的安全保护措施。
此外,最安全的方案就是安装到一个或多个NTFS分区上。
有了安全的环境,接下来最关键的就是安全地安装SQL Server 2008。
安装程序执行所有的常规安装任务,其自带的SystemConfigurationChecker将通知用户可能导致问题的任何不足之处。
默认情况下,安装SQL Server 2008并不能启用所有特性。
而是只安装核心组件以及常用特性。
生产环境中可能用不到的其他特性默认是关闭的。
可以使用该产品支持的工具启用所需特性。
这些都是TrustworthyComputing技术中securebydefault特性的一部分。
这表示在安装时,SQL Server 2008可利用默认的安全设置集实现开箱即用的安全性。
基本数据库服务器不需要的特性并未被安装,目的是为了减少外围应用。
由于默认情形下并未在所有系统中启用所有特性,因此在安装系统镜像时引入了异质性。
这一点限制了启用易受潜在攻击的特性的系统数量,因此有助于防御大规模攻击或蠕虫病毒。
WindowsUpdate
在企业中部署SQLServer之后,就能发现新的威胁和漏洞。
WindowsUpdate旨在确保及时下载并应用能够显著减少特定安全问题的补丁。
可以利用WindowsUpdate自动应用SQLServer2008补丁,并减少由于已知的软件漏洞所导致的威胁。
在大多数企业环境中,应使用WindowsServerUpdateService(WSUS)管理补丁在组织内部的分发和更新。
外围应用配置
SQLServer2008具有大量特性,其中有许多在安装时处于禁用状态。
例如,CLR集成、数据库镜像、调试、ServiceBroker以及邮件功能虽被安装,但未运行且不可用,除非显式地启用或对其进行配置。
该设计与SQLServer“默认保证安全”思路的“减少外围应用”原则保持一致,可以减小攻击表面。
如果特性不可用或未被启用,攻击者就不能利用它。
这样做的代价就是,要花些时间搜寻启用特性的所有Transact-SQL语句。
即使发现sp_configuresystem存储过程可以满足很多需要,仍须编写并不直观的如下代码:
sp_configure'showadvancedoptions',1
reconfigurewithoverride
sp_configure'clrenabled',1
由于配置选项过多,编写此类代码很耗时间,尤其是在组织中部署了多个SQLServer实例时更是如此。
SQLServer2008带有基于策略的管理技术,名为DeclarativeManagementFramework(声明管理框架,DMF)。
DMF提供了大量的配置facet,其中的每一个都定义了一组相关的配置设置或属性。
可以利用这些facet创建一些为配置选项指定所需设置的“条件”,并将这些条件作为“策略”应用给企业中的SQLServer实例。
SQLServer2008自带的一个facet就是SurfaceArea,可以利用该facet定义用以控制各种SQLServer2008特性状态的策略。
通过创建为服务器定义所需外围应用设置的策略,可以方便地在组织中所有的SQLServer上配置最小的外围应用,并减小恶意攻击的可能性。
验证
在数据和服务器都需要保护,而且不想承受如今互联网上常见的无情攻击之际,Microsoft开发了SQLServer 2000。
基本的验证问题依然存在:
您是谁?
您如何证明自己的身份?
但是,SQL Server 2008提供了更健壮的验证特性,对服务器的安全便捷有着更好的支持,放行好人并阻止坏人。
SQLServerAuthentication利用包含用户id和口令的简单连接字符串,为基于非Windows的客户端或应用程序提供了验证机制。
这种登录易于使用,很受应用程序开发人员的欢迎,它的安全性不如Windows验证机制,因此在验证机制中不推荐使用。
SQL Server 2008改进了SQLServerAuthentication选项。
首先,默认情形下它利用SQL生成的证书支持通道的加密。
管理员不必获取或安装有效的SLL证书,以确保SQL凭证流经的通道是安全的。
由于SQL Server 2008自动生成这些证书,因此在传送登录数据包时,默认情形下它将自动加密通道。
如果客户端使用SQL Server 2005或更新版本,即可使用该特性。
注意:
SQLServer生成的本地证书可保护被动的中间人攻击,其中的攻击者会嗅探网络。
要更有效地系统免受被动中间人攻击,应部署并使用客户端也信任的证书。
SQL Server 2008进一步增强了SQLServerAuthentication,因为在与Windows2003服务器或更新版本一起使用时,默认情形下数据库引擎将利用WindowsGroupPolicy检查SQL登录的口令复杂度、口令过期日以及帐户锁定状态。
这表示可以对SQLServer帐户强行应用Windows口令策略。
口令策略强制
有了SQLServer 2008,口令策略强制特性被内置到服务器中。
作为WindowsServer2003NetAPI32库的一部分,SQLServer利用NetValidatePasswordPolicy()API根据Windows的口令强度、过期日和帐户锁定状态策略,在验证以及口令设置、重置期间验证口令的有效性。
表3列出来构成该策略的各种设置。
表3 WindowsServer2003口令策略组件
类别
名称
注释
口令策略
强行应用口令历史记录
防止用户重用旧口令,如交替使用两个口令。
最短的口令长度
口令必须满足复杂度要求
参见下文。
利用可逆加密存储口令
允许在Windows中检索口令。
绝对不要启用该选项,除非应用程序的要求优先于安全口令的要求。
(该策略不适用于SQL Server。
)
口令过期日
口令的最长存在时间
口令的最短存在时间
帐户锁定策略
帐户锁定持续时间
帐户锁定的持续时间(以分钟计)。
当锁定阈值>0时,Windows将启用该策略。
帐户锁定阈值
不成功登录尝试的最大次数。
时间到后即可重置帐户锁定计数器
多久之后Windows将重置不成功尝试的计数器。
当锁定阈值>0时,Windows将启用该选项。
如未运行Windows Server 2003或更新版本,SQL Server仍利用简单的检查方法,强行应用口令强度,以阻止以下口令:
∙Null或空口令
∙与计算机或登录名相同
∙Password、admin、administrator、sa、sysadmin等口令
相同的复杂度标准被应用给在SQLServer中创建及使用的所有口令,包括sa登录的口令、应用程序角色、用于加密的数据库主密钥以及对称加密密钥。
SQLServer默认情形下总会检查口令策略,但利用CREATELOGIN或ALTERLOGIN语句,可取消对个别登录的强行应用,代码如下:
CREATELOGINbobWITHPASSWORD='S%V7Vlv3c9Es8',
CHECK_EXPIRATION=OFF,CHECK_POLICY=OFF
CHECK_EXPIRATION使用Windows Server 2003策略的“口令最大和最小年龄”部分,而CHECK_POLICY使用其他的策略设置。
管理设置还允许启用或关闭口令策略检查、启用或关闭口令过期检查,并在用户第一次登录时强行修改口令。
CREATELOGIN中的MUST_CHANGE选项强行让用户修改下次登录时的口令。
在客户端,它允许在登录时修改口令。
所有新型客户端数据访问技术都支持该特性,包括OLEDB和ADO.NET以及客户端工具,如ManagementStudio。
如果用户的不成功登录次数过多,超出了口令策略允许的尝试次数,SQLServer将根据Windows策略中的设置锁定该帐户。
管理员可利用ALTERLOGIN语句取消锁定该帐户:
ALTERLOGINaliceWITHPASSWORD='3x1Tq#PO^YIAz'UNLOCK
端点验证
SQLServer 2008支持传统的二进制TabularDataStream(表格数据流),客户端利用该数据流通过HTTP访问数据,也可通过HTTP访问本地XMLWeb服务。
允许通过HTTP进行访问的主要好处就是,任何理解Web服务协议的客户端软件和开发工具都可访问存储在SQLServer中的数据。
这表示SQLServer 2008可以提供独立的Web服务方法,它也是ServiceOrientedArchitecture(面向服务的体系结构,SOA)中的一个完整端点。
将SQLServer 2008用作Web服务主机需要两步通用操作,每一步都有很多变化:
定义存储过程和用户定义的函数,以提供Web服务方法;定义HTTP端点,以通过HTTP接收方法调用,并将其转给适当的过程。
本文主要介绍其中涉及到安全问题。
有关配置及使用HTTP端点的详情,请参阅SQLServerBooksOnline中的CREATEENDPOINT(Transact-SQL)部分。
由于默认情形下SQLServer中的XMLWeb服务使用HTTP和80端口,因此大多数防火墙都允许流量通过。
但是,不受保护的端点其实是潜在的攻击载体,必须对其施加保护,因此SQLServer提供了强大的验证和授权机制。
默认情形下,SQLServer没有任何端点,用户必须拥有高级权限,以创建、更改及启用HTTP端点。
SQL Server 2008提供了五种不同的验证类型,与IIS用于网站验证的方法类似。
∙Basic验证
基本验证是HTTP1.1协议的一部分,它以base-64编码的明文传送登录凭证。
凭证必须映射到Windows登录,然后SQLServer利用该凭证授权给对数据库资源的访问。
如果使用Basic验证,就无法将PORTS自变量设为CLEAR,反之必须将其设为SSL,并通过SSL利用数字证书加密与客户端软件的通信。
∙Digest验证
Digest验证也是HTTP1.1的一部分。
在将凭证发送给服务器之前,它利用MD5对凭证进行杂散化,这样就无法通过电线发送它们,即使采用加密形式也是如此。
凭证必须映射到有效的Windows域帐户,且不能使用本地的用户帐户。
∙NTLM验证
NTLM使用的是挑战响应协议,该协议最初是在MicrosoftWindows NT®中最先得到应用的,自此之后得到了Windows所有版本客户端和服务器的支持。
当客户端和服务器都使用Windows系统时,它提供了安全验证机制,而且需要有效的域帐户。
∙Kerberos验证
Kerberos验证是Windows 2000及更新版本才有的特性,它以许多操作系统中都有的行业标准协议为基础。
它允许执行相互验证,其中客户端和服务器都有理由相信对方的身份,并提供高级别的验证形式。
为利用WindowsServer 2003中的Kerberos特性,必须通过HTTP.sys以及作为WindowsSupportToos一部分的SetSPN.exe实用工具,注册KerberosServicePrincipalName(Kerberos服务主体名,SPN)。
∙Integrated验证
Integrated验证提供了最好的NTLM和Kerberos验证。
服务器将使用其中的一种验证类型并输入客户端请求,允许执行客户端支持的最安全验证,同时使旧版Windows也能使用该服务。
可在Windows2003中配置Http.sys,使之与客户端协商要采用的协议。
用于端点的验证方法是通过CREATE或ALTERENDPOINT语句的AUTHENTICATION属性设置的。
例如,下列代码将创建利用Kerberos执行验证的端点:
CREATEENDPOINTmyEndpoint
STATE=STARTED
ASHTTP(PATH='/MyHttpEndpoint',
AUTHENTICATION=(KERBEROS),
PORTS=(CLEAR),
SITE='MySqlServer')
FORSOAP(WSDL=DEFAULT,
DATABASE='myDB',
NAMESPACE='
SQLServer2008支持侦听HTTP和用户定义的TCP端口的端点。
也可对请求进行各种格式化:
SOAP、Transact-SQL、ServiceBroker专用格式以及数据库镜像专用格式。
使用SOA时,可利用WS-Security标题验证SQL Server登录。
Microsoft已实现了WebService端点验证,以支持各种协议和规范,本文只介绍其中几种。
需要显式地启用验证选项,并确保客户端能够提供必要的凭证类型。
一旦SQLServer完成对客户端的验证,就可以为登录有权访问的资源授权,如下节所述。
授权
验证完成后,就该考虑已验证登录可以执行的操作了。
在这个方面,SQL Server 2008和SQLServer2005比旧版更灵活。
权限的粒度更细,这样即可授予必要的特定权限,而不是授予固定角色的成员,以免其权限超出需要。
现在有了更多的实体和安全实体,因此可为其分配粒度更细的权限。
除了增强对用户数据的保护,与特定安全实体有关的结构信息和元数据现在只能供拥有访问该安全实体权限的主体使用。
进一步而言,可以利用某种机制创建定制的权限集,该机制允许定义可运行存储过程的安全上下文。
此外,SQLAgent利用灵活地代理方案允许工作步骤运行以及访问必要的资源。
所有这些特性都使得SQLServer更加灵活、更加安全。
细粒度权限
SQL Server 2008和SQLServer2005比旧版安全的诸多方面之一就是改进了权限的粒度。
以前,管理员必须授予用户固定服务器角色或固定数据库角色的成员,以执行特定的操作,但这些角色的权限通常会远远超出简单任务的需要。
“最少特权”的原则要求用户只能拥有完成工作所需的最低权限,因此为达到小目标而分配用户高级角色就违背了该原则。
从SQLServer2000开始,固定服务器和数据库角色集已发生了巨大变化,当用户或应用程序需要所有或大多数已定义的权限时,仍可利用这些预定义的权限。
或许最大的变化就是添加了public服务器角色。
但是,“最少特权”的原则要求用户不能使用无法恰好提供主体完成工作所需权限的角色。
虽然为发现及分配主体所需权限需要更多工作,但这会带来更加安全的数据库环境。
主体和安全实体
在SQL Server 2008中,“主体”就是可以访问受保护资源且能获得访问资源所需权限的任何个人、组或流程。
与旧版SQLServer一样,可以在Windows中定义主体,也可将没有对应Windows主体的SQLServer登录作为其基础。
下面的列表显示了SQLServer2008主体的层次结构,但不包括固定服务器和数据库角色,还显示了将登录和数据库用户映射为安全对象的方法。
主体的影响范围取决于它的定义范围,这样Windows级别的主体就比SQLServer级别的主体拥有更大的影响范围,而后者的影响范围又大于数据库级别的主体。
每个数据库用户都会自动隶属于固定的public角色。
Windows级别的主体
∙Windows域登录
∙Windows本地登录
∙Windows组
SQLServer级别的主体
∙SQLServer登录
∙映射为Windows登录的SQLServer登录
∙映射为证书的SQLServer登录
∙映射为不对称密钥的SQLServer登录
数据库级别的主体
∙数据库用户
∙映射为SQLServer登录的数据库用户
∙映射为Windows登录的数据库用户
∙映射为证书的数据库用户
∙映射为不对称密钥的数据库用户
∙数据库角色
∙应用程序角色
∙公共角色
授权的另一部分就是可用以保护权限授予操作或拒绝授予操作的对象。
图4列出了SQL Server 2008中安全实体对象的层次结构。
在服务器级别,可以保护网络端点,以控制进出服务器的通信通道,以及数据库、绑定角色和登录。
在数据库和架构级别,用户创建的每一个对象都被当作安全主体,包括那些驻留在架构中的对象。
服务器
数据库
端点
远程绑定
路由
SQLServer登录
图4:
SQLServer2008中的安全实体对象层次结构
角色和权限
要了解可在SQLServer中可用的权限数量,可以调用fn_builtin_permissions系统函数:
SELECT*FROMsys.fn_builtin_permissions(default)
下面是SQLServer2005中的新权限类型:
∙CONTROL。
授予与所有者类似的权限,可有效地将所有已定义的权限授予对象及其范围内的所有对象,包括能够授予其他被授予者任何权限。
CONTROLSERVER相当于授予sysadmin特权。
∙ALTER。
授予权限以更改安全实体对象的任何属性,但修改所有权除外。
从本质上讲,它将为同一范围内的ALTER、CREATE或DROP安全实体对象授予权限。
例如,为数据库授予ALTER权限就可以修改它的表。
∙ALTERANY<安全实体对象>。
授予权限以修改指定类型的任何安全实体对象。
例如,授予ALTE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL Server 安全性概述 安全性 概述