当前位置:首页 > 系统运维 > 正文内容

SQL Server 2008中的审核

a8116255311年前 (2015-10-08)系统运维11

任何安全解决方案的一个重要组成部分就是出于可说明性和法规遵从性的考虑而进行审核的能力。SQL Server 2008包含很多特性,使审核活动成为可能。

所有动作审核

SQL Server 2008通过Audit对象提供审核支持,这使管理员能够捕获数据库服务器中的活动并将其存储在日志中。使用SQL Server 2008,您可以将审核信息存储在以下目标中:

文件
windows应用程序日志
windows安全日志

要写入Windows安全日志,必须将SQL Server服务配置为作为Local System、Local Service、Network Service或拥有SeAuditPrivilege权限且不是交互用户的域帐户运行。

要创建Audit对象,必须使用CREATE SERVER AUDIT语句。该语句定义Audit对象并将其与目标关联。用于配置Audit对象的特定选项取决于审核目标。例如,以下Transact-SQL代码创建了两个Audit对象;一个将活动记录到文件,另一个将活动记录到 Windows应用程序日志。

CREATE SERVER AUDIT HIPAA_File_Audit
TO FILE ( FILEPATH=’\SQLPROD_1Audit’ );
CREATE SERVER AUDIT HIPAA_appLog_Audit
TO APPLICATION_LOG
WITH ( QUEUE_DELAY = 500,  ON_FAILURE = SHUTDOWN);

注意当记录到文件目标时,文件名没有在 CREATE SERVER AUDIT 语句中指定。审核文件名采用 AuditName_AuditGUID_nn_TS.sqlaudit 的形式,其中 AuditName是 Audit 对象的名称,AuditGUID是与该 Audit 对象相关的惟一标识符,nn是用于分区文件集的分区号,而 TS是时间戳的值。例如,通过前面的代码样例创建的 HIPAA_FILE_Audit Audit 对象可以生成一个与以下名称类似的日志文件:

HIPAA_File_Audit_{95A481F8-DEF3-40ad-B3C6-126B68257223}_00_29384.sqlaudit

可以使用 QUEUE_DELAY 审核选项实现出于性能原因的异步审核,可以使用 ON_FaiLURE 选项确定无法向目标写入审核信息时采取的操作。在过去不久的文章里展示的 HIPAA_AppLog_Audit 示例中,ON_FAILURE选项被配置为在无法写入日志时关闭 SQL Serve r实例;在这种情况下,执行CREATE SERVER AUDIT 语句的用户必须拥有 SHUTDOWN 权限。

在创建 Audit 对象之后,可以通过使用 CREATE SERVER AUDIT SPECIFICATION 和 CREATE DATABASE AUDIT SPECIFICATION 语句对其添加事件。CREATE SERVER AUDIT SPECIFICATION 向 Audit 添加服务器级的操作组(即可以在服务器级发生的预定义的相关操作 *** )。例如,以下代码将 FAILED_LOGIN_GROUP 操作组(它记录了失败的登录尝试)添加到HIPAA_File_Audit Audit。

CREATE SERVER AUDIT SPECIFICATION  Failed_Login_Spec
FOR SERVER AUDIT HIPAA_File_Audit
ADD (FAILED_LOGIN_GROUP);

CREATE DATABASE AUDIT SPECIFICATION 语句向 Audit 添加数据库级的操作组和单个数据库事件。添加单个操作使您能根据对象筛选记录的操作以及操作涉及的用户。例如,以下代码样例向HIPAA_AppLog_Audit Audit 添加了 DATABASE_OBJECT_CHANGE_GROUP 操作组(它记录数据库中的任何 CREATE、ALTER 或 DROP 操作)以及在 Sales 架构中由 SalesUser SalesAdmin 用户对对象执行的 INSERT、UPDATE 或 DELETE 语句。

CREATE DATABASE AUDIT SPECIFICATION  Sales_Audit_Spec
FOR SERVER AUDIT HIPAA_AppLog_Audit
ADD (DATABASE_OBJECT_CHANGE_GROUP),
ADD (INSERT, UPDATE, DELETE
ON Schema::Sales
BY SalesUser, SalesAdmin);

Audit 对象提供了一个可管理的审核框架,该框架使定义应记录的事件和事件应存储的位置变得很容易。SQL Server 添加的这个功能帮助您实现综合的审核解决方案以确保数据库的安全并满足法规遵从性的要求。

DDL触发器

DDL 触发器是在 SQL Server 2005 中引入的。与表中数据发生变化时执行 Transact-SQL 代码的DML 触发器不同,DDL 触发器在表结构发生变化时激活。这是跟踪和审核数据库架构的结构性变化的极佳方式。

这些触发器的语法与 DML 触发器的类似。DDL 触发器是 AFTER 触发器,为了响应 DDL 语言事件而激活;它们不会为了响应执行类似 DDL 操作的系统存储过程而激活。它们是完全事务性的,因此您可以 ROLLBACK 一个 DDL 变更。您可以在 DDL 触发器中运行 Transact-SQL 或者 CLR代码。 DDL 触发器还支持类似其他模块的 EXECUTE AS 子句。 

SQL Server 将关于触发器事件的信息作为非类型化的 XML 提供。可以通过称为 EVENTDATA()的能够发出 XML 数据的新内置功能获得这些信息。可以使用 XQuery 表达式解析 EVENTDATA() XML 以发现事件属性,如架构名称、目标对象名称、用户名,以及导致触发器更先激活的整个Transact-SQL DDL语句。例如,请参见 SQL Server Books Online 中的 EVENTDATA (Transact-SQL)。数据库级 DDL 触发器由数据库或更低级别的 DDL 语言事件激活。例如,CREATE_TABLE、 ALTER_USER等等。服务器级 DDL 触发器由服务器级的 DDL 语言事件激活,例如 CREATE_DATABASE、ALTER_LOGIN 等等。为了管理方便,您可以使用事件组,比如 DDL_TABLE_EVENTS,来简称所有 CREATE_TABLE、ALTER_TABLE 和 DROP_TABLE 事件。各种 DDL 事件组和事件类型及其相关 XML EVENTDATA()在SQL Server Books Online 上均有记述。
与 DML 触发器名称不同(它是架构范围的),DDL 触发器是数据库范围或服务器范围的。

使用此目录视图发现 DML 触发器和数据库级 DDL 触发器的触发器元数据:

SELECT * FROM sys.triggers ;
go

假如 parent_class_desc 列中存在 'DATABASE' 的值,那么它就是 DDL 触发器,并通过数据库本身确定名称范围。Transact-SQL 触发器的代码体可以在 sys.sql_modules 目录视图中找到,并且可以将它连接到 sys.triggers 的object_id 列中。 关于 CLR 触发器的元数据可以在 sys.assembly_modules 目录视图中找到,同样可以连接到 sys.triggers 的 object_id 列中。

使用此目录视图发现服务器范围的 DDL 触发器的元数据:

SELECT * FROM sys.server_triggers ;
GO

Transact-SQL 服务器级别的触发器的代码体可以在 sys.server_sql_modules 目录视图中找到,可以将它连接到 sys.server_triggers 的 object_id 列上。关于一个 CLR 服务器级别的触发器的元数据可以在 sys.server_assembly_modules 目录视图中找到,同样可以将它连接到 sys.server_triggers 的 object_id 列上。

可以使用 DDL 触发器来捕捉和审核数据库中的 DDL 活动。创建一个带有非类型化的 XML 列的审核表。为 DDL 事件或您感兴趣的事件组创建一个 EXECUTE AS SELF DDL 触发器。这个DDL 触发器的代码体可以简单地将 EVENTDATA() XML 插入到审核表中。

DDL 触发器的另一个有趣的使用是由 CREATE_USER 事件激活然后添加代码到自动权限管理。例如,假设您想让所有的数据库用户获得一个对存储过程 P1、P2 和 P3 的 GRANT EXECUTE 权限。DDL 触发器可以从 EVENTDATA() XML 中提取用户名称,动态地生成一个语句,像 ‘GRANT EXECUTE ON P1 TO someuser’,然后对它执行EXEC()。

扫描二维码推送至手机访问。

版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。

本文链接:http://www.2345hao.cn/blog/index.php/post/22506.html

分享给朋友:

“SQL Server 2008中的审核” 的相关文章

windows 7系统开机后出现黑屏提示Windows无法启动

windows 7系统开机后出现黑屏提示Windows无法启动

一些用户的Windows 7系统开机后出现黑屏,代码为 Windows无法启动: WindowsSystem32ConfigSystem”。这个问题该如何修复呢?现在小编就给大家分析一下吧。 其实这个代码的意思是引导文件丢失了,引导文件(NTLDR)一般存放于C盘根目录下,是一个具有隐藏和只读属性...

windows 7系统重装后卡在正在启动Windows开机界面怎么办

windows 7系统重装后卡在正在启动Windows开机界面怎么办

重装系统是我们面对许多电脑问题时的终极方法,不过重装系统也不意味着就能将全部的问题都修复。一些用户在重装系统后开机时,电脑卡在“正在启动Windows”开机界面上了,这要怎么解决呢? Windows 7系统重装后卡在开机界面的解决方法: 一、首先可以看看该故障出现的原因是否是因为启动了acp...

ubuntu14.04打开个几个应用窗口最小化后怎么切换呢?

ubuntu14.04打开个几个应用窗口最小化后怎么切换呢?

ubuntu14.04应用窗口列表在哪里?在ubuntu下打开个几个应用窗口最小化后怎么切换呢,应用窗口列表在哪里呢? 1、多打开几个chrome浏览器窗口。 2、然后都做最小化处理。 3、现在我们在桌面左边的面板上找到"左右两边有小白点"的chrome浏览器应用图标,这就是chr...

windows 7如何给c盘扩容 图解windows 7 64位系统C盘扩容方法(自

windows 7如何给c盘扩容 图解windows 7 64位系统C盘扩容方法(自

用Windows 7久了,C盘越来越大,原来50G的空间基本用完了,又不想重装系统,就想着能不能直接扩容。 在网上搜了半天,看了无数教程,都写得不明不白的,结合了几篇教程才终于搞明白。 重新总结一下,方便有需要的人。 所用软件: http://www.jb51.net/softs/57895...

windows 7系统怎么取消禁ping命令?

windows 7系统怎么取消禁ping命令?

当我在虚拟机的linux系统中ping本机的ip发现ping不通,而本机可以ping通虚拟机中的ip。应该是出于安全考虑吧,Windows 7默认在防火墙里禁止了。 1、查看主机ip 打开“开始”程序中的“附件”,找到“命令提示符”打开。输入命令:ipconfig,可以看到本机的ip是192.1...

windows7系统下让所有文件夹都使用同一种视图的方法

windows7系统下让所有文件夹都使用同一种视图的方法

Windows 7系统可以对每个文件夹进行个性化视图设置,可以根据自己的个人喜好和实际需要更改文件或文件夹图标的大小,或者让文件或文件夹以列表、平铺等方式显示。但是,假如你对N个文件夹视图进行了风格各异的个性设置,现在又想让所有文件夹都使用同一种视图怎么办呢 手工一个一个修改,你OUT了,非累得手抽...