在SQL Server 2008中提出了一套新的管理机制,就是所谓的基于策略的管理(姑且可以称为PBM)。它的主要优势如下

  • 按需管理:PBM提供了系统配置的逻辑视图,因此DBA们可以预先定义各自所需要的数据服务配置,而不用等到这些需要实际发生的时候再去配置。
  • 智能监控:PBM可以持续监控系统的配置变化,并阻止那些违反了策略的配置变化操作。
  • 虚拟管理:通过PBM,DBA们可以对多台服务器进行规模化管理,在企业内部统一实施某些强制性配置会变得更加方便。

简单地说,基于策略管理的两个方面是:评估和监视。

  • SQL Server 2008的PBM支持4种执行模式,这4种模式决定了策略对目标的影响程度。这四种模式分别是:

    • 按需(On Demand):这种模式下的策略可以有管理员自由的选择是否应用,例如管理员可以手动调用这些策略来检查目标的依从性,或者通过DDL Trigger来订阅这些策略。
    • 更新时阻止(On Change - Prevent):这是最严格的一种,SQL Server 2008通过DDL Trigger的方式在订阅该策略的目标上发生操作时实施检查操作对策略的符合性,如果违反策略则回滚该操作,以达到强制策略的效果。
    • 更新时记录(On Change - Log Only):SQL Server 2008通过Event Notification的机制在在订阅该策略的目标上发生操作时实施检查操作对策略的符合性,如果违反策略则发送消息,就将该违反操作通过Service Broker的队列发送进行记录。
    • 按计划(On Schedule):通过SQL Agent的作业来调用策略对目标对象进行检查。

基于策略管理的术语

  • 对象(Facets):包括策略管理中某个方面的相关配置属性。例如在Surface Area中包括了像Database Mail Enabled以及CLR Integration Enabled之类的SQL Server功能的属性。
  • 条件(Conditions):表示一个方面的状态。条件是基于单个方面的,并且可以被一个或多个策略使用。例如,DBA可以建立一个名为Minimal Surface Area的条件,在这个条件中将Surface Area Facet中的所有属性都设置为False。
  • 策略(Policies):包括了用于约束单个或多个目标的条件。例如DBA可以创建一个名为Locked Down Server的策略,在这一策略中将Minimal Surface Area条件指派给某台服务器。
  • 类别(Categories):包含一条或多条策略。数据库拥有者可以将一个或多个分类绑定到数据库上。例如,DBA可以创建一个名为Corporate DB Policies的分类,其中包含一条强制数据库对象命名规则的策略和一条强制数据库兼容级别的策略,并将该分类绑定到业务数据库上。通常所有数据库都绑定到默认分类,但是可以在服务器或数据库级别上将分类设置为激活(Active)或暂停(Inactive),这样管理员就可以灵活控制策略的强制性。
  • 目标(Targets):目标代表像服务器、数据库、登录、表以及其他数据库对象各种被指派策略的实体。在一个SQL Server实例中的所有目标组成了一个目标层级。对于某个策略,DBA可以通过对目标层级进行筛选来定义一个目标集合。例如,DBA可以定义一个包含Production架构拥有的所有索引的目标集合。

为策略检查配置警报

如果某项策略被违反,SQL Server 2008会生成相应的警报,因此可以通过在SQL Agent中配置警报来监控这些事件

执行模式

事件号

On Change - Prevent

(if automatic)

34050

On Change - Prevent

(if On Demand)

34051

On schedule

34052

On change

34053

策略管理的安全性

属于PolicyAdministratorRole的成员才可以制定和修改策略定义,这个角色的成员是必须要小心控制的,因为恶意用户可以通过制定苛刻的策略来达到类似于拒绝服务攻击的效果。

【备注】这个角色是在MSDB里面

基于策略管理的常规配置步骤为:

  1. 根据Facet创建Condition,Condition可以作为Policy的检查条件,也可以是用于确定策略应用范围的筛选条件。
  2. 引用已经创建好的策略来定义策略,同时可以在策略检查条件可以应用的对象集上附加筛选条件,例如一个检查Multiple Part Name对象状态的策略就可以有表、存储过程、视图、同义词等一系列的对象可以进行选择并附加筛选条件,默认的筛选条件是Every,也就是这个对象集中所有的对象。当然不是所有条件都可以充当筛选条件的,在二月CTP的测试中就发现包含LIKE运算符的表达式的条件就不能充当筛选条件。
  3. 如果需要可以在Server Restriction中定义需要应用策略的SQL实例条件。
  4. 如果需要还可以在Policy Management节点上定义策略组,并在策略的定义中将策略归入某个类别,然后由服务器管理员或数据库拥有者订阅某个策略组。不过要注意看看我的前一个帖子,默认策略组都是强制订阅的,要启用自选订阅要在策略组管理中设置。
  5. 然后就等着策略帮你自动管理SQL Server了,这就看策略定义时选择的执行模式了。

我们下面用一个例子来演示一下如何使用策略进行管理工作。

我们的需求是:管理员需要确保服务器上所有数据库中的存储过程都是加密过的

1. 创建条件(Condition)。

点击“新建条件”

输入名称,在“方面”里面选择“存储过程”

在表达式中,“字段”中选择“@IsEncrypted”,“值”设置为True(默认为True)

作为演示,其他的内容我们就不设置了。直接点击“确定”关闭“创建新条件”对话框。我们可以在对象资源管理器中看到新增加的一个条件。如下图所示

2. 创建一个策略(Policy)

接下来,我们基于这个条件创建文明的策略。

点击“新建策略”

输入一个名称,并且在“检查条件”中选择刚才创建号的“存储过程是否加密”这个条件。默认情况下,会有另外一些设置。如下图

作为演示的第一个步骤,我们先不对其他选项做任何设置。直接点击“确定”退出该对话框

3. 启用该策略

策略创建好之后,默认是没有启用的。我们必须通过菜单进行启用

很不幸,我们点击“启用”之后,会收到下面的一个错误消息

这个消息提示说:按需模式不支持“启用”。也就是说,如果按需评估,则不需要启用。

其实,按需的意思就是手工评估。

4. 使用该策略对数据库进行按需评估

现在我们有了这么一个策略,我们怎么样验证某个数据库中的存储过程是否满足该策略的要求呢?

选择刚才创建好的策略,然后右键菜单中点击“评估”

这个工具就会检测当前服务器上面所有数据库中的所有存储过程是否已加密。在上面的对话框中,还可以点击“导出结果”得到一个xml文件,可以作为其他用途,例如编写专门的报告

与此同时,我们还可以直接针对某个特定的存储过程进行评估


选中策略后,点击“评估”

评估的结果仍然是没有通过,因为我们的存储过程没有加密。

5. 使用策略进行主动监控。

与评估不同,监控则有主动性。例如,如果我们在服务器上启用了该策略,那么任何存储过程在被增加或者修改的时候,我们就可以主动干预,确保它必须加密。

我们再来看一下评估模式

这四种模式中,其实分为两大类

“按需”和“按计划”这两种很类似,都是作为评估用的。他们的评估结果大多数通过“查看历史记录”的方式进行查看的。他们的区别只是在于“按计划”是一个排好的日程,定期自动做的,而“按需”是全靠手工地做

而“更改时:仅记录”和“更改时:禁止”则带有主动性。

两者的区别在于前者仅仅做记录,而后者可以明确地阻止用户的操作。

6. 使用“更改时:禁止”这种评估模式进行工作。

我们要实现的需求就是,如果用户新建存储过程,不进行加密,就不允许保存。

我们首先将策略的评估模式更改为“更改时:禁止”,并且选中“已启用”的复选框。然后点击“确定”关闭该对话框

接下来,我们尝试去创建一个很简单的存储过程

这个语句太平常不过了。也没有任何问题。然后我们点击F5,执行代码

我们收到了这么一个消息,说是因为不匹配策略,所以被回滚了。有点神奇对吧

那么,我们怎么样才能成功创建该存储过程呢?我们需要做的是,修改存储过程的代码,指定为其加密

这样的话,该存储过程就可以被创建了。如下

需要注意观察一下它的图标,右下角带有一个小锁,这就表示该存储过程被加密了。加密的意思是不允许查看源代码。(不管你用哪种方式)

7. 关于策略的其他好处

上面我们完整地演示了如何使用策略进行评估或者监视的过程。那么,是不是说每一台服务器都需要我们这样一步一步地创建条件,创建策略呢?

显然不是的,基于策略的管理机制的好处就在于策略本身可以复用,实现一次定义,多次使用。

第一步,我们可以把策略导出

导出的是一个XML文件。里面包含了有关条件和策略的定义

为了做测验,我把刚才创建好的条件和策略都删除掉。下面来看看,如果通过导入策略的方式来部署。

点击“确定”之后,我们很高兴地看到条件和策略都被重新创建了

我们选中“存储过程必须经过加密”这个策略,右键菜单中选择“评估”,它可以正常工作,这证明我们导入是成功的。

SQL Server 2008 : 基于策略的管理(Policy-Based Management)相关推荐

  1. SQL Server 2008基于策略的管理

    基于策略的管理(Policy Based Management),使DBA们可以制定管理策略,并将这些策略应用到服务器.数据库以及数据环境中的其他对象上去.经过精心设计的管理策略可以帮助DBA们对数据 ...

  2. SQL Server 2008备份策略设计下(六)

    上一篇博文探讨了各种恢复模式和备份类型,这一节继续来探讨如何设计备份策略.设计一个数据库的最佳备份策略,会面临如何选择使用哪种恢复模式的问题,因为恢复模式控制着备份和还原的行为.一般来讲,简单恢复模式 ...

  3. Windows Server 2008 将与 Visual Studio 2008 和 SQL Server 2008 于2008年2月27 日在洛杉矶共同发布...

    微软公司刚刚在全球伙伴大会 (Worldwide Partner Conference) 上郑重宣布,Windows Server 2008 将与 Visual Studio 2008 和 SQL S ...

  4. 详细介绍微软SQL Server 2008

    SQL Server 2008是一个重大的产品版本,它推出了许多新的特性和关键的改进,使得它成为至今为止的最强大和最全面的SQL Server版本.这篇文章详细介绍了Microsoft SQL Ser ...

  5. 微软 Sql Server 2008

    详细介绍微软SQL Server 2008 http://dev.yesky.com/264/7681264_4.shtml 2007-11-25 09:00 作者: 戴羽 出处: IT专家网 责任编 ...

  6. SQL Server 2008新特性——SSMS增强

    SQL Server 2008已经发布很多天了,今天来总结一下我们最常用的工具SSMS在SQL 2008中的一些改进: 1.在注册的服务器组中一次SQL查询可以针对多个服务器执行. 首先是要在&quo ...

  7. SQL Server 2008系统的系统数据库

    系统数据库是指安装程序一起安装,用于协助SQL Server 2008系统共同完成管理操作的数据库,它们是SQL Server 2008运行的基础.它们分别是:master.model.tempdb. ...

  8. Microsoft 数据库三版本共存:SQL Server 2000(SP4) + SQL Server 2005(SP2) + SQL Server 2008

    Microsoft 数据库三版本共存: SQL Server 2000(SP4) + SQL Server 2005(SP2) + SQL Server 2008 一.服务项: 1.SQL Serve ...

  9. SQL Server安全性和基于策略的管理–高级条件

    The policy core consists of conditions and targets. Moreover, complex targets are defined by additio ...

最新文章

  1. redux middleware 源码分析
  2. 常见的浏览器兼容性问题与解决方案——CSS篇
  3. 深入理解 C 指针阅读笔记 -- 第三章
  4. UML设计,可以设计程序的用例图、类图、活动图等_SurfaceView
  5. JavaWeb:Tomcat下配置数据源连接数据库
  6. 【运筹学】线性规划 单纯形法 ( 基矩阵 | 基变量 | 非基矩阵 | 非基变量 | 矩阵分块形式 | 逆矩阵 | 基解 | 基可行解 )
  7. cocos2d-x游戏循环与调度
  8. 梯度下降法,牛顿法,高斯-牛顿迭代法,附代码实现
  9. [系统安全] 六.逆向分析之条件语句和循环语句源码还原及流程控制
  10. idea编辑器无法识别jdk
  11. mysql 触发器计算总价,mysql’插入’触发器根据其他字段计算字段
  12. oracle 证书编号,说说Oracle的rowid
  13. tmux鼠标操作配置
  14. UnityShader27:屏幕雾效
  15. Python While 循环语句
  16. 爬取小说《重生之狂暴火法》 1~140章
  17. JS根据城市名称获取所在省份
  18. Office2013 Visio2013 Project2013零售版与VL版互相转换
  19. 刚入职的新人如何快速了解公司业务
  20. 关于AD与KiCad绘制PCB的一点看法

热门文章

  1. Evidence gathering tools
  2. 昨天521表白失败,我想用Python分析一下...表白记录和聊天记录
  3. 超全PHP学习资源整理:入门到进阶系列
  4. java设计模式建造_java设计模式-建造者模式
  5. SpringSecurity用数据库信息做认证
  6. Nginx server_name精确匹配配置
  7. RocketMQ中的Topic和JMS的queue有什么区别?
  8. 思考一下消息中间件的设计
  9. 策略模式Strategy Pattern应用场景
  10. SpringMVC的请求-获得请求参数-自定义类型转换器