中安威士數據庫審計之綁定變量審計

近年來,隨着相關法律法規的完善、國家等級化保護要求,以及行業風險管理和內控指標的出臺,安全審計產品慢慢的爲大家所熟悉。而近年來數據盜竊和數據泄露等高危事件頻發,數據安全也越來越受各大企業和單位的重視。數據庫審計就是一款保護用戶數據安全的產品。

上一期的數據庫審計功能我們詳述了雙向審計,今天我們來聊一下綁定變量審計。

那麼什麼是綁定變量呢?

首先我們來看一下SQL語句的解析流程,如下圖所示:

在這裏插入圖片描述

服務器進程接收到一條SQL語句,首先檢查共享池中是否有之前解析過的相同的SQL語句,如果有,就從共享池的緩存庫中找到之前解析生成的執行計劃直接執行,SQL語句不需要再次解析,從而直接跳到執行階段,這種解析稱作軟解析。

如果在共享池的庫緩存中找不到對應的執行計劃,則必須經過解析SQL的環節,生成執行計劃,這種解析稱作硬解析。

將解析過程進一步簡化可以得到下圖:

在這裏插入圖片描述

硬解析 涉及到大量的數據運算,會消耗大量的CPU資源,例如下兩條語句單獨執行需要完整的硬解析兩遍:

select * from userinfo where userid =’N0001’;

select * from userinfo where userid =’N0002’;

但如果運用綁定變量執行:

select * from userinfo where id= :1;

使:1分別等於100和200,則數據庫解析時用佔位符,然後再傳值執行,這樣就只需要執行一次硬解析,兩SQL複用同一個執行計劃,節省了硬解析的資源開銷。

假設某條語句被重複執行了非常多次,那麼使用綁定變量帶來的好處是巨大的,能極大的節省資源,提高速度,因此是一種重要的性能優化手段被廣泛應用於對性能有要求的系統中。

對數據庫審計的影響

因爲綁定變量的採用,傳統的審計只能審計到含有變量字符的SQL,不包含具體值,這樣會造成信息的丟失。

例如執行語句:

select * from userinfo where userid=:1; 1:=’N0006’;

傳統方式的審計日誌只會記錄如下語句:

select * from userinfo where name=:1;

這樣會造成如下後果:

(一)對審計日誌中查詢條件中的的具體值做檢索時會導致檢索結果不準確;

(二)不能審計到正確的SQL語句。

完整還原

不漏審是檢驗數據庫審計系統的基本標準,如果要得到全面準確的審計,對綁定變量審計的功能必不可少,我們沒有忽視這一小小細節,我們的審計功能很早就可以完美審計到綁定變量的具體值,並還原成完整的語句,不遺漏任何一條SQL。

在這裏插入圖片描述

數據庫是各種軟件應用系統的基礎設施,系統對於數據庫的訪問SQL千變萬化,要想實現全面準確的審計,就要不斷的跟進分析和研發,讓審計的觸角覆蓋到數據庫訪問的每一個角落。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章