產(chǎn)品看點|中安威士數(shù)據(jù)庫審計之綁定變量審計
功能介紹數(shù)據(jù)安全管理專家--保護核心數(shù)據(jù),捍衛(wèi)網(wǎng)絡安全。我們一直在努力! 在這里我們會為您提供***的安全資訊、安全知識、解決方案等,敬請期待!
近年來,隨著相關法律法規(guī)的完善、國家等級化保護要求,以及行業(yè)風險管理和內(nèi)控指標的出臺,安全審計產(chǎn)品慢慢的為大家所熟悉。而近年來數(shù)據(jù)盜竊和數(shù)據(jù)泄露等高危事件頻發(fā),數(shù)據(jù)安全也越來越受各大企業(yè)和單位的重視。數(shù)據(jù)庫審計就是一款保護用戶數(shù)據(jù)安全的產(chǎn)品。
上一期的數(shù)據(jù)庫審計功能我們詳述了雙向審計,今天我們來聊一下綁定變量審計。
那么什么是綁定變量呢?
首先我們來看一下SQL語句的解析流程,如下圖所示:
服務器進程接收到一條SQL語句,首先檢查共享池中是否有之前解析過的相同的SQL語句,如果有,就從共享池的緩存庫中找到之前解析生成的執(zhí)行計劃直接執(zhí)行,SQL語句不需要再次解析,從而直接跳到執(zhí)行階段,這種解析稱作軟解析。
如果在共享池的庫緩存中找不到對應的執(zhí)行計劃,則必須經(jīng)過解析SQL的環(huán)節(jié),生成執(zhí)行計劃,這種解析稱作硬解析。
將解析過程進一步簡化可以得到下圖:
硬解析 涉及到大量的數(shù)據(jù)運算,會消耗大量的CPU資源,例如下兩條語句單獨執(zhí)行需要完整的硬解析兩遍:
select * from userinfo where userid =’N0001’;
select * from userinfo where userid =’N0002’;
但如果運用綁定變量執(zhí)行:
select * from userinfo where id= :1;
使:1分別等于100和200,則數(shù)據(jù)庫解析時用占位符,然后再傳值執(zhí)行,這樣就只需要執(zhí)行一次硬解析,兩SQL復用同一個執(zhí)行計劃,節(jié)省了硬解析的資源開銷。
假設某條語句被重復執(zhí)行了非常多次,那么使用綁定變量帶來的好處是巨大的,能極大的節(jié)省資源,提高速度,因此是一種重要的性能優(yōu)化手段被廣泛應用于對性能有要求的系統(tǒng)中。
對數(shù)據(jù)庫審計的影響
因為綁定變量的采用,傳統(tǒng)的審計只能審計到含有變量字符的SQL,不包含具體值,這樣會造成信息的丟失。
例如執(zhí)行語句:
select * from userinfo where userid=:1; 1:=’N0006’;
傳統(tǒng)方式的審計日志只會記錄如下語句:
select * from userinfo where name=:1;
這樣會造成如下后果:
(一)對審計日志中查詢條件中的的具體值做檢索時會導致檢索結果不準確;
(二)不能審計到正確的SQL語句。
完整還原
不漏審是檢驗數(shù)據(jù)庫審計系統(tǒng)的基本標準,如果要得到全面準確的審計,對綁定變量審計的功能必不可少,我們沒有忽視這一小小細節(jié),我們的審計功能很早就可以***審計到綁定變量的具體值,并還原成完整的語句,不遺漏任何一條SQL。
數(shù)據(jù)庫是各種軟件應用系統(tǒng)的基礎設施,系統(tǒng)對于數(shù)據(jù)庫的訪問SQL千變?nèi)f化,要想實現(xiàn)全面準確的審計,就要不斷的跟進分析和研發(fā),讓審計的觸角覆蓋到數(shù)據(jù)庫訪問的每一個角落。