All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
利用XMLHTTP无刷新添加数据之Get篇_[XML教程]
怎样从ASP.NET,2.0中读取连接字符串的设置_[Asp.Net教程]
SQLSERVER中,数据库同步的实现_[SQL Server教程]
PHP读取汉字点阵数据_[PHP教程]
ASP.NET中实现模板页_[Asp.Net教程]
Linux环境下如何使用PHP处理图像_php资料_编程技术
Active,Directory如何用C#进行增加、删除、修改、查询用户与组织单位_[Asp.Net教程]
用ajax、asp编写的查询程序(原创)_[AJAX教程]
安装JDK,就可同时运行PHP和Java?_php资料_编程技术
ASP.NET中连接MYSQL_[Asp.Net教程]
Reading number is top 10 pictures
The goddess of the single reason2
The terra-cotta warriors2
移民小国也实惠1
From China fortress sora aoi1
2012 national geographic daily picture4
梦幻的风景
可爱的狗熊们
含苞欲放的素颜美少女3
A cat have life principles
全身蕾丝丝质美臀
Download software ranking
Take off clothes to survival
美女写真3
传奇私服架设教程
小黑猫大战两米大花蛇
都市狐狸姑娘传
Sora aoi 120 minutes
Unix video tutorial13
双旗镇刀客B
1400篇各类破解文章
Boxer's Top ten classic battle4
归海一刀 published in(发表于) 2014/2/1 0:14:31 Edit(编辑)
Sqlserver应用内置工具建立审查系统_[SQL,Server教程]

Sqlserver应用内置工具建立审查系统_[SQL,Server教程]

Sqlserver应用内置工具建立审查系统_[SQL Server教程]

作为收费应用方面的数据库管理员(DBA),公司首席信息官(CIO)经常邀请我与Sarbanes-Oxley审查员开会讨论公司数据的安全与整合问题。简单地说,他希望我们通过适当的文件回答许多问题:如谁访问了我们的数据、如何批准访问权、以及我们如何对访问进行监控,以防止某些人入侵、登录数据或做他们不该做的事情。

我的CIO与我了解了一些证明Sarbanes-Oxley法案遵守的商业解决方案。但是,我们决定应用SQL Server 2005内置工具来建立我们“自产的”审查系统。

Server 2005新功能

在使用SQL Server 2005之前,我们应用数据操作语言(DML)触发器来了解数据库中何时会发生数据变化。我们可以指着审查日志说,这里有一个列表,列出了自上次审查以来我们发布的所有插入(INSERT)、更新(UPDATE)与删除(DETELE)语句,包括执行语句的时间、日期、个人或程序。

DML触发器是一个数据库引擎启动的专用存储程序,它在为数据变化建立审查索引方面有很大的作用。但是,DML触发器只有在数据发生变化时才会启动。在使用SQL Server 2005之前,我们没有较好的办法来追踪数据库服务器中的结构或安全变化。

SQL Server 2005支持数据定义语言(DDL)触发器。在发生服务器或数据库级事件时,这些触发器才会建立并启动。DDL触发器允许我们追踪数据库中的重要变化——有意的、无意的或恶意的改变。

追踪所有注册

下面是一个DDL触发器改善数据库监控能力的典型例子。在以前版本的SQL Server中,我们很难了解何时建立新注册、何时建立新数据库、或是何时给不同用户分配了新许可。

在SQL Server 2005中,追踪这样的安全变化要相对容易一些。为说明这一点,无论用户是谁,让我们设计了一个追踪服务器上所有行为的解决方案。我们将用DDL触发器事件DDL_LOGIN_EVENTS来建立审查索引。这个事件触发器将寻找服务器上的任何注册事件,包括所有的建立注册(CREATE LOGIN)、修改注册(ALTER LOGIN)与删除注册(DELETE LOGIN)事件。

在SQL Server 2005中,通过运行CREATE DATABASE DDLTriggerTest语句建立一个审查索引数据库,然后定义下列域:

IDCol SMALLINT IDENTITY(1,1) PRIMARY KEY,

XMLEvent XML

DatabaseName VARCHAR(50)

SystemUser VARCHAR(50)

EntryDate DATETIME DEFAULT (GETDATE())

注意表格中利用了XML数据类型,这是SQL Server 2005中新增的功能。顾名思义,它的作用是保存XML数据。


一旦表格做好准备追踪事件,就可以建立必要的触发器来监控这些事件。第一步,我们的解决方案寻找服务器上发生的注册事件,包括任何建立注册(CREATE LOGIN)、修改注册(ALTER LOGIN)与删除注册(DELETE LOGIN)事件。运行以下脚本来建立触发器:

CREATE TRIGGER tr_Security

ON ALL SERVER

For DDL_LOGIN_EVENTS

AS

BEGIN

?INSERT INTO DDLTriggerTest..EventtableData(XMLEvent, DatabaseName, SystemUser)

?VALUES (EVENDATA(), DB_NAME(), SYSTEM_USER)

END

这段脚本建立一个触发器,宣称我们希望寻找服务器上发生的所有DDL注册事件。启动触发器所得到的信息将进入我们前面建立的DDLTriggerTest表格中。注意,我们使用三个函数将数据插入表格中。在此例中,EVENTDATA函数将收集与注册有关的信息,因为它是FOR DDL_LOGIN_EVENTS语句指定的事件。SYSTEM_USER函数执行当前语句,返回注册。而且,如你所猜测的,DB_NAME()函数返回执行当前语句的数据库的名称。由于建立一个注册是一个服务器级事件,我们的审查索引记录下发生在主数据库中的语句。

为测试新的触发器,我们必须在服务器上提出一个LOGIN事件。执行CREATE LOGIN TestLogin WITH PASSWORD = '123456xxYYbaz这样的命令,是建立一个新注册的最简单方法。

运行该语句后,如果我们查看信息窗口,就可看到信息(1行受影响)。由于我们安排好审查,所以此语句才会发生。当我们在服务器上运行CREATE LOGIN语句时,DDL触发器被启动,一项记录插入到DDLTriggerTest数据库的EventTableData表格中。

XML中有什么?

你可以在DDLTriggerTest表格中运行SELECT查询来证明我们向表格中写入了记录。如果你习惯应用SQL Server 2000,那么XMLEvent一栏中的数据可能对你来说有些陌生。在SQL Server Management Studio (SSMS)中,点击XMLEvent一栏中的链接即可查看它包含的XML数据。

XMLEvent域由EVENTDATA()函数从触发器中的INSERT语句中移植过来。在这种情况下,EVENTDATA()函数返回与注册有关的XML数据,包括注册的时间与日期、服务器名称、用户ID与机器系统ID。

还只是开始

DDL_LOGIN_EVENT触发器只是有助于证明系统安全,你能够进行监控的60多个DDL事件中的一个。其它Sarbanes-Oxley审查感兴趣的事件包括:建立或终止其它数据库对象,如表格、程序、触发器、概念、函数等。

在本文中,我们的讨论仅限于服务器级事件。在以后的文章中,我将说明一个追踪数据库级事件的触发器。我还将向你展示那些触发器如何执行追踪事件以外的功能——实际上,它们可阻止你不想发生的未授权的事件在数据库中出现。


来源:网络







添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.