logo资料库

SQLServer安全性文档.doc

第1页 / 共24页
第2页 / 共24页
第3页 / 共24页
第4页 / 共24页
第5页 / 共24页
第6页 / 共24页
第7页 / 共24页
第8页 / 共24页
资料共24页,剩余部分请下载后查看
面向数据库管理员的 SQL Server 2008 安全性概述
版权
目录
导言
安全配置
Windows Update
外围应用配置
验证
口令策略强制
端点验证
授权
细粒度权限
主体和安全实体
角色和权限
元数据安全
SQL Server Agent 代理
执行上下文
用户/架构分离
加密和密钥管理
数据加密
透明数据加密
扩展的密钥管理
代码模块签名
SQL Server 2008中的审核
所有动作审核
DDL触发器
结束语
面向数据库管理员的 SQL Server 2008 安全性概述 SQL Server 技术文章 作者:Don Kiely 更新:Geoff Allix(内容主管) 技术审查:Sethu Kalavukar、Sameer Tejani、Al Comeau、Rob Walters 和 Niraj Nagrani 出版日期:2007 年 10 月 适用产品:SQL Server 2008 摘要:SQL Server 2008 在设计、默认和部署方面均提供了保护措施。Microsoft 承诺在必要时将 交换有关线程、对策和安全增强的信息,以尽量保证数据安全。本文涉及 SQL Server 2008 的一些 最重要的安全特性。它将告诉管理员如何安全地安装 SQL Server,以及如何在应用程序和用户使用 其中存储的数据时,仍能保证其安全。
版权 这是一份预备文档,在本文档中所述软件的最终商业版本发布之前,该文档的内容可能会发生重大变化。 本文档中提供的信息代表了 Microsoft Corporation 当前(软件发布之前)对所讨论问题持有的观点。因为 Microsoft 必须 响应不断变化的市场条件,所以其当前的观点不应被解释为是一种承诺,软件发布之后,Microsoft 不能保证现在所提供的所 有信息准确无误。 这份白皮书仅供参考。Microsoft 对本文档中提供的信息不做任何担保、明示、暗示或法律方面的承诺。 用户有责任遵守所有适用的版权法。在版权权利限制下,未经 Microsoft 公司明确的书面许可,本文档的任何内容不能被复 制、存储或放进检索系统,或者以任何形式或任何手段(电子、机械、复印、录制或其他)或为达到任何目的进行转换。 Microsoft 对本文档涵盖的主题内容可能拥有专利、专利申请、商标、版权或其他知识产权。没有来自 Microsoft 的任何书面 许可协议的明确表示,本文档不赋予您对这些专利、商标、版权或其他知识产权的任何许可。  2007 Microsoft Corporation。保留所有权利。 Microsoft、Windows 和 SQL Server 是 Microsoft Corporation 在美国和/或其他国家的注册商标或商标。 本文档中提及的真实的公司和产品名称可能是其各自所有者的商标。
目录 简介 ............................................................................................ 错误!未定义书签。 安全配置 .......................................................................................错误!未定义书签。 Windows Upade .......................................................................错误!未定义书签。 外围应用配置 ............................................................................ 错误!未定义书签。 验证 ............................................................................................ 错误!未定义书签。 口令策略强化 ............................................................................ 错误!未定义书签。 端点验证 ..................................................................................错误!未定义书签。 授权 ............................................................................................ 错误!未定义书签。 细粒度权限 ............................................................................... 错误!未定义书签。 主体和安全实体 .................................................................... 错误!未定义书签。 角色和权限 .......................................................................... 错误!未定义书签。 元数据安全 ............................................................................... 错误!未定义书签。 SQL Server Agent 代理 ............................................................. 错误!未定义书签。 执行上下文 ............................................................................... 错误!未定义书签。 用户/架构分离 ........................................................................... 错误!未定义书签。 加密和密钥管理 ................................................................................................... 14 数据加密 ..................................................................................错误!未定义书签。 透明数据加密 .............................................................................................16 可扩展的密钥管理 ....................................................................................... 16 代码模块签名 .............................................................................................16 SQL Server 2008 中的审核 .................................................................................17 所有动作审核 ..................................................................................................18 DDL 触发器 ................................................................................................... 19 结束语 ......................................................................................... 错误!未定义书签。
SQL Server 2008 Security Overview for Database Administrators 1 导言 随着越来越多的网络相互连接,安全性也变得日益重要。公司的资产必须受到保护,尤其是数据库, 它们存储着公司的宝贵信息。安全是数据引擎的关键特性之一,保护企业免受各种威胁。Microsoft® SQL Server™ 2008 安全特性的宗旨是使其更加安全,且使数据保护人员能够更方便地使用和理解 安全。 在过去几年中,世界各地的人们对于安全的、基于计算机的系统有了更深刻的理解。Microsoft 在此 过程中一直处于前沿,而 SQL Server 就是落实这种理解的首批产品之一。它实现了重要的“最少特 权”原则,因此不必授予用户超出工作所需的权限。它提供了深层次的防御工具,可以采取措施防御 最危险黑客的攻击。 关于 Microsoft 首创的 Trustworthy Computing 技术,已经有了很多文献和讨论,它可指导公司的 所有软件开发。有关更多信息,请参阅 Trustworthy Computing 网站: (http://www.microsoft.com/mscorp/twc/default.mspx)。 该首创技术的 4 个核心组件为:  Secure by design。作为抵御黑客及保护数据的基础,软件需要进行安全设计。  Secure by default。系统管理员不必操心新安装的安全,默认设置即可保证。  Secure in deployment。软件自身应能更新最新的安全补丁,并能协助维护。  Communications。交流最佳实践和不断发展的威胁信息,以使管理员能够主动地保护系统。 这些指导准则在 SQL Server 2008 中均得到了体现,它提供了保护数据库所需的所有工具。 本文介绍了系统和数据库管理员需要掌握的最重要的安全特性。首先介绍如何安全地安装和配置 SQL Server 2008。它讨论了验证和授权特性,这些特性用以控制对服务器的访问,并规定用户一旦 通过验证就可以执行的操作。最后介绍管理员需要理解的数据库安全特性,以便为数据库以及访问这 些数据库的应用程序提供安全的环境。 安全配置 要安全地安装 SQL Server,必须有一个安全的环境。对于运行 SQL Server 2008 的服务器,其外 部安全要求没有太多改变。需要保护服务器的物理安全,并要定期备份数据,如果联网,还须将其放 到一个或多个防火墙后面,避免在运行其他服务器应用程序的计算机上安装 SQL Server,且要尽可 能减少必要的网络协议数量。要在 Microsoft Windows Server® 2003 或 Microsoft Windows Server® 2008 计算机上安装 SQL Server,以使它能充分利用操作系统级的安全保护措施。此 外,最安全的方案就是安装到一个或多个 NTFS 分区上。 有了安全的环境,接下来最关键的就是安全地安装 SQL Server 2008。安装程序执行所有的常规安 装任务,其自带的 System Configuration Checker 将通知用户可能导致问题的任何不足之处。默 认情况下,安装 SQL Server 2008 并不能启用所有特性。而是只安装核心组件以及常用特性。生产 环境中可能用不到的其他特性默认是关闭的。可以使用该产品支持的工具启用所需特性。 这些都是 Trustworthy Computing 技术中 secure by default 特性的一部分。这表示在安装时, SQL Server 2008 可利用默认的安全设置集实现开箱即用的安全性。基本数据库服务器不需要的特 性并未被安装,目的是为了减少外围应用。由于默认情形下并未在所有系统中启用所有特性,因此在 安装系统镜像时引入了异质性。这一点限制了启用易受潜在攻击的特性的系统数量,因此有助于防御 大规模攻击或蠕虫病毒。 Windows Update 在企业中部署 SQL Server 之后,就能发现新的威胁和漏洞。Windows Update 旨在确保及时下载 并应用能够显著减少特定安全问题的补丁。可以利用 Windows Update 自动应用 SQL Server 2008 补丁,并减少由于已知的软件漏洞所导致的威胁。在大多数企业环境中,应使用 Windows Server Update Service(WSUS)管理补丁在组织内部的分发和更新。 Microsoft Corporation ©2007
SQL Server 2008 Security Overview for Database Administrators 2 外围应用配置 SQL Server 2008 具有大量特性,其中有许多在安装时处于禁用状态。例如,CLR 集成、数据库镜 像、调试、Service Broker 以及邮件功能虽被安装,但未运行且不可用,除非显式地启用或对其进 行配置。该设计与 SQL Server “默认保证安全”思路的“减少外围应用”原则保持一致,可以减小 攻击表面。如果特性不可用或未被启用,攻击者就不能利用它。 这样做的代价就是,要花些时间搜寻启用特性的所有 Transact-SQL 语句。即使发现 sp_configure system 存储过程可以满足很多需要,仍须编写并不直观的如下代码: sp_configure 'show advanced options', 1 reconfigure with override sp_configure 'clr enabled', 1 由于配置选项过多,编写此类代码很耗时间,尤其是在组织中部署了多个 SQL Server 实例时更是如 此。SQL Server 2008 带有基于策略的管理技术,名为 Declarative Management Framework (声明管理框架,DMF)。DMF 提供了大量的配置 facet,其中的每一个都定义了一组相关的配置设 置或属性。可以利用这些 facet 创建一些为配置选项指定所需设置的“条件”,并将这些条件作为 “策略”应用给企业中的 SQL Server 实例。 SQL Server 2008 自带的一个 facet 就是 Surface Area,可以利用该 facet 定义用以控制各种 SQL Server 2008 特性状态的策略。通过创建为服务器定义所需外围应用设置的策略,可以方便地 在组织中所有的 SQL Server 上配置最小的外围应用,并减小恶意攻击的可能性。 验证 在数据和服务器都需要保护,而且不想承受如今互联网上常见的无情攻击之际,Microsoft 开发了 SQL Server 2000。基本的验证问题依然存在:您是谁?您如何证明自己的身份?但是, SQL Server 2008 提供了更健壮的验证特性,对服务器的安全便捷有着更好的支持,放行好人并阻 止坏人。 SQL Server Authentication 利用包含用户 id 和口令的简单连接字符串,为基于非 Windows 的客 户端或应用程序提供了验证机制。这种登录易于使用,很受应用程序开发人员的欢迎,它的安全性不 如 Windows 验证机制,因此在验证机制中不推荐使用。 SQL Server 2008 改进了 SQL Server Authentication 选项。首先,默认情形下它利用 SQL 生 成的证书支持通道的加密。管理员不必获取或安装有效的 SLL 证书,以确保 SQL 凭证流经的通道是 安全的。由于 SQL Server 2008 自动生成这些证书,因此在传送登录数据包时,默认情形下它将自 动加密通道。如果客户端使用 SQL Server 2005 或更新版本,即可使用该特性。 注意:SQL Server 生成的本地证书可保护被动的中间人攻击,其中的攻击者会嗅探网络。要更 有效地系统免受被动中间人攻击,应部署并使用客户端也信任的证书。 SQL Server 2008 进一步增强了 SQL Server Authentication,因为在与 Windows 2003 服务 器或更新版本一起使用时,默认情形下数据库引擎将利用 Windows Group Policy 检查 SQL 登录的 口令复杂度、口令过期日以及帐户锁定状态。这表示可以对 SQL Server 帐户强行应用 Windows 口 令策略。 口令策略强制 有了 SQL Server 2008,口令策略强制特性被内置到服务器中。作为 Windows Server 2003 NetAPI32 库的一部分,SQL Server 利用 NetValidatePasswordPolicy() API 根据 Windows 的口令强度、过期日和帐户锁定状态策略,在验证以及口令设置、重置期间验证口令的有 效性。表 3 列出来构成该策略的各种设置。 Microsoft Corporation ©2007
SQL Server 2008 Security Overview for Database Administrators 3 表 3 Windows Server 2003 口令策略组件 类别 名称 注释 口令策 略 强行应用口令历 史记录 防止用户重用旧口令,如交替使用两个口令。 参见下文。 允许在 Windows 中检索口令。绝对不要启用该选项,除非应用程序的 要求优先于安全口令的要求。(该策略不适用于 SQL Server。) 最短的口令长度 口令必须满足复 杂度要求 利用可逆加密存 储口令 口令过 期日 口令的最长存在 时间 口令的最短存在 时间 帐户锁 定策略 帐户锁定持续时 间 帐户锁定的持续时间(以分钟计)。当锁定阈值>0 时,Windows 将启 用该策略。 帐户锁定阈值 不成功登录尝试的最大次数。 时间到后即可重 置帐户锁定计数 器 多久之后 Windows 将重置不成功尝试的计数器。当锁定阈值>0 时, Windows 将启用该选项。 如未运行 Windows Server 2003 或更新版本,SQL Server 仍利用简单的检查方法,强行应用口 令强度,以阻止以下口令:  Null 或空口令  与计算机或登录名相同  Password、admin、administrator、sa、sysadmin 等口令 相同的复杂度标准被应用给在 SQL Server 中创建及使用的所有口令,包括 sa 登录的口令、应用程 序角色、用于加密的数据库主密钥以及对称加密密钥。 SQL Server 默认情形下总会检查口令策略,但利用 CREATE LOGIN 或 ALTER LOGIN 语句,可 取消对个别登录的强行应用,代码如下: CREATE LOGIN bob WITH PASSWORD = 'S%V7Vlv3c9Es8', CHECK_EXPIRATION = OFF, CHECK_POLICY = OFF CHECK_EXPIRATION 使用 Windows Server 2003 策略的“口令最大和最小年龄”部分,而 CHECK_POLICY 使用其他的策略设置。 管理设置还允许启用或关闭口令策略检查、启用或关闭口令过期检查,并在用户第一次登录时强行修 改口令。CREATE LOGIN 中的 MUST_CHANGE 选项强行让用户修改下次登录时的口令。在客户 端,它允许在登录时修改口令。所有新型客户端数据访问技术都支持该特性,包括 OLE DB 和 ADO.NET 以及客户端工具,如 Management Studio。 如果用户的不成功登录次数过多,超出了口令策略允许的尝试次数,SQL Server 将根据 Windows 策略中的设置锁定该帐户。管理员可利用 ALTER LOGIN 语句取消锁定该帐户: ALTER LOGIN alice WITH PASSWORD = '3x1Tq#PO^YIAz' UNLOCK Microsoft Corporation ©2007
SQL Server 2008 Security Overview for Database Administrators 4 端点验证 SQL Server 2008 支持传统的二进制 Tabular Data Stream(表格数据流),客户端利用该数据 流通过 HTTP 访问数据,也可通过 HTTP 访问本地 XML Web 服务。允许通过 HTTP 进行访问的主 要好处就是,任何理解 Web 服务协议的客户端软件和开发工具都可访问存储在 SQL Server 中的数 据。这表示 SQL Server 2008 可以提供独立的 Web 服务方法,它也是 Service Oriented Architecture(面向服务的体系结构,SOA)中的一个完整端点。 将 SQL Server 2008 用作 Web 服务主机需要两步通用操作,每一步都有很多变化:定义存储过程 和用户定义的函数,以提供 Web 服务方法;定义 HTTP 端点,以通过 HTTP 接收方法调用,并将其 转给适当的过程。本文主要介绍其中涉及到安全问题。有关配置及使用 HTTP 端点的详情,请参阅 SQL Server Books Online 中的 CREATE ENDPOINT(Transact-SQL)部分。 由于默认情形下 SQL Server 中的 XML Web 服务使用 HTTP 和 80 端口,因此大多数防火墙都允 许流量通过。但是,不受保护的端点其实是潜在的攻击载体,必须对其施加保护,因此 SQL Server 提供了强大的验证和授权机制。默认情形下,SQL Server 没有任何端点,用户必须拥有高级权限, 以创建、更改及启用 HTTP 端点。 SQL Server 2008 提供了五种不同的验证类型,与 IIS 用于网站验证的方法类似。  Basic 验证 基本验证是 HTTP 1.1 协议的一部分,它以 base-64 编码的明文传送登录凭证。凭证必须映射 到 Windows 登录,然后 SQL Server 利用该凭证授权给对数据库资源的访问。如果使用 Basic 验证,就无法将 PORTS 自变量设为 CLEAR,反之必须将其设为 SSL,并通过 SSL 利用数字证 书加密与客户端软件的通信。  Digest 验证 Digest 验证也是 HTTP 1.1 的一部分。在将凭证发送给服务器之前,它利用 MD5 对凭证进行杂 散化,这样就无法通过电线发送它们,即使采用加密形式也是如此。凭证必须映射到有效的 Windows 域帐户,且不能使用本地的用户帐户。  NTLM 验证 NTLM 使用的是挑战响应协议,该协议最初是在 Microsoft Windows NT® 中最先得到应用的, 自此之后得到了 Windows 所有版本客户端和服务器的支持。当客户端和服务器都使用 Windows 系统时,它提供了安全验证机制,而且需要有效的域帐户。  Kerberos 验证 Kerberos 验证是 Windows 2000 及更新版本才有的特性,它以许多操作系统中都有的行业标 准协议为基础。它允许执行相互验证,其中客户端和服务器都有理由相信对方的身份,并提供高 级别的验证形式。为利用 Windows Server 2003 中的 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), Microsoft Corporation ©2007
分享到:
收藏