IT數(shù)據(jù)安全運維中配置SQL安全審計
2020-04-14 13:56 作者:艾銻無限 瀏覽量:
IT數(shù)據(jù)安全運維中配置SQL安全審計
審計(Audit)用于追蹤和記錄SQL Server實例或數(shù)據(jù)庫中發(fā)生的事件,審計主要包括審計對象(Audit)和審計規(guī)范(Audit Specification),創(chuàng)建審計首先需要創(chuàng)建一個SQL Server 實例級的審計對象,然后,創(chuàng)建從屬于它的“
服務(wù)器審計規(guī)范”或“
數(shù)據(jù)庫審計規(guī)范”。審計數(shù)據(jù)可以輸出到審計文件(File)、
安全日志(Security Log)和應(yīng)用程序日志(Application Log)。啟用審計的目的一般是為了監(jiān)控SQL Server執(zhí)行的操作,例如,記錄什么人在什么時候查詢數(shù)據(jù)、修改數(shù)據(jù),登陸SQL Server實例等,由于審計記錄的數(shù)據(jù)有可能很豐富,因此,啟用審計可能產(chǎn)生大量的日志數(shù)據(jù),占用磁盤的大量空間。審計使用一句話來概括就是:記錄誰在什么時候做了什么事,審計對象(Audit)定義:配置數(shù)據(jù)存在何處,而審計規(guī)范(Audit Specification)定義:記錄什么事,一旦特定的事件觸發(fā),SQL Server引擎就使用審計記錄事件發(fā)生的現(xiàn)場信息。
創(chuàng)建和使用審計的一般步驟是:
· step1:創(chuàng)建服務(wù)器級別的審計對象,并啟用審計對象;
· step2:創(chuàng)建審計規(guī)范,并映射到審計對象審核,啟用審計規(guī)范,審計對象開始追蹤和記錄數(shù)據(jù);
· step3:查看審計數(shù)據(jù),可以通過使用SSMS的”Log Files Viewer“或函數(shù)sys.fn_get_audit_file 查看記錄的日志數(shù)據(jù)。
一,創(chuàng)建審計對象
首先創(chuàng)建服務(wù)器級別的審計對象,展開"Security",右擊Audits,通過“New Audit”,打開“Create Audit”窗體開始創(chuàng)建審計對象,審計輸出的數(shù)據(jù)保存到“Audit destination”中,本文選擇File,把數(shù)據(jù)存儲到審計文件中,其他類型是:Security Log和Application Log。Queue delay是指數(shù)據(jù)寫入到審計文件的延遲,默認(rèn)是1s。審計對象的作用是指定審計數(shù)據(jù)保存的路徑,以及寫入數(shù)據(jù)的延遲和數(shù)據(jù)文件的大小,審計對象主要是存儲審計規(guī)范的數(shù)據(jù)。
根據(jù)硬盤空間的限制,設(shè)置審計對象的屬性 Audit File maximum Limit、Maximum File size、以及Reserve disk space,控制審計文件的大小,管理硬盤空間的使用,避免硬盤爆掉。
創(chuàng)建的審計對象默認(rèn)是禁用(Disable)的,在使用審計對象之前,必須啟用,選中新建的審計對象,右擊,選中“Enable Audit”。
二,創(chuàng)建服務(wù)器級別的審計規(guī)范
展開服務(wù)器級別的Security,選中“Server Audit Specifications”,右擊彈出快捷菜單,選擇“New Server Audit Specifications”,打開“Create Server Audit Specifications”的窗體,通過UI創(chuàng)建審計規(guī)范:
審計規(guī)范指定審計對象記錄的事件類型,在審計規(guī)范中指定的事件類型,SQL Server 一旦檢測到事件發(fā)生,就會把跟該事件相關(guān)的信息寫入到審計對象指定的文件中,保存起來,以便于后續(xù)的檢查(review)。
使用向?qū)韯?chuàng)建服務(wù)器級別的審計規(guī)范,從列表中選擇審計對象,從Audit Action Type列表中選擇審計操作組,創(chuàng)建的審計規(guī)范默認(rèn)是禁用的,選中新建的審計規(guī)范,右擊彈出快捷菜單,選中”Enable Server Audit Specifications “啟用:
從審核操作類型列表中選擇審計操作組,審計操作組是審計記錄的事件操作類型,常用的審計操作組是:
· DATABASE_OBJECT_ACCESS_GROUP:訪問數(shù)據(jù)庫對象時將引發(fā)此事件;
· DATABASE_OBJECT_CHANGE_GROUP:針對數(shù)據(jù)庫對象(如架構(gòu))執(zhí)行 CREATE、ALTER 或 DROP 語句時將引發(fā)此事件。 創(chuàng)建、更改或刪除任何數(shù)據(jù)庫對象時均將引發(fā)此事件。
· DATABASE_OPERATION_GROUP:數(shù)據(jù)庫中發(fā)生操作(如檢查點或訂閱查詢通知)時將引發(fā)此事件。 對于任何數(shù)據(jù)庫的任何操作都將引發(fā)此事件。
· FAILED_DATABASE_AUTHENTICATION_GROUP:指示某個主體嘗試登錄到數(shù)據(jù)庫并且失敗。
· FAILED_LOGIN_GROUP:指示主體嘗試登錄到 SQL Server ,但是失敗。
· SUCCESSFUL_LOGIN_GROUP:指示主體已成功登錄到 SQL Server。
三,創(chuàng)建數(shù)據(jù)庫級別的審計規(guī)范
在數(shù)據(jù)庫的Security中右擊“Database Audit Specifications”,數(shù)據(jù)庫級別的審計操作組,大部分和服務(wù)器級別的審計操作組很相似,除了數(shù)據(jù)庫級別的審計動作(Database-Level Audit Actions),在數(shù)據(jù)庫對象上發(fā)生以下操作(Action)時,記錄事件的信息:
· SELECT
· UPDATE
· INSERT
· DELETE
· EXECUTE
· REFERENCES
1,使用Wizard創(chuàng)建數(shù)據(jù)庫審計規(guī)范
數(shù)據(jù)庫級別的審計操作追蹤和記錄的是數(shù)據(jù)庫對象(schema,objects)上發(fā)生的事件,因此必須配置Object Class、Object Schema,Object Name 和 Principal Name字段:
查看審計數(shù)據(jù),選中Server級別的審計對象,通過”View Audit Logs“查看記錄的日志數(shù)據(jù)。
2,使用TSQL命令創(chuàng)建數(shù)據(jù)庫級別的審計規(guī)范
在審計規(guī)范中,如何設(shè)置Principal為public,表示對所有database principals進行審計。
CREATE DATABASE AUDIT SPECIFICATION [DatabaseAuditSpecification-20191118-091731]
FOR SERVER AUDIT [Audit-20191118-090843]
ADD (DELETE ON Schema::schema_name BY public)
WITH (STATE = ON) ;
四,查看審計數(shù)據(jù)
用戶可以通過兩種方式來查看審計數(shù)據(jù),第一種是使用UI來查看,第二種是使用系統(tǒng)視圖來查看。
1,使用UI查看審計數(shù)據(jù)
點擊審計對象,右擊彈出快捷菜單,點擊”View Audit Logs“查看審計對象記錄的數(shù)據(jù):
2,通過TSQL 函數(shù)查看審計數(shù)據(jù)
查看審計數(shù)據(jù)通過sys.fn_get_audit_file()來查看:
sys.fn_get_audit_file ( file_pattern,
{ default | initial_file_name | NULL },
{ default | audit_record_offset | NULL } )
審計文件名由四部分組成:AuditName_GUID_n_m.sqlaudit,第一個參數(shù)是file_pattern,包括路徑和文件名,對于文件名,可以通過特殊的匹配符指定:
· *:表示所有的字符;
· {}:指定GUID;
· 如果文件名以擴展名( .sqlaudit)結(jié)尾,表示查看特定的文件;
以上文章由北京艾銻無限科技發(fā)展有限公司整理