技术开发 频道

DBA必读:SQL Server 2008安全概述


  3.2 终端验证

  SQL Server 2008支持传统的用于客户端访问数据的二进制表格数据流(Tabular Data Stream),还支持本地的使用HTTP的XML Web service 访问。允许通过HTTP来访问的主要好处是了解Web service的任何客户端软件和开发工具都可以访问存储在SQL Server中的数据。这意味着SQL Server 2008可以提供独立的Web service 方法,并且是服务面向架构(SOA)中的一个完整的终端。

  使用SQL Server 2008作为一个Web service 主机需要两个常规步骤,每一个都有许多可能:定义存储过程和用户定义的提供了Web service方法的功能、定义一个通过HTTP接收方法调用和将它们发送到适合的过程中去的HTTP终端。这篇白皮书专注于相关的安全问题。要查看配置和使用HTTP终端的细节,请查看SQL Server在线书籍的CREATE ENDPOINT(Transact-SQL)。

  因为SQL Server 中的XML Web service使用HTTP和默认情况下的80端口,大多数防火墙允许它通过。然而,一个不受保护的终端对于攻击者来说是一个潜在的美味,你必须保护它,所以SQL Server 拥有强大的验证和授权能力。默认情况下,SQL Server 没有任何终端,你不得不具有一个高级别的权限来创建、修改和开启HTTP终端。

   SQL Server 2008提供了五个验证类型,和IIS用于网站验证所使用的类似。

  · 基本验证

  基本验证是HTTP 1.1协议的一部分,它将登陆凭证放在基于-64编码的文本中传输。这个凭证必须与一个Windows登陆相匹配,然后SQL Server 使用它来验证对数据库资源的访问。如果你使用基本验证,你不能将PORTS参数设置为CLEAR ,而是必须设置它为SSL,并使用一个SSL的数字证书来加密与客户端软件的通信。

  · 摘要验证

  摘要验证也是HTTP 1.1协议的一部分。它在发送给服务器之前使用MD5哈希了凭证以便它不能通过电线发送它们,甚至是以加密的形式。这个凭证必须匹配一个有效的Windows域帐户;你不能使用本地用户帐户。

  · NTLM验证

  NTLM使用一开始在Microsoft Windows NT?中推出的挑战响应协议,并在之后的所有的Windows客户端和服务器版本中获得支持。它在客户端和服务器都是Windows系统时提供了安全验证,并要求一个有效的域帐户。

  · Kerberos验证

  Kerberos验证在Windows 2000和之后的版本中有效,它基于一个在许多操作系统中可用的行业标准协议。它允许相互验证,其中客户端和服务器都会一定程度上确定另一个的验证,并提供一个非常安全的验证形式。为了在Windows Server 2003上使用Kerberos,你必须使用SetSPN.exe工具用Http.sys注册Kerberos服务主体名称(Service Principal Name,SPN),SetSPN.exe工具是Windows支持工具的一部分。

  · 集成验证

  集成验证提供了最好的NTLM和Kerberos 验证。服务器使用客户端所要求的这两个验证类型之一,允许客户端支持最安全的验证,同时使得服务可用于Windows的之前版本。你可以在Windows 2003中配置Http.sys以决定它应该使用哪个协议。

  这个用于终端的验证方法使用CREATE或ALTER ENDPOINT语句的AUTHENTICATION属性来设置。例如,下面的代码创建了一个使用Kerberos来验证的终端:
CREATE ENDPOINT myEndpoint   STATE=STARTED   AS HTTP (PATH = '/MyHttpEndpoint',   AUTHENTICATION = (KERBEROS),   PORTS = (CLEAR),   SITE = 'MySqlServer')   FOR SOAP (WSDL = DEFAULT,   DATABASE = 'myDB',   NAMESPACE = 'http://example.com/MySqlServer/myDB/WebService')
  SQL Server 2008支持监听HTTP和在TCP上的用户定义的端口的终端。你还可以使用许多格式来格式化请求:SOAP、Transact-SQL 、专用于Service Broker 的格式、和另一个用于数据库镜像的格式。当使用SOAP时,你可以利用Web服务安全性(WS-Security)头来验证SQL Server 登陆。

  Microsoft 实行Web Service 终端验证来支持极广泛的协议和规格,本篇白皮书描述了其中的一部分。你将需要打开你的验证选项并确保客户端可以提供所需的凭证类型。一旦SQL Server 验证通过了客户端,你就可以授予这个登陆被授权可以访问的资源,如下一节所描述的。

  4. 授权

  在验证之后,该考虑验证过的登陆可以做些什么了。在这个领域,SQL Server 2008和SQL Server 2005比之前的版本更加灵活。现在的权限更加细粒度了,因此你可以授予所要求的专门的权限,而不是授权给具有一个固定角色的成员,这很可能会承载比它所需的权限更多的权限。你现在具有更多的要保护的实体,你可以对它们分配更细粒度的权限。

  除了加强用户数据的保护,关于一个细粒度的要保护的结构信息和元数据现在只可用于具有权限访问这要保护的信息的主体。

  此完,还可以使用一个机制创建定制权限集合,这个机制允许一个人定义安全上下文,存储过程可以运行在这个上下文之下。

  此外,SQL Agent 使用灵活的代理scheme 来允许工作步骤运行和访问所要求的资源。所有这些特性使得SQL Server更加复杂但是更加安全。
0
相关文章