了解SQL Server 2008 R2数据库审计流程(上)

日期: 2010-07-07 作者:Denny Cherry翻译:冯昀晖 来源:TechTarget中国 英文

SQL Server 2008引入了审计的概念,前面的版本只允许我们对基本的登录成功和失败记录错误日志,该新版本的功能远远超出了之前版本。   有了这种高级审计功能,DBA们在SQL Server中可以在各种层面创建审计策略。你可以审计实例级信息(比如登录),数据库级变更,也可以针对像SELECT和UPDATE语句这类对象的数据操纵语言(DML)做审计。   当你配置审计时,你可以利用SQL Server Management Studio(SSMS)创建一次性的审计配置。

你还可以利用T-sql脚本创建你的审计策略,然后利用那些脚本在你的企业范围内多台服务器上定义相同的策略。   在创建你的审……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

SQL Server 2008引入了审计的概念,前面的版本只允许我们对基本的登录成功和失败记录错误日志,该新版本的功能远远超出了之前版本。

  有了这种高级审计功能,DBA们在SQL Server中可以在各种层面创建审计策略。你可以审计实例级信息(比如登录),数据库级变更,也可以针对像SELECT和UPDATE语句这类对象的数据操纵语言(DML)做审计。

  当你配置审计时,你可以利用SQL Server Management Studio(SSMS)创建一次性的审计配置。你还可以利用T-sql脚本创建你的审计策略,然后利用那些脚本在你的企业范围内多台服务器上定义相同的策略。

  在创建你的审计策略之前,你要做一些决定。很明显,你需要决定审计什么信息,而且你还必须搞清楚你想把审计记录保存在哪里。在后一点上,你有几种不同方案可选;你可以把信息存储到服务器硬盘的平面文件,Windows 应用日志,或者Windows安全日志。虽然你可以在技术上把审计设置为写到远程服务器上的网络共享,但是这种做法一般不提倡,因为如果网络存储位置被重启了,而你的SQL Server处于接收连接的联机状态,那你就可能会丢失审计信息。这可能导致你的SQL Server审计跟踪出现漏洞,无论什么审计在驱动审计数据收集都会引起失败。

  在SQL Server中创建审计

  在开始审计数据之前,首先你需要告诉SQL Server你想把审计信息保存到哪里。在本文中,我会把审计信息写入到D盘“Audit”文件夹中的一个平面文件中。我们可以在后续用SQL Server集成服务(SSIS)导入那些文件。要做到这一点,需要首先在对象资源管理器中连接到服务器,然后找到服务器名>安全>审计。在“审计”上右击,然后在打开的上下文菜单中选择新建审计。然后你会看到一个界面,填写信息以后大概如下图所示:

  图1:在SQL Server 2008中创建审计(点击放大)。

  如你所见,除了给审计命名,你还可以设置队列延时(我会在后面解释这个概念),设置保存审计信息的位置,以及每个文件占磁盘空间的最大容量(如果你使用磁盘文件做存储的话)。

  如果你利用应用程序日志或者安全事件日志保存审计信息,你需要知道在填写内容时如何配置这些日志。如果你选择了“审计日志故障时关闭服务器”选项,这一点尤为重要。

  审计名称域的名称非常具有自解释性,它仅仅记录审计的名称。SQL Server将自动为你生成一个名称,你既可以保留该名称,也可以把它修改为比“审计-{日期}-{时间}”更有意义的名称。

  队列延时域告诉SQL Server在强迫处理之前,允许在队列里保留多少审计数据。我喜欢这样理解它:

  “在宿主数据库出现磁盘意外损坏的问题时,在不违反制度要求的情况下,允许丢失多少审计数据?”

  该文本框可以接受从0到2,147,483,647毫秒(24天,20小时,31分钟,23.647秒)之间的值。值0会把审计从异步处理过程变成同步流程,这样审计信息会被实时(而不是事后)写到设定的审计存储位置。

  “审计日志故障时关闭服务器”选项使你从“应该审计”模式变成“必须审计”模式。如果由于某种原因,SQL Server不能给指定的目标位置保存审计信息,SQL Server实例将会关闭。(如何设置该选项)与你所在的行业有关,也与SQL Server服务和审计的用途有关,在涉及启用该设置时你必须发起判断是否要启用的请求。例如,如果你的工作在银行,这是你使用的主数据库,保存了所有的账户信息,那么你可能想启用该选项。然而,如果你的工作在书店,数据库中保存的只是你书店图书的详细清单,你可能不需要启用该设置。

  如果你选择记录日志文件,你还会看到另外一些选项,比如保留的文件数量,每个文件多大,当然还有保存到哪里的选项。关于在哪里存储审计文件,SQL Server要求这里填写一个有效路径,而不是光指定一个文件名,因为它会在写文件时给你创建文件名。

  设置以文件方式保存时有一些特殊参数,第一个参数是最大滚动文件数,它告诉SQL Server要在磁盘上保留多少个审计文件。第二个设置告诉SQL Server每个文件最大容量大小。默认情况下,这些参数都被设置为“不受限制”,它表示SQL Server会保留审计信息,直到你指定保存审计数据的磁盘被写满。就我个人而言,我推荐设置文件最大容量为1GB或者小于1GB,这样就保证文件足够小,在磁盘空间不足时,你可以方便地根据需要转移这些文件。然后,你可以根据审计人员希望保存的审计数据量需要指定滚动文件数量(或者管理方面愿意提供更多存储能力也行)。

  界面上的最后一项设置是保护区磁盘空间设置。这个参数告诉SQL Server给审计文件预分配空间,这样一旦审计文件创建以后,该文件的整个预分配的空间都是可用的。那样的话,在文件使用过程中,磁盘不会忽然就空间不足。在磁盘上记录审计信息日志时,你需要确保运行SQL Server的账号在NTFS格式文件夹下有创建文件的权限。

  现在,如果你想用T-SQL在多台服务器上运行脚本来设置,给它们应用相同的配置,请看图2。

  图2:利用T-SQL为多台服务器创建审计(点击放大)。

相关推荐

  • 如何为你的数据库事务日志减肥?

    在大多数SQL Server的工作环境中,尤其是在OLTP环境中,数据库的事务日志性能出现瓶颈时往往会导致事务完成需要更多的时间。

  • 管理Azure SQL数据库的授权安全性

    本文深入介绍了一些支持细粒度控制数据访问的Azure SQL数据库授权方法,它们最多可以深入到控制各个数据库对象和语句类型。

  • 深入了解SQL Server审计工具

    微软公司在发布SQL Server 2008的时候引入了SQL Server审计,这是一款功能全面的数据库审计工具,弥补了SQL Server早期版本中的许多审计功能限制。

  • DBA必修课:特权用户管理

    特权用户管理是数据库审计和保护的九个关键功能之一。在三月份的一份报告中,Gartner称像DBA这样高度特权用户的访问是审计人员的主要关注点。