當前位置:首頁 » 編程語言 » sqlai審核系統
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sqlai審核系統

發布時間: 2023-03-08 04:55:38

sql server 2005 如何查看審計信息

查看與常規 SQL Server 活動相關的日誌
在對象資源管理器中,依次展開「管理」和「SQL Server 日誌」,再雙擊「當前 <日期/時間>」,將顯示 SQL Server、「SQL 代理」和「Windows 事件」日誌。
查看與作業相關的日誌

在對象資源管理器中,展開「SQL Server 代理」,右鍵單擊「作業」,再單擊「查看歷史記錄」,此時將顯示「作業歷史記錄」和「SQL 代理」日誌。
查看與維護計劃相關的日誌

在對象資源管理器中,展開「管理」,右鍵單擊「維護計劃」,再單擊「查看歷史記錄」,此時將顯示「維護計劃」、「作業歷史記錄」和「SQL 代理」日誌。
查看與審核集合相關的日誌

在對象資源管理器中,依次展開「安全」和「審核」,右鍵單擊一個審核,然後單擊「查看審核日誌」。

查詢SQL錯誤日誌擴展存儲過程xp_readerrorlog
xp_readerrorlog 一共有7個參數:

1. 存檔編號
2. 日誌類型(1為SQL Server日誌,2為SQL Agent日誌)
3. 查詢包含的字元串
4. 查詢包含的字元串
5. LogDate開始時間
6. 結果排序,按LogDate排序(可以為降序"Desc" Or 升序"Asc")
7. 結果排序,按LogDate排序(可以為降序"Desc" Or 升序"Asc")

② 如何開啟sqlserver2008資料庫審計功能

SQLSERVER2008新增的審核功能
在sqlserver2008新增了審核功能,可以對伺服器級別和資料庫級別的操作進行審核/審計,事實上,事件通知、更改跟蹤、變更數據捕獲(CDC)
都不是用來做審計的,只是某些人亂用這些功能,也正因為亂用這些功能導致踩坑
事件通知:性能跟蹤
更改跟蹤:用Sync Services來構建偶爾連接的系統
變更數據捕獲(CDC):數據倉庫的ETL 中的數據抽取(背後使用logreader)

而審核是SQLSERVER專門針對資料庫安全的進行的審核,記住,他是專門的!

我們看一下審核的使用方法
審核對象
步驟一:創建審核對象,審核對象是跟保存路徑關聯的,所以如果你需要把審核操作日誌保存到不同的路徑就需要創建不同的審核對象
我們把審核操作日誌保存在文件系統里,在創建之前我們還要在相關路徑先創建好保存的文件夾,我們在D盤先創建sqlaudits文件夾,然後執行下面語句
--創建審核對象之前需要切換到master資料庫
USE [master]
GO
CREATE SERVER AUDIT MyFileAudit TO FILE(FILEPATH='D:\sqlaudits') --這里指定文件夾不能指定文件,生成文件都會保存在這個文件夾
GO

實際上,我們在創建審核對象的同時可以指定審核選項,下面是相關腳本
把日誌放在磁碟的好處是可以使用新增的TVF:sys.[fn_get_audit_file] 來過濾和排序審核數據,如果把審核數據保存在Windows 事件日誌里查詢起來非常麻煩
USE [master]
GO
CREATE SERVER AUDIT MyFileAudit TO FILE(
FILEPATH='D:\sqlaudits',
MAXSIZE=4GB,
MAX_ROLLOVER_FILES=6)
WITH (
ON_FAILURE=CONTINUE,
QUEUE_DELAY=1000);

ALTER SERVER AUDIT MyFileAudit WITH(STATE =ON)

MAXSIZE:指明每個審核日誌文件的最大大小是4GB
MAX_ROLLOVER_FILES:指明滾動文件數目,類似於SQL ERRORLOG,達到多少個文件之後刪除前面的歷史文件,這里是6個文件
ON_FAILURE:指明當審核數據發生錯誤時的操作,這里是繼續進行審核,如果指定shutdown,那麼將會shutdown整個實例
queue_delay:指明審核數據寫入的延遲時間,這里是1秒,最小值也是1秒,如果指定0表示是實時寫入,當然性能也有一些影響
STATE:指明啟動審核功能,STATE這個選項不能跟其他選項共用,所以只能單獨一句

在修改審核選項的時候,需要先禁用審核,再開啟審核
ALTER SERVER AUDIT MyFileAudit WITH(STATE =OFF)
ALTER SERVER AUDIT MyFileAudit WITH(QUEUE_DELAY =1000)
ALTER SERVER AUDIT MyFileAudit WITH(STATE =ON)

審核規范
在SQLSERVER審核裡面有審核規范的概念,一個審核對象只能綁定一個審核規范,而一個審核規范可以綁定到多個審核對象
我們來看一下腳本
CREATE SERVER AUDIT SPECIFICATION CaptureLoginsToFile
FOR SERVER AUDIT MyFileAudit
ADD (failed_login_group),
ADD (successful_login_group)
WITH (STATE=ON)
GO

CREATE SERVER AUDIT MyAppAudit TO APPLICATION_LOG
GO
ALTER SERVER AUDIT MyAppAudit WITH(STATE =ON)
ALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFile WITH (STATE=OFF)
GO
ALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFile
FOR SERVER AUDIT MyAppAudit
ADD (failed_login_group),
ADD (successful_login_group)
WITH (STATE=ON)
GO

我們創建一個伺服器級別的審核規范CaptureLoginsToFile,然後再創建多一個審核對象MyAppAudit ,這個審核對象會把審核日誌保存到Windows事件日誌的應用程序日誌里
我們禁用審核規范CaptureLoginsToFile,修改審核規范CaptureLoginsToFile屬於審核對象MyAppAudit ,修改成功

而如果要把多個審核規范綁定到同一個審核對象則會報錯
CREATE SERVER AUDIT SPECIFICATION CaptureLoginsToFileA
FOR SERVER AUDIT MyFileAudit
ADD (failed_login_group),
ADD (successful_login_group)
WITH (STATE=ON)
GO

CREATE SERVER AUDIT SPECIFICATION CaptureLoginsToFileB
FOR SERVER AUDIT MyFileAudit
ADD (failed_login_group),
ADD (successful_login_group)
WITH (STATE=ON)
GO

--消息 33230,級別 16,狀態 1,第 86 行
--審核 'MyFileAudit' 的審核規范已經存在。

這里要說一下 :審核對象和審核規范的修改 ,無論是審核對象還是審核規范,在修改他們的相關參數之前,他必須要先禁用,後修改,再啟用
--禁用審核對象
ALTER SERVER AUDIT MyFileAudit WITH(STATE =OFF)
--禁用伺服器級審核規范
ALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFile WITH (STATE=OFF)
GO
--禁用資料庫級審核規范
ALTER DATABASE AUDIT SPECIFICATION CaptureDBLoginsToFile WITH (STATE=OFF)
GO

--相關修改選項操作

--啟用審核對象
ALTER SERVER AUDIT MyFileAudit WITH(STATE =ON)
--啟用伺服器級審核規范
ALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFile WITH (STATE=ON)
GO
--啟用資料庫級審核規范
ALTER DATABASE AUDIT SPECIFICATION CaptureDBLoginsToFile WITH (STATE=ON)
GO

審核伺服器級別事件
審核服務級別事件,我們一般用得最多的就是審核登錄失敗的事件,下面的腳本就是審核登錄成功事件和登錄失敗事件
CREATE SERVER AUDIT SPECIFICATION CaptureLoginsToFile
FOR SERVER AUDIT MyFileAudit
ADD (failed_login_group),
ADD (successful_login_group)
WITH (STATE=ON)
GO

修改審核規范
--跟審核對象一樣,更改審核規范時必須將其禁用
ALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFile WITH (STATE =OFF)
ALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFile
ADD (login_change_password_gourp),
DROP (successful_login_group)
ALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFile WITH (STATE =ON)
GO

審核操作組
每個審核操作組對應一種操作,在SQLSERVER2008里一共有35個操作組,包括備份和還原操作,資料庫所有權的更改,從伺服器和資料庫角色中添加或刪除登錄用戶
添加審核操作組的只需在審核規范里使用ADD,下面語句添加了登錄用戶修改密碼操作的操作組
ADD (login_change_password_gourp)

這里說一下伺服器審核的內部實際上使用的是SQL2008新增的擴展事件裡面的其中一個package:SecAudit package,當然他內部也是使用擴展事件來收集伺服器信息

審核資料庫級別事件
資料庫審核規范存在於他們的資料庫中,不能審核tempdb中的資料庫操作
CREATE DATABASE AUDIT SPECIFICATION和ALTER DATABASE AUDIT SPECIFICATION
工作方式跟伺服器審核規范一樣
在SQLSERVER2008里一共有15個資料庫級別的操作組
7個資料庫級別的審核操作是:select ,insert,update,delete,execute,receive,references

相關腳本如下:
--創建審核對象
USE [master]
GO
CREATE SERVER AUDIT MyDBFileAudit TO FILE(FILEPATH='D:\sqldbaudits')
GO
ALTER SERVER AUDIT MyDBFileAudit WITH (STATE=ON)
GO
--創建資料庫級別審核規范
USE [sss]
GO
CREATE DATABASE AUDIT SPECIFICATION CaptureDBActionToEventLog
FOR SERVER AUDIT MyDBFileAudit
ADD (database_object_change_group),
ADD (SELECT ,INSERT,UPDATE,DELETE ON schema::dbo BY PUBLIC)
WITH (STATE =ON)

我們先在D盤創建sqldbaudits文件夾
第一個操作組對資料庫中所有對象的DDL語句create,alter,drop等進行記錄
第二個語句監視由任何public用戶(也就是所有用戶)對dbo架構的任何對象所做的DML操作

創建完畢之後可以在SSMS里看到相關的審核

③ 如何通過SQL語句設置資料庫登錄審核的狀態

剛好上次講三層架構.有現成的例子

以一個驗證登陸為例子
這里是界面層一般叫UIL
protected void Button1_Click(object sender, EventArgs e)
{
List<User> Users = BAL.GetUserInfo(txtUserName.Text,txtPassword.Text);

if(Users.Length > 0)
{
Response.Write("登陸成功");
}
else
{
Response.Write("登陸失敗");
}
}

以下是邏輯層代碼,業務邏輯層一般叫BLL
public static List<User> GetUserInfo(string user,string password)
{
string newPassword = GetMD5Hash(password); //這里對密碼進行加密處理,資料庫中存放的是經過MD5加密後的密,業務邏輯層一般都是處理復雜的邏輯.例如加密邏輯
List<User> Users = DAL.GetUserInfo(user,newPassword);

return Users;
}

以下是數據訪問層代碼,數據訪問層一般叫DAL
public static List<User> GetUserInfo(string user,string password)
{
List<User> Users = new List<User>();
string sql = "select * from User where Password = '"+password+"' and User = '"+user+"'"; //寫where子句的時候把Password放前面.因為Password經過加密,所以可以防止SQL注入攻擊
SqlDataAdapter da = new SqlDataAdapter(sql,"這里是資料庫連接字元串");
DataSet ds = new DataSet();
da.Fill(ds);

for(int i=0;i<ds.Tables[0].Rows.Count;i++)
{
User user = new User(ds.Tables[0].Rows[i]["ID"].ToString(),ds.Tables[0].Rows[i]["User"].ToString(),ds.Tables[0].Rows[i]["Password"].ToString());
Users.Add(user);
}

return Users;
}

還會有一個Model層.叫做模板層.是數據表結構的印射.Model層是共用層,其他三層都要用到.
比如資料庫中有張表User,裡面有3個欄位ID,User,Password
那麼在模板層中應該有一個類,資料庫中User表的一行對應一個User對象,一張表對應User對象的集合.
public class User
{
string ID;
string User;
string Password;

//重載構造函數
User(string id,string user,string password)
{
this.ID=id;
this.User=user;
this.Password=password;
}
}

④ sql server 2005 怎麼開啟C2審核策略

在ssms中右鍵點伺服器屬性
在安全性中選擇啟動C2審核跟蹤

⑤ SQL審核 | SQLE-SQL審核平台體驗報告

通過SQLE的產品結構圖我們可以看到,SQLE 的界面設計較簡潔,工作台可以看到與自己相關的待辦工作;首頁列表放置核心功能【工單】審核,其它功能收集到平台管理中;【規則】可以考慮收入到【平台管理】中;【審核計劃】也可以考慮收入到【平台管理】中,審核的結果可以集成到工單中,方便統一進行處理。

通過 SQLE 的流程圖可以看到,整體流程分為兩個兩個部分,一個是基礎配置,配置好了基礎配置以後,就可以執行上線流程了;對於審核不合格的功能依舊可以執行工單,沒有起到自動審核的意義,對於ERROR級別的錯誤可以自動駁回不與上線;進入工單頁面後不能很好的發現審核操作按鈕(工單進度部分),需要下拉窗口才能發現;可以把審核操作放到審核結果列表後面加一個操作列,體驗會更加友好。下圖為縮放67%後才能看到下面的審核操作.

(1)創建SQL工單-SQL語句不支持輸入聯想,建議增加輸入聯想,提高錄入效率

(2)創建SQL工單-SQL語句對於明顯語法錯誤不能及時提示,建議增加語法錯誤提示,提前發現明顯問題

(3)創建SQL工單-SQL語句輸入框高度過高,點擊審核後不方便查看到結果,建議降低高度增加寬度

(4)創建SQL工單-工單不支持自定義上線時間,同時也不支持定時上線

由於時間有限,僅是個人測試體驗;SQLE 整體設計不錯,符合現在主流平台的各方面特徵;主要幾個設計點我比較喜歡:

⑥ 詳解Yearning SQL審核平台功能模塊設計

Yearning SQL審核平台目前兼容99%的Mysql 標准SQL語法。

已知不支持的語句類型有:

下面對其中的功能模塊做一下介紹,以下基於Yearning 2.0版本。

1、dashboard

dashboard主要展示Yearning各項數據包括用戶數/數據源數/工單數/查詢數以及其他圖表,個人信息欄內用戶可以修改密碼/郵箱/真實姓名,同時可以查看該用戶許可權以及申請許可權。

2、我的工單

展示用戶提交的工單信息,對於執行失敗/駁回的工單點擊詳細信息後可以重新修改sql並提交,對於執行成功的工單可以查看回滾語句並且快速提交SQL

3、工單-DDL

具有以下功能:

1)DDL相關SQL提交審核

2)查看錶結構/索引

3)SQL語法高亮/自動補全

如果想獲取表結構詳細信息,必須選填表名並完整填寫工單信息。所有的SQL只有在檢測後錯誤等級為0時提交按鈕才會激活,如下拉列表框內沒有相關數據源顯示請聯系管理員是否賦予相應數據源許可權

4、工單--DML

具備以下功能:

1)DML相關SQL提交審核

2)SQL語法高亮/自動補全

所有的SQL只有在檢測後錯誤等級為0時提交按鈕才會激活,如下拉列表框內沒有相關數據源顯示請聯系管理員是否賦予相應數據源許可權

5、查詢

具備以下功能:

1)查詢/導出數據

2)SQL語法高亮/自動補全

3)快速DML語句提交

如果開啟查詢審核,提交該查詢申請後需對應審核人同意後方可查詢,超級管理員在設置頁面開啟數據導出功能後,查詢申請頁面才會顯示數據導出按鈕(默認為.csv格式),獲取表結構功能必須點擊相應表名此為前置條件,快速提交功能僅支持DML語句,如下拉列表框內沒有相關數據源顯示請聯系管理員是否賦予相應數據源許可權

1、工單審核

功能:DDL/DML管理員審核並執行

實時刷新開關默認打開,如需刪除記錄請先關閉該開關。如定時工單的時間小於當前時間,執行該工單將會立即執行,目前僅支持延時工單中止,其他工單執行後無法中止!

2、查詢審核

功能:用戶查詢審核

點擊全部中止按鈕將會中止所有用戶的查詢許可權 如沒有在設置頁面開啟查詢審核開關,則默認用戶查詢申請提交後自動獲得查詢許可權。 用戶查詢時限在設置頁面進行設置

3、許可權審核

功能:用戶許可權審核

許可權由用戶在首頁個人信息處自主申請,管理員可在該審核頁面決定是否給予用戶申請的許可權,由於用戶可能存在胡亂申請許可權的問題,所以 管理員在查看用戶許可權申請工單的同時可對工單申請的許可權進行修改,確定具體的許可權給予

1、工單審計

主要是審計工單的執行情況,記錄工單的執行時間、申請人、執行人等信息。

2、查詢審計

針對資料庫查詢記錄做審計

1、用戶

功能:創建/修改/刪除用戶

當多級審核關閉後系統並不會自動將角色為執行人的用戶重置角色,需要自行重置相應用戶角色

2、資料庫

功能:添加/編輯/刪除 數據源

所有添加的數據源應在添加之前點擊測試連接按鈕進行連接性測試,保證連接性。

數據源分為 查詢數據源/非查詢數據源 。查詢數據源僅會出現在細粒度許可權的查詢數據源范圍內。非查詢數據源同理。(對於查詢與執行數據源應拆分為二,保障線上執行數據源不會因為查詢慢sql影響業務),此類別添加後 無法通過編輯進行修改 ,需要慎重添加。

3、用戶許可權

功能:用戶許可權修改/清空

批量賦權僅支持角色為使用人的用戶。由於批量賦權為覆蓋更新,僅適合在用戶許可權為空時使用。

4、設置

功能:

在配置填寫無誤後點擊測試按鈕進行相關測試, 使用消息推送前必須先打開對應消息推送開關,否則Yearning不會進行推送

5、審核規則

功能:設置SQL檢測規則

保存後即時生效

後面會分享更多devops和DBA方面的內容,感興趣的朋友可以關注下~