使用基于策略的管理来管理服务器
基于策略的管理是一种用于管理一个或多个 SQL Server 2008 实例的系统。当 SQL Server 策略管理员使用基于策略的管理时,他们使用 SQL Server Management Studio 创建策略以管理服务器上的实体,例如,SQL Server 实例、数据库或其他 SQL Server 对象。
基于策略的管理包含以下三个组件:
策略管理
策略管理员创建策略。
显式管理
管理员选择一个或多个管理目标,并显式地检查这些目标是否符合特定策略,或者显式地使这些目标符合策略。
评估模式
共有四种评估模式,其中的三种模式可以自动执行:
按需。当用户直接指定这种模式时,它可对策略进行评估。
更改时: 禁止。这种自动模式使用 DDL 触发器来防止违反策略。
重要提示 如果禁用了嵌套触发器服务器配置选项,“更改时: 禁止”将不会正常工作。基于策略的管理依靠 DDL 触发器来检测和回滚不符合使用此评估模式的策略的 DDL 操作。删除基于策略的管理 DDL 触发器或禁用嵌套触发器将导致此评估模式失败或意外执行。
更改时: 仅记录。当做出相关更改时,这种自动模式使用事件通知对策略进行评估。
按计划。这种自动模式使用 SQL Server 代理作业定期对策略进行评估。
在未启用自动策略时,基于策略的管理不会影响系统性能。
基于策略的管理术语和概念
基于策略的管理目标
基于策略的管理所管理的实体,例如,SQL Server 数据库引擎实例、数据库、表或索引。服务器实例中的所有目标构成了目标层次结构。目标集是将一组目标筛选器应用于目标层次结构后得到的一组目标,例如,HumanResources 架构所拥有的数据库中的所有表。基于策略的管理方面
一组逻辑属性,用于模拟某些类型的管理目标的行为或特征。这些属性的数量和特征内置在方面中,只能由方面创建者添加或删除这些内容。一种目标类型可以实现一个或多个管理方面,而一个管理方面可以由一种或多种目标类型进行实现。方面的某些属性仅适用于特定版本。例如,外围应用配置器方面的数据库邮件属性仅适用于 SQL Server 2005 及更高版本。基于策略的管理条件
一个布尔表达式,用于针对管理方面指定基于策略的管理托管目标的一组允许状态。基于策略的管理策略
基于策略的管理条件和预期行为,例如,评估模式、目标筛选器以及计划。每个策略只能包含一个条件。您可以启用或禁用策略。基于策略的管理策略类别
用于帮助管理策略的用户定义类别。用户可以将策略划分到不同的策略类别。每个策略属于一个策略类别,且仅属于一个策略类别。策略类别应用于数据库和服务器。在数据库级别,应用以下条件:数据库所有者可以为数据库订阅一组策略类别。
仅订阅类别中的策略能够控制数据库。
所有数据库隐式订阅默认策略类别。
在服务器级别,策略类别可以应用于所有数据库。
有效策略
目标的有效策略是那些控制此目标的策略。仅当满足所有以下条件时,策略才对目标有效:已启用此策略。
目标属于此策略的目标集。
目标或目标祖先之一订阅了包含此策略的策略组。
使用基于策略的管理解决的问题示例
基于策略的管理有助于解决在以下情况下出现的问题:
公司策略禁止启用数据库邮件或 SQL Mail。创建了一个策略以检查这两个功能的服务器状态。管理员将服务器状态与策略进行比较。如果服务器状态不符合策略,管理员将选择“配置”模式,并且使服务器状态符合策略。
AdventureWorks 数据库的命名约定要求所有存储过程以字母 AW_ 开头。创建了一个策略以强制实施此策略。管理员对此策略进行测试,并找到一组不符合策略的存储过程。如果将来的存储过程不符合此命名约定,这些存储过程的创建语句将会失败。
允许的评估模式
策略评估模式是由策略所使用的基于策略的管理方面的特征确定的。所有方面都支持**“按需”和“按计划”。如果某些事件可以捕获方面状态的更改,则方面支持“更改时: 仅记录”。如果更改方面状态的 DDL 语句具有事务支持,则方面支持“更改时: 禁止”**。可以启用和禁用按这三种执行模式之一自动执行的策略。
在 SQL Server Management Studio 中,**“评估策略”**对话框提供了两个可用于运行策略的选项:
评估
这将针对所选目标评估策略。应用
这使您能够将更改应用到违反策略的适用目标。一些目标无法通过基于策略的管理进行配置。例如,如果您正在评估备份和数据文件是否存在于不同的设备上,则基于策略的管理可以检测到违反此情况的行为;但您不能通过基于策略的管理应用更改来强制策略兼容。
策略管理
策略是使用 Management Studio 创建和管理的。此过程包括以下步骤:
选择一个基于策略的管理方面,其中包含要配置的属性。
定义一个条件以指定管理方面状态。
定义一个策略,其中包含该条件、用于筛选目标集的附加条件以及评估模式。
检查 SQL Server 实例是否符合该策略。
对于失败的策略,对象资源管理器以红色图标的形式指示严重运行状态警告,此图标位于该目标以及对象资源管理器树中此目标上面的节点旁边。
策略存储
策略存储在 msdb 数据库中。在更改策略或条件后,应对 msdb 进行备份。有关详细信息,请参阅备份 model 和 msdb 数据库时的注意事项。
SQL Server 2008 包括可用于监视 SQL Server 实例的策略。默认情况下,数据库引擎中未安装这些策略;不过,可以从默认安装位置 C:\Program Files\Microsoft SQL Server\100\Tools\Policies\DatabaseEngine\2052 导入这些策略。有关详细信息,请参阅如何导出和导入基于策略的管理策略。
可以使用**“文件”/“新建”**菜单直接创建策略,然后将这些策略保存到文件中。这样,在未连接到数据库引擎实例的情况下也可以创建策略。
在当前数据库引擎实例中评估的策略的策略历史记录保存在 msdb 系统表中。不会保留应用于其他数据库引擎实例、Reporting Services 或 Analysis Services 的策略的策略历史记录。有关详细信息,请参阅对基于策略的管理策略进行故障排除。
配置警报以通知策略管理员策略失败情况
在使用三种自动评估模式之一的模式执行基于策略的管理策略时,如果发生违反策略的情况,则会在事件日志中写入消息。若要在事件日志中写入此消息时得到通知,您可以创建一个警报以检测此消息并执行操作。该警报应检测下表所示的消息。
执行模式 |
消息号 |
---|---|
更改时: 禁止 (如果为自动) |
34050 |
更改时: 禁止 (如果为按需) |
34051 |
按计划 |
34052 |
更改时 |
34053 |
若要设置警报以响应基于策略的管理错误消息,请参阅以下主题:
有关警报的其他注意事项
请注意下面有关警报的其他注意事项:
仅为启用的策略引发警报。由于无法启用**“按需”**策略,因此,不会为按需执行的策略引发警报。
如果要执行的操作包括发送电子邮件,您必须配置邮件帐户。建议您使用数据库邮件。有关如何设置数据库邮件的详细信息,请参阅如何创建数据库邮件帐户 (Transact-SQL)。
警报安全性:
在按需评估策略时,将会在用户的安全上下文中执行这些策略。若要写入错误日志,用户必须具有 ALTER TRACE 权限或者是 sysadmin 固定服务器角色的成员。具有更低权限的用户评估的策略不会写入事件日志,并且不会触发警报。
自动执行模式是以 sysadmin 角色成员的身份执行的。这样,策略便可以写入错误日志并引发警报。
安全性
管理基于策略的管理要求具有 msdb 数据库中 PolicyAdministratorRole 角色的成员身份。此角色具有系统上的所有策略的完全控制权。这种控制权包括创建和编辑策略和条件以及启用和禁用策略。
安全说明 |
---|
可能的凭据提升:具有 PolicyAdministratorRole 角色的用户可以创建服务器触发器并计划策略执行,这可能会影响数据库引擎实例的正常运行。例如,PolicyAdministratorRole 可以创建一个策略,它可能会禁止在数据库引擎中创建大多数对象。由于这种可能的凭据提升,只应将 PolicyAdministratorRole 角色授予可信任其控制数据库引擎配置的用户。 |
将遵循以下安全原则:
系统管理员或数据库所有者可以为数据库订阅策略或策略组。
PolicyAdministratorRole 角色的成员可以启用或禁用策略。
PolicyAdministratorRole 成员可以创建没有即席执行权限的策略,但具有足够权限的其他用户运行这些策略时,可以成功执行这些策略。
安全说明 可能的凭据提升:具有 PolicyAdministratorRole 角色的用户可以创建一些策略,其中包含使用 ExecuteSql 或 ExecuteWql 函数的条件。如果具有 sysadmin 权限的用户以后执行此策略,则以执行此策略的用户具有的 sysadmin 权限执行策略管理员提供的 Transact-SQL。
即席策略是在用户的安全上下文中执行的。
采用**“按计划”**评估模式的策略使用 sa 登录帐户所拥有的 SQL Server 代理作业。
使用基于策略的管理的注意事项
注意策略会影响某些 SQL Server 功能的工作方式。例如,变更数据捕捉和事务复制都使用没有索引的 systranschemas 表。如果启用所有表都必须有索引的策略,则强制策略的兼容会导致这些功能都失效。