產(chǎn)品看點(diǎn)|中安威士數(shù)據(jù)庫審計(jì)之綁定變量審計(jì)
功能介紹數(shù)據(jù)安全管理專家--保護(hù)核心數(shù)據(jù),捍衛(wèi)網(wǎng)絡(luò)安全。我們一直在努力! 在這里我們會為您提供***的安全資訊、安全知識、解決方案等,敬請期待!
近年來,隨著相關(guān)法律法規(guī)的完善、國家等級化保護(hù)要求,以及行業(yè)風(fēng)險管理和內(nèi)控指標(biāo)的出臺,安全審計(jì)產(chǎn)品慢慢的為大家所熟悉。而近年來數(shù)據(jù)盜竊和數(shù)據(jù)泄露等高危事件頻發(fā),數(shù)據(jù)安全也越來越受各大企業(yè)和單位的重視。數(shù)據(jù)庫審計(jì)就是一款保護(hù)用戶數(shù)據(jù)安全的產(chǎn)品。
上一期的數(shù)據(jù)庫審計(jì)功能我們詳述了雙向?qū)徲?jì),今天我們來聊一下綁定變量審計(jì)。
那么什么是綁定變量呢?
首先我們來看一下SQL語句的解析流程,如下圖所示:

服務(wù)器進(jìn)程接收到一條SQL語句,首先檢查共享池中是否有之前解析過的相同的SQL語句,如果有,就從共享池的緩存庫中找到之前解析生成的執(zhí)行計(jì)劃直接執(zhí)行,SQL語句不需要再次解析,從而直接跳到執(zhí)行階段,這種解析稱作軟解析。
如果在共享池的庫緩存中找不到對應(yīng)的執(zhí)行計(jì)劃,則必須經(jīng)過解析SQL的環(huán)節(jié),生成執(zhí)行計(jì)劃,這種解析稱作硬解析。
將解析過程進(jìn)一步簡化可以得到下圖:

硬解析 涉及到大量的數(shù)據(jù)運(yùn)算,會消耗大量的CPU資源,例如下兩條語句單獨(dú)執(zhí)行需要完整的硬解析兩遍:
select * from userinfo where userid =’N0001’;
select * from userinfo where userid =’N0002’;
但如果運(yùn)用綁定變量執(zhí)行:
select * from userinfo where id= :1;
使:1分別等于100和200,則數(shù)據(jù)庫解析時用占位符,然后再傳值執(zhí)行,這樣就只需要執(zhí)行一次硬解析,兩SQL復(fù)用同一個執(zhí)行計(jì)劃,節(jié)省了硬解析的資源開銷。
假設(shè)某條語句被重復(fù)執(zhí)行了非常多次,那么使用綁定變量帶來的好處是巨大的,能極大的節(jié)省資源,提高速度,因此是一種重要的性能優(yōu)化手段被廣泛應(yīng)用于對性能有要求的系統(tǒng)中。
對數(shù)據(jù)庫審計(jì)的影響
因?yàn)榻壎ㄗ兞康牟捎茫瑐鹘y(tǒng)的審計(jì)只能審計(jì)到含有變量字符的SQL,不包含具體值,這樣會造成信息的丟失。
例如執(zhí)行語句:
select * from userinfo where userid=:1; 1:=’N0006’;
傳統(tǒng)方式的審計(jì)日志只會記錄如下語句:
select * from userinfo where name=:1;
這樣會造成如下后果:
(一)對審計(jì)日志中查詢條件中的的具體值做檢索時會導(dǎo)致檢索結(jié)果不準(zhǔn)確;
(二)不能審計(jì)到正確的SQL語句。
完整還原
不漏審是檢驗(yàn)數(shù)據(jù)庫審計(jì)系統(tǒng)的基本標(biāo)準(zhǔn),如果要得到全面準(zhǔn)確的審計(jì),對綁定變量審計(jì)的功能必不可少,我們沒有忽視這一小小細(xì)節(jié),我們的審計(jì)功能很早就可以***審計(jì)到綁定變量的具體值,并還原成完整的語句,不遺漏任何一條SQL。


數(shù)據(jù)庫是各種軟件應(yīng)用系統(tǒng)的基礎(chǔ)設(shè)施,系統(tǒng)對于數(shù)據(jù)庫的訪問SQL千變?nèi)f化,要想實(shí)現(xiàn)全面準(zhǔn)確的審計(jì),就要不斷的跟進(jìn)分析和研發(fā),讓審計(jì)的觸角覆蓋到數(shù)據(jù)庫訪問的每一個角落。























