成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺析SQL Server 2008中的代碼安全之二:DDL觸發器與登錄觸發器

數據庫 SQL Server
筆者之前介紹了代碼安全之一:存儲過程加密與安全上下文,這次為我們介紹了涉及DDL觸發器和登錄觸發器的應用實例。

 本文主要 涉及DDL觸發器和登錄觸發器的應用實例。

MicrosoftSQL Server 提供兩種主要機制來強制使用業務規則和數據完整性:約束和觸發器。觸發器為特殊類型的存儲過程,可在執行語言事件時自動生效。SQL Server 包括三種常規類型的觸發器:DML 觸發器DDL 觸發器登錄觸發器

1、當數據庫中發生數據操作語言 (DML) 事件時將調用 DML 觸發器。DML 事件包括在指定表或視圖中修改數據的 INSERT 語句、UPDATE 語句或 DELETE 語句。DML 觸發器可以查詢其他表,還可以包含復雜的 Transact-SQL 語句。將觸發器和觸發它的語句作為可在觸發器內回滾的單個事務對待。如果檢測到錯誤(例如,磁盤空間不足),則整個事務即自動回滾。

關于DML觸發器應用最為廣泛。這里不再贅述。MSDN官方說明:http://msdn.microsoft.com/zh-cn/library/ms189799.aspx

2、當服務器或數據庫中發生數據定義語言 (DDL) 事件時將調用 DDL 觸發器。DDL 觸發器是一種特殊的觸發器,它在響應數據定義語言 (DDL) 語句時觸發。它們可以用于在數據庫中執行管理任務,例如,審核以及規范數據庫操作。

下面我們用舉例說明DDL觸發器(http://technet.microsoft.com/zh-cn/library/ms189799%28SQL.90%29.aspx)的應用:

     示例一:創建一個DDL觸發器審核數據庫級事件

  1. /***************  
  2. 創建一個審核表,其中EventData是一個XML數據列3w@live.cn*******************/  
  3. USE master  
  4. GO  
  5. CREATE TABLE dbo.ChangeAttempt  
  6. (EventData xml NOT NULL,  
  7. AttemptDate datetime NOT NULL DEFAULT GETDATE(),  
  8. DBUser char(50) NOT NULL)  
  9. GO  
  10. /***************  
  11. 在目標數據庫上創建一個觸發器,以記錄該數據庫的索引變化動作,包括Create|alter|Drop 
  12. 3w@live.cn*******************/  
  13. CREATE TRIGGER db_trg_RestrictINDEXChanges  
  14. ON DATABASE 
  15. FOR CREATE_INDEX, ALTER_INDEX, DROP_INDEX  
  16. AS 
  17. SET NOCOUNT ON 
  18. INSERT dbo.ChangeAttempt  
  19. (EventData, DBUser)  
  20. VALUES (EVENTDATA(), USER)  
  21. GO  
  22. /***************  
  23. 創建一個索引,以測試觸發器3w@live.cn*******************/  
  24. CREATE NONCLUSTERED INDEX ni_ChangeAttempt_DBUser ON 
  25. dbo.ChangeAttempt(DBUser)  
  26. GO  
  27. /***************  
  28. 查看審核記錄  
  29. 3w@live.cn*******************/  
  30. SELECT EventData  
  31. FROM dbo.ChangeAttempt --------  
  32. /***************-  
  33. -------刪除測試觸發器和記錄表-------  
  34. -3w@live.cn--------*******************/  
  35. ----drop TRIGGER [db_trg_RestrictINDEXChanges]  
  36. ----ON DATABASE  
  37. ----go  
  38. ----drop table dbo.ChangeAttempt  
  39. ----go   

執行結果:

示例二:創建一個DDL觸發器審核服務器級事件 

  1. --------/  
  2. 在目標數據庫服務器上創建一個觸發器,以防止添加登錄賬號,  
  3. --------3w@live.cn--------*******************/  
  4. USE master  
  5. GO  
  6. -- Disallow new Logins on the SQL instance  
  7. CREATE TRIGGER srv_trg_RestrictNewLogins  
  8. ON ALL SERVER  
  9. FOR CREATE_LOGIN  
  10. AS 
  11. PRINT 'No login creations without DBA involvement.' 
  12. ROLLBACK 
  13. GO  
  14. --------/***************  
  15. --------試圖創建一個登錄賬號  
  16. --------3w@live.cn--------*******************/  
  17. CREATE LOGIN johny WITH PASSWORD = '123456' 
  18. GO  
  19. --------/***************  
  20. --------刪除演示觸發器  
  21. --------3w@live.cn--------*******************/  
  22. drop TRIGGER srv_trg_RestrictNewLogins  
  23. ON ALL SERVER  
  24. go   

效果:

注意:要特別謹慎使用DDL觸發器。如果設置不當,將會在數據庫級甚至服務器級引發不可預知的后果。

 3、登錄觸發器(http://msdn.microsoft.com/zh-cn/library/bb326598.aspx)將為響應 LOGON 事件而激發存儲過程。與 SQL Server 實例建立用戶會話時將引發此事件。

如果你有這樣的需求:在某個特定的時間只允許某個賬號登錄服務器(如單位和家里使用不同的賬號遠程登錄服務器),那么登錄觸發器是一個不錯的選擇。

    示例三:創建一個登錄觸發器審核登錄事件

  1. --------/***************  
  2. --------創建登錄賬號  
  3. --------3w@live.cn--------*******************/  
  4. CREATE LOGIN nightworker WITH PASSWORD = '123b3b4' 
  5. GO  
  6. --------/***************  
  7. --------演示數據庫和審核表  
  8. --------3w@live.cn--------*******************/  
  9. CREATE DATABASE ExampleAuditDB  
  10. GO  
  11. USE ExampleAuditDB  
  12. GO  
  13. CREATE TABLE dbo.RestrictedLogonAttempt  
  14. (LoginNM sysname NOT NULL,  
  15. AttemptDT datetime NOT NULL)  
  16. GO  
  17. --------/***************  
  18. --------創建登錄觸發器,如果不是在7:00-17:00登錄,  
  19. 則記錄審核日志,并提示失敗  
  20. --------3w@live.cn--------*******************/  
  21. USE master  
  22. GO  
  23. Create TRIGGER trg_logon_attempt  
  24. ON ALL SERVER  
  25. WITH EXECUTE AS 'sa' 
  26. FOR LOGON  
  27. AS 
  28. BEGIN 
  29. IF ORIGINAL_LOGIN()='nightworker' AND 
  30. DATEPART(hh,GETDATE()) BETWEEN 7 AND 17  
  31. BEGIN 
  32. ROLLBACK 
  33. INSERT ExampleAuditDB.dbo.RestrictedLogonAttempt  
  34. (LoginNM, AttemptDT)  
  35. VALUES (ORIGINAL_LOGIN(), GETDATE())  
  36. END 
  37. END 
  38. GO  
  39. --------/***************  
  40. --------查看審核記錄  
  41. --------3w@live.cn--------*******************/  
  42. USE ExampleAuditDB  
  43. GO  
  44. select * from dbo.RestrictedLogonAttempt  
  45. go  
  46. --------/***************  
  47. --------刪除演示數據庫及演示觸發器  
  48. --------3w@live.cn--------*******************/  
  49. use master  
  50. go  
  51. drop TRIGGER trg_logon_attempt  
  52. ON ALL SERVER  
  53. go  
  54. drop database ExampleAuditDB  
  55. go  

結果:

 

當然,你也可以使用應用程序或類似于log4net的日志機制記錄類似的登錄事件,但SQL server 2008已經為我們做到了,你所做的僅僅是有勇氣來試一試。

小結:作為對數據DDL操作和登錄事件的審核和監控,SQL Server提供了比較完善的事件處理機制。這也是SQL server安全機制的一部分。

原文出處:http://www.cnblogs.com/downmoon/archive/2011/03/01/1966670.html

【編輯推薦】

  1. 淺析SQL Server 2008中的代碼安全之一:存儲過程加密與安全上下文
  2. SQL Server與Oracle數據庫在安全性上的異同
  3. Sql server安全設置九大措施
  4. SQL Server安全解析
  5. sql server安全的兩層模型

 

責任編輯:艾婧 來源: 博客園
相關推薦

2010-04-19 10:43:27

SQL Server

2011-03-28 10:05:57

sql觸發器代碼

2010-06-30 09:36:25

SQL Server

2009-04-07 13:56:03

SQL Server觸發器實例

2010-09-13 17:03:34

sql server觸

2010-10-20 14:34:48

SQL Server觸

2010-07-16 10:19:31

2010-11-12 15:35:55

SQL Server約

2011-05-20 14:06:25

Oracle觸發器

2010-10-19 15:31:40

sql server觸

2010-10-22 11:10:43

SQL Server觸

2010-11-08 11:49:24

SQL Server管

2010-07-06 14:47:03

SQL Server數

2010-11-10 13:37:01

SQL Server觸

2011-04-14 10:53:00

MySQLSQL觸發器

2011-04-01 16:35:09

SQL Server數觸發器

2022-04-12 08:24:28

Zabbix事件通知觸發器

2010-07-05 11:09:55

SQL Server觸

2010-05-18 15:36:44

MySQL觸發器

2009-04-26 22:27:54

觸發器密碼修改數據庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 超碰激情| 免费在线观看一区二区三区 | 91 在线| 欧美一级黄视频 | 亚洲成av | 久久久成人精品 | 91精品国产乱码久久久 | 成人久久18免费网站麻豆 | 天天爽夜夜爽精品视频婷婷 | 视频在线观看一区 | 国产精品视频网 | 成人免费视频观看视频 | 在线一级片| 精品视频一区二区三区在线观看 | 精品久久久网站 | 二区久久 | 91久久国产综合久久 | 成人二区| 欧美精品在线一区二区三区 | 国产小u女发育末成年 | 久久久久免费精品国产 | 日韩a在线 | 午夜影院在线观看视频 | 久久精品视频亚洲 | 国产欧美一区二区三区日本久久久 | 久久福利电影 | 久久精品无码一区二区三区 | 日本免费一区二区三区 | 在线亚洲欧美 | 亚洲免费一区二区 | 成人精品毛片国产亚洲av十九禁 | 国产高清精品网站 | 国产精品国产三级国产aⅴ原创 | 国产精品不卡视频 | 精品久久久久久久久久久院品网 | 亚洲精品视频在线观看免费 | 国产精品久久精品 | 羞羞的视频免费观看 | 日本在线视频中文字幕 | 激情的网站 | 精品区一区二区 |