程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server 2005內置工具建審查系統

SQL Server 2005內置工具建審查系統

編輯:關於SqlServer

作為收費應用方面的數據庫管理員(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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved