科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道[Sql server]应用内置工具建立审查系统(2)

[Sql server]应用内置工具建立审查系统(2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

作为收费应用方面的数据库管理员(DBA),公司首席信息官(CIO)经常邀请我与Sarbanes-Oxley审查员开会讨论公司数据的安全与整合问题。

作者:Tim Chapman 来源:Builder 2007年9月15日

关键字: 审查系统 SQL Server SQL Server 各版本 数据库

  • 评论
  • 分享微博
  • 分享邮件

一旦表格做好准备追踪事件,就可以建立必要的触发器来监控这些事件。第一步,我们的解决方案寻找服务器上发生的注册事件,包括任何建立注册(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审查感兴趣的事件包括:建立或终止其它数据库对象,如表格、程序、触发器、概念、函数等。

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

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章