面向数据库管理员的SQL Server 2008安全性概述
2010-03-06 15:43:13 来源:WEB开发网Digest 验证
Digest 验证也是 HTTP 1.1 的一部分。在将凭证发送给服务器之前,它利用 MD5 对凭证进行杂散化,这样就无法通过电线发送它们,即使采用加密形式也是如此。凭证必须映射到有效的 Windows 域帐户,且不能使用本地的用户帐户。
NTLM 验证
NTLM 使用的是挑战响应协议,该协议最初是在Microsoft WindowsNT® 中最先得到应用的,自此之后得到了 Windows 所有版本客户端和服务器的支持。当客户端和服务器都使用 Windows 系统时,它提供了安全验证机制,而且需要有效的域帐户。
Kerberos 验证
Kerberos 验证是 Windows2000 及更新版本才有的特性,它以许多操作系统中都有的行业标准协议为基础。它允许执行相互验证,其中客户端和服务器都有理由相信对方的身份,并提供高级别的验证形式。为利用 Windows Server2003 中的 Kerberos 特性,必须通过 HTTP.sys 以及作为 Windows Support Toos 一部分的 SetSPN.exe 实用工具,注册 Kerberos Service Principal Name(Kerberos 服务主体名,SPN)。
Integrated 验证
Integrated 验证提供了最好的 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 专用格式以及数据库镜像专用格式。使用 SOA 时,可利用 WS-Security 标题验证 SQLServer 登录。
Microsoft 已实现了 Web Service 端点验证,以支持各种协议和规范,本文只介绍其中几种。需要显式地启用验证选项,并确保客户端能够提供必要的凭证类型。一旦 SQL Server 完成对客户端的验证,就可以为登录有权访问的资源授权,如下节所述。
授权
验证完成后,就该考虑已验证登录可以执行的操作了。在这个方面,SQLServer2008 和 SQL Server 2005 比旧版更灵活。权限的粒度更细,这样即可授予必要的特定权限,而不是授予固定角色的成员,以免其权限超出需要。现在有了更多的实体和安全实体,因此可为其分配粒度更细的权限。
除了增强对用户数据的保护,与特定安全实体有关的结构信息和元数据现在只能供拥有访问该安全实体权限的主体使用。
进一步而言,可以利用某种机制创建定制的权限集,该机制允许定义可运行存储过程的安全上下文。此外,SQL Agent 利用灵活地代理方案允许工作步骤运行以及访问必要的资源。所有这些特性都使得 SQL Server 更加灵活、更加安全。
细粒度权限
SQLServer2008 和 SQL Server 2005 比旧版安全的诸多方面之一就是改进了权限的粒度。以前,管理员必须授予用户固定服务器角色或固定数据库角色的成员,以执行特定的操作,但这些角色的权限通常会远远超出简单任务的需要。“最少特权”的原则要求用户只能拥有完成工作所需的最低权限,因此为达到小目标而分配用户高级角色就违背了该原则。
从 SQL Server 2000开始,固定服务器和数据库角色集已发生了巨大变化,当用户或应用程序需要所有或大多数已定义的权限时,仍可利用这些预定义的权限。或许最大的变化就是添加了 public 服务器角色。但是,“最少特权”的原则要求用户不能使用无法恰好提供主体完成工作所需权限的角色。虽然为发现及分配主体所需权限需要更多工作,但这会带来更加安全的数据库环境。
- ››数据库大型应用解决方案总结
- ››面向对象的JavaScript (一、对象基础,使用函数来...
- ››面向对象数据库 db4o 之旅,第 4 部分: 使用 dRS
- ››面向 Java Web 应用程序的 OpenID,第 2 部分: 为...
- ››面向 Java 开发人员的 db4o 指南: 简介和概览
- ››面向 Java 开发人员的 db4o 指南: 查询,更新和一...
- ››面向 Java 开发人员的 db4o 指南: db4o 中的数据库...
- ››面向 Java 开发人员的 db4o 指南: 超越简单对象
- ››面向 Java 开发人员的 db4o 指南: 结构化对象和集...
- ››面向 Java 开发人员的 db4o 指南: 事务、分布和安...
- ››面向 Java Web 应用程序的 OpenID,第 1 部分:在...
- ››面向数据库管理员的SQL Server 2008安全性概述
更多精彩
赞助商链接