提高數(shù)據(jù)庫系統(tǒng)目錄視圖安全性的兩個建議
DB2系統(tǒng)目錄視圖存在著安全隱患,那么其安全性該如何提高呢?下面提出了兩個建議,供您參考,希望可以對您有所幫助。
***個是比較簡單的處理方法,即從public中撤銷對系統(tǒng)默認(rèn)視圖的select特權(quán)。然后給需要訪問這些信息的用戶再授予他們對于這些系統(tǒng)默認(rèn)視圖的select查詢權(quán)限。在DB2數(shù)據(jù)庫中這些DB2系統(tǒng)目錄視圖也是視圖的一種,所以無論是授權(quán)還是撤銷權(quán)限都是跟其他任何普通視圖的授予與撤銷權(quán)限的方法是一致的。
***的區(qū)別就是操作用戶權(quán)限上的區(qū)別。對于普通的視圖,只要視圖的所有者或者具有視圖權(quán)限控制的用戶都可以更改視圖的相關(guān)權(quán)限。而對于DB2系統(tǒng)目錄視圖來說,操作員必須有sysadm或者DBADM的權(quán)限,才能夠更改系統(tǒng)目錄視圖的權(quán)限。即收回某些用戶的特權(quán),或者重新賦予某些用戶具有對系統(tǒng)目錄視圖的查詢權(quán)限。
第二個方法實(shí)現(xiàn)起來比較復(fù)雜,但是比較實(shí)用。簡單的說,就是按照Oracle數(shù)據(jù)庫系統(tǒng)的解決方式,將系統(tǒng)目錄視圖分為三類。***類是user系統(tǒng)目錄視圖。即在查詢系統(tǒng)目錄視圖的時,以當(dāng)前用戶為查詢條件,在系統(tǒng)目錄視圖中反映出來的是用戶自己建立的對象。其他用戶建立的對象,即使這個用戶具有查詢或者其他更加高級的權(quán)限,在這個視圖中也無法顯示出來。
這對于用戶維護(hù)自己創(chuàng)建的對象比較方便。第二類視圖是ALL視圖。這個視圖在運(yùn)行時,也是以當(dāng)前用戶為查詢條件。不過在這個視圖中主要反映兩類信息。一是反映用戶自己所創(chuàng)建的對象,二是當(dāng)前用戶具有查詢等相關(guān)權(quán)限的對象信息。也就說,只要用戶有權(quán)查詢的對象都會在這個類別的系統(tǒng)目錄視圖中列出來。
第三類視圖是DBA視圖,即顯示所有數(shù)據(jù)庫對象以及相關(guān)的授權(quán)信息。這類視圖只有數(shù)據(jù)庫管理員才有查詢權(quán)限,其他用戶不具有這個視圖的查詢權(quán)限。分類分好后,可以先取消所有用戶對DB2系統(tǒng)目錄視圖Select權(quán)限。注意在授權(quán)的時候,不是將系統(tǒng)目錄視圖的查詢權(quán)限賦予給其他的用戶。
而是以DB2系統(tǒng)目錄視圖為基本對象,在此基礎(chǔ)上再根據(jù)上面的分類來建立對應(yīng)的視圖。然后在授權(quán)的時候,筆者是將這些新建立的視圖權(quán)限賦予給相關(guān)的用戶。也就說,用戶并不是直接查詢系統(tǒng)目錄視圖,而是通過查詢數(shù)據(jù)庫管理員所建立的視圖來查詢DB2系統(tǒng)目錄視圖中的相關(guān)內(nèi)容。
這不僅可以在系統(tǒng)目錄視圖與用戶之間多建立一道安全的屏障,而且還可以實(shí)現(xiàn)對目錄視圖內(nèi)容更加精細(xì)的控制。為了操作上的方便,筆者建議將建立視圖和賦予權(quán)限的語句保存下來。以后若需要重新部署數(shù)據(jù)庫,或者數(shù)據(jù)庫管理員跳槽后需要維護(hù)一個新的DB2數(shù)據(jù)庫系統(tǒng),那么可以直接通過這個語句來重建相關(guān)的視圖。
如果DB2數(shù)據(jù)庫部署比較簡單,只有一個數(shù)據(jù)庫管理員的話,那么只需要采用***種簡便的處理方式既可。但是如果DB2數(shù)據(jù)庫應(yīng)用比較復(fù)雜,有多個數(shù)據(jù)庫管理員各司其職,共同負(fù)責(zé)數(shù)據(jù)庫應(yīng)用的時候,筆者建議采用第二種處理方式。添加了過濾條件之后,即可以保障DB2系統(tǒng)目錄視圖數(shù)據(jù)的安全,還方便了用戶的操作。
此時即使某個數(shù)據(jù)庫管理員的帳號與密碼被泄露,那么其最終受影響的也只有這個數(shù)據(jù)庫管理員創(chuàng)建或者擁有查詢等權(quán)限的對象。而不會將其他用戶創(chuàng)建的對象或者這個用戶具有查詢等權(quán)限的對象信息泄露給其他人。其實(shí)這第二種方案只是***次操作的時候比較復(fù)雜。
以后還有機(jī)會再次維護(hù)數(shù)據(jù)庫系統(tǒng)的話,只需要直接執(zhí)行***次保存下來的SQL語句即可。所以不少有經(jīng)驗(yàn)的數(shù)據(jù)庫管理員,還都是比較樂于使用第二種解決方案的。因?yàn)閷τ谒麄儊碚f,可能第二種解決方案比***種解決方案更加的簡單,使用起來更加的方便。
【編輯推薦】