SQL Server 2008

安全性

Rick Byham

 

概览:

  • 加密增强功能
  • 身份验证增强功能
  • 安全审核
  • 基于策略的管理

SQL Server 2008 提供了许多旨在改善数据库环境的总体安全性的增强功能和新功能。它增加了密钥加密和身份验证功能,并引入了新的审核系统,以

帮助您报告用户行为并满足法规要求。

在本文中,我将向您简要介绍 SQL Server® 2008 的存储安全性方面的最重要变化。您首先可能会注意到的是已不再提供 SQL Server 2005 外围应用配置器工具。外围应用配置器工具所提供的协议选项现由配置管理器工具提供。但是,现在是使用新的 SQL Server 2008 基于策略的管理框架来执行启用和禁用功能。

加密增强功能

在加密方面有两个主要改进。第一,SQL Server 现在可以使用存储在外部第三方硬件安全模块上的加密密钥。第二,对于存储在 SQL Server 中的数据,可采用对连接到该数据库的应用程序透明的方法来对其进行加密。即意味着数据库管理员可轻松地对整个数据库中存储的所有数据进行加密,而不必修改现有的应用程序代码。

第一个改进是通过新的可扩展密钥管理 (EKM) 功能来实现的,在 SQL Server 2008 Enterprise、Developer 和 Evaluation 版本中提供有该功能。EKM 使企业密钥管理和硬件安全模块 (HSM) 解决方案的第三方供应商可在 SQL Server 中注册其设备。一旦注册了这些设备,用户便可使用这些模块中存储的加密密钥。

此类供应商甚至还可在这些模块中提供高级加密功能(如密钥老化和密钥轮换)。在某些配置中,它允许使用并非系统管理员组成员的数据库管理员所提供的数据保护。随后,T-SQL 加密语句可使用存储在外部 EKM 设备上的密钥来加密和解密数据。

另一新功能是透明数据加密,它允许您在不必更改任何应用程序的情况下加密数据库文件。它可对数据和日志文件执行实时 I/O 加密和解密。加密所使用的数据库加密密钥 (DEK) 存储在数据库引导记录中,以便在恢复时仍可使用。DEK 的安全则由存储在服务器主数据库中的一个证书来保证。图 1 中的图表显示了实现透明数据加密的体系结构。

Figure 1 透明数据加密的体系结构

Figure 1** 透明数据加密的体系结构 **(单击该图像获得较大视图)

它对于保护空闲数据非常有用。尽管可使用多种防范措施来帮助保护数据库的安全(如加密机密资产和为数据库服务器安装防火墙),但存储数据库的物理介质(甚至备份磁带)还是有其他漏洞。恶意用户可盗取该介质,并且有可能访问到介质中存储的数据。

但是,透明数据加密可加密数据库中的敏感数据,并且使用证书来保护用于加密数据的密钥。它可帮助您的组织遵循与正确保护数据相关的众多法律、法规和行业准则。

透明数据加密允许软件开发人员使用高级加密标准 (AES) 和三重数据加密标准 (3DES) 加密算法来加密数据。数据库文件的加密是在页面级执行的,在写入磁盘之前加密页面,然后在读入内存时进行解密。对于启用了透明数据加密的数据库备份文件,也使用数据库加密密钥进行了加密。

要恢复已加密的数据库,您必须有权访问用于加密数据库的证书或非对称密钥。如果没有证书或非对称密钥,您将无法恢复数据库。因此,请务必保留访问相关备份所需的任意密钥。

身份验证增强功能

您可能知道,Kerberos 是一种网络身份验证协议,用于为网络中的客户端和服务器实体(或安全主体)进行相互验证提供一种高度安全的方法。Kerberos 可帮助用户减少安全漏洞(如引诱攻击和中间人攻击。与 Windows® NTLM 身份验证相比,Kerberos 更安全、更可靠,并且提供更好的性能。

要使用 Kerberos 对连接进行相互身份验证,必须在 Active Directory® 中注册 SQL Server 实例的服务主体名称 (SPN),并且客户端驱动程序必须在连接时提供已注册的 SPN。在 SQL Server 2008 中,Kerberos 身份验证已扩展到所有网络协议,包括 TCP、命名管道、共享内存和虚拟接口适配器 (VIA)。默认情况下,客户端驱动程序会自动推断出所连接 SQL Server 实例的正确 SPN。还可在连接字符串参数中显式指定 SPN,以提供更好的安全性、控制和故障排除功能。

Internet 信息服务 (IIS) 不再提供对 ASP.NET、报表管理器或报表服务器 Web 服务的访问。在 SQL Server 2008 中,报告服务通过新的身份验证子系统来处理所有的身份验证请求,该子系统支持基于 Windows 的身份验证和自定义身份验证。

报告服务现在包含内置到 SQL Server 公共语言运行库 (CLR) 中的 Microsoft® .NET Framework 和 ASP.NET 技术,并且报告服务还可以使用操作系统的 HTTP.SYS 功能。报表服务器包括一个 HTTP 侦听程序,以接受定向到在服务器配置过程中所定义的 URL 和端口处的请求。URL 保留和注册现由报表服务器通过 HTTP.SYS 直接管理。

安全审核

SQL Server Audit 是一项新功能,可通过它来创建自定义的数据库引擎事件审核。该功能使用扩展事件来记录审核信息,并且提供在各种服务器和数据库对象上启用、存储和查看审核所需的工具和过程。

SQL Server Audit 还比 SQL Server Trace 更快,并且 SQL Server Management Studio 使审核日志的创建和监控变得简单。现在,审核级别更加精细,甚至可以捕获单个用户的 SELECT、INSERT、UPDATE、DELETE、REFERENCES 和 EXECUTE 语句。另外,SQL Server Audit 可通过 T-SQL 语句 CREATE SERVER AUDIT 和 CREATE SERVER AUDIT SPECIFICATION 以及相关的 ALTER 和 DROP 语句来实现完全脚本化。

要建立审核,需创建审核并指定记录所审核事件的位置。审核可保存到 Windows 安全日志、Windows 应用程序日志或指定位置的文件中。为审核命名并配置其特征(如审核文件的路径和最大大小)。还可选择在审核失败时关闭 SQL Server。如果需将所审核事件记录到多个位置,只需创建多个审核即可。

下一步是创建一个或多个审核规范。服务器审核规范收集有关 SQL Server 实例的信息,并且包括服务器范围内的对象(如登录和服务器角色成员身份)。它还包括在主数据库中管理的数据库信息(如数据库访问权限)。在定义审核规范时,需指定由哪个审核来接收监控事件。可定义多个服务器审核和多个服务器审核规范,但每个服务器审核每次仅可包含一个已启用的服务器审核规范。

也可创建用于监控单个数据库中事件的数据库审核规范。可向一个审核添加多个数据库审核规范,但一个服务器审核一次仅可为每个数据库启用一个数据库审核规范。

用于服务器审核规范的 SQL Server 审核操作事件被分组到相关审核操作事件集合中。它们以审核操作组形式公开。当把某个组添加到审核规范时,您将监控到该组中包含的所有事件。例如,有一个名为 DBCC_GROUP 的审核操作组,它使用 DBCC 命令。但是,无法单独审核 DBCC 命令。

服务器可用的审核操作组有 35 个,其中一些组又彼此密切相关。例如,有 SUCCESSFUL_LOGIN_GROUP、FAILED_LOGIN_GROUP 和 LOGOUT_GROUP。还有一个 AUDIT_ CHANGE_GROUP,包含可用于对审核过程进行审核的审核操作类型。

数据库审核规范也可指定收集到数据库级别审核操作组中的审核操作事件组。除审核操作组外,数据库审核规范还可包括对审核数据操作语言语句进行审核的单独审核操作事件。可将这些事件配置为监控整个数据库,或仅监控特定数据库对象。例如,SELECT 审核操作可用于审核对单个表或整个架构的 SELECT 查询。也可将这些事件配置为监控特定用户或角色(如所有 db_writer)的操作。

例如,可使用 SELECT 审核操作来审核用户 Mary 或 FINANCE_DEPT 数据库角色或公共数据库角色对单个表的 SELECT 查询。很明显,它在创建所需审核方面提供了极大的控制功能和灵活性。

依赖关系报告

依赖关系报告有所改进,包括有新的目录视图和新的系统功能。如果使用 sys.sql_expression_dependencies、sys.dm_sql_referencing_entities 和 sys.dm_sql_referenced_entities,可针对架构绑定对象和非架构绑定对象的服务器之间、数据库之间以及数据库 SQL 依赖关系提供报告。

新的数据库角色

msdb 数据库中包含的数据库角色发生了一些变化。db_dtsadmin 角色已重命名为 db_ssisadmin,db_dtsltduser 角色已重命名为 db_ssisltduser,并且 db_dtsoperator 角色已重命名为 db_ssisoperator。为支持向后兼容性,在服务器升级时,将把原来的角色添加为新角色的成员。

除这些更改外,还添加了新的数据库角色来支持 SQL Server 2008 的新功能。特别地,msdb 数据库包含用于服务器组的新角色(ServerGroupAdministratorRole 和 ServerGroupReaderRole)、用于基于策略的管理的新角色 (PolicyAdministratorRole) 和用于数据收集器的新角色(dc_admin、dc_operator 和 dc_proxy)。并且,管理数据仓库数据库也包含用于数据收集器的新角色(mdw_admin、mdw_writer 和 mdw_reader)。

FILESTREAM 安全性

现在,SQL Server 支持 FILESTREAM 存储,因而 SQL Server 应用程序可在文件系统中存储非结构化数据(如文档和图像)。反过来,它意味着客户端应用程序可从文件系统的流式 API 和性能获益,同时仍维持非结构化数据和对应结构化数据之间的事务一致性。

FILESTREAM 数据必须存储在 FILESTREAM 文件组中 — 它是包含文件系统目录而非实际文件的特殊文件组。这些称为数据容器的目录提供数据库引擎存储和文件系统存储之间的接口。

从安全性方面看,FILESTREAM 数据与所有其他数据的安全性相同 — 在表级别或列级别授予权限。授予对 FILESTREAM 容器的 NTFS 权限的唯一帐户是运行 SQL Server 服务的帐户。当数据库处于打开状态时,SQL Server 会限制对 FILESTREAM 数据容器的访问,使用 T-SQL 事务和 OpenSqlFilestream API 进行的访问除外。

基于策略的管理

SQL Server 2008 基于策略的管理为管理 SQL Server 提供了一个新系统。可创建策略来测试和报告 SQL Server 的多个方面,并且可将策略应用于单个数据库、单个 SQL Server 实例或所管理的所有 SQL Server。

通过使用基于策略的管理,可测试 SQL Server 配置选项和许多安全设置。并且,对于某些安全设置,可创建策略来检测不符合法规的数据库服务器,并采取措施强制其遵守法规。

在 SQL Server 2008 中,默认禁用了许多不必要的功能,以最小化遭受攻击的风险。可使用基于策略的管理来有选择性地启用所需的任何其他功能。然后,可定期评估配置,如果发现配置设置与策略不匹配,会收到警报。

基于策略的管理将相关属性归纳成组,并将其放到称为层面的组件中。例如,外围应用配置器层面包含用于即席远程查询、CLR 集成、数据库邮件、OLE 自动化、远程 DAC、SQL 邮件、Web 助手和 xp_cmdshell 的属性。可创建策略来启用 CLR 集成但禁用所有其他功能。策略可包含复杂的条件语句,如禁用除名为 Customer_Response 以外的所有 SQL Server 实例的数据库邮件。

创建完策略后,可在所有服务器上评估该策略,以生成报告来告知您哪些服务器不遵守该策略。按“Configure”(配置)按钮,所有不符合策略的实例都将配置该策略设置。还应制定计划定期运行该策略,以监控服务器的状态。为数据库引擎、分析服务和报告服务提供了外围应用配置器层面。

但是,请注意,基于策略的管理并不旨在用作安全强制执行机制。在大多数情况下,拥有足够特权的用户可发出违反策略的语句,或忽略策略并执行可能违反安全策略的重新配置操作。SQL Server 2008 基于策略的管理仅应视为监控 SQL Server 安全设置方面的助手。

层面强制执行设置的能力各有不同,具体取决于其相关 DDL 语句能否在非自动提交模式下运行。有时,层面可强制在数据库引擎实例上实施某个配置设置,但管理员仍可重新配置设置。有些层面可通过服务器触发器来强制实施 — 从而可以防止低权限用户更改设置,并降低管理员意外地更改设置的机率。此时,管理员必须先暂时禁用该策略,然后才能更改设置。其他一些层面仅报告属性的状态,而无法更改属性。例如,检查对称或非对称密钥长度的策略(如图 2 所示)。

Figure 2 非对称密钥的层面

Figure 2** 非对称密钥的层面 **(单击该图像获得较大视图)

大部分数据库对象类型都有层面,其中许多层面都可用于安全设置。例如,登录层面可确定是否针对每个登录强制执行密码策略,而存储过程层面则可检测所有过程是否已加密。其他层面可测试用户、架构、加密提供程序、通用标准符合性和 C2 审核的属性。

Windows Server 2008

SQL Server 2008 已在开启防火墙的 Windows Server® 2008 中经过完整测试。现在正好来回顾一下如何配置防火墙设置。Windows Server 2008 还提供用户访问控制(如果使用过 Windows Vista®,您可能对其已经有所了解)。它限制了您作为管理用户而自动获得的权限。这些功能将影响所有版本的 SQL Server。

总结

安全性一直都是 SQL Server 致力改善的一个领域。加密和身份验证增强功能提供了新的功能,而新的审核系统和 SQL Server 2008 基于策略的管理则为您提供新工具来监控安全合规性的状态。

Rick Byham 于 1995 年加入 Microsoft。他先是一名“客户支持服务”的 SQL Server 支持工程师,后来又加入 Microsoft Learning 的 SQL Server 团队。在 2003 年,他调到“SQL Server 联机丛书”团队担任技术撰稿人,目前负责安全性文档。可通过 rick.byham@microsoft.com 与 Rick 联系。

© 2008 Microsoft Corporation 与 CMP Media, LLC.保留所有权利;不得对全文或部分内容进行复制.