DB2系統目錄視圖存在著安全隱患,那麼其安全性該如何提高呢?下面提出了兩個建議,供您參考,希望可以對您有所幫助。
第一個是比較簡單的處理方法,即從public中撤銷對系統默認視圖的select特權。然後給需要訪問這些信息的用戶再授予他們對於這些系統默認視圖的select查詢權限。在DB2數據庫中這些DB2系統目錄視圖也是視圖的一種,所以無論是授權還是撤銷權限都是跟其他任何普通視圖的授予與撤銷權限的方法是一致的。
唯一的區別就是操作用戶權限上的區別。對於普通的視圖,只要視圖的所有者或者具有視圖權限控制的用戶都可以更改視圖的相關權限。而對於DB2系統目錄視圖來說,操作員必須有sysadm或者DBADM的權限,才能夠更改系統目錄視圖的權限。即收回某些用戶的特權,或者重新賦予某些用戶具有對系統目錄視圖的查詢權限。
第二個方法實現起來比較復雜,但是比較實用。簡單的說,就是按照Oracle數據庫系統的解決方式,將系統目錄視圖分為三類。第一類是user系統目錄視圖。即在查詢系統目錄視圖的時,以當前用戶為查詢條件,在系統目錄視圖中反映出來的是用戶自己建立的對象。其他用戶建立的對象,即使這個用戶具有查詢或者其他更加高級的權限,在這個視圖中也無法顯示出來。
這對於用戶維護自己創建的對象比較方便。第二類視圖是ALL視圖。這個視圖在運行時,也是以當前用戶為查詢條件。不過在這個視圖中主要反映兩類信息。一是反映用戶自己所創建的對象,二是當前用戶具有查詢等相關權限的對象信息。也就說,只要用戶有權查詢的對象都會在這個類別的系統目錄視圖中列出來。
第三類視圖是DBA視圖,即顯示所有數據庫對象以及相關的授權信息。這類視圖只有數據庫管理員才有查詢權限,其他用戶不具有這個視圖的查詢權限。分類分好後,可以先取消所有用戶對DB2系統目錄視圖Select權限。注意在授權的時候,不是將系統目錄視圖的查詢權限賦予給其他的用戶。
而是以DB2系統目錄視圖為基本對象,在此基礎上再根據上面的分類來建立對應的視圖。然後在授權的時候,筆者是將這些新建立的視圖權限賦予給相關的用戶。也就說,用戶並不是直接查詢系統目錄視圖,而是通過查詢數據庫管理員所建立的視圖來查詢DB2系統目錄視圖中的相關內容。
這不僅可以在系統目錄視圖與用戶之間多建立一道安全的屏障,而且還可以實現對目錄視圖內容更加精細的控制。為了操作上的方便,筆者建議將建立視圖和賦予權限的語句保存下來。以後若需要重新部署數據庫,或者數據庫管理員跳槽後需要維護一個新的DB2數據庫系統,那麼可以直接通過這個語句來重建相關的視圖。
如果DB2數據庫部署比較簡單,只有一個數據庫管理員的話,那麼只需要采用第一種簡便的處理方式既可。但是如果DB2數據庫應用比較復雜,有多個數據庫管理員各司其職,共同負責數據庫應用的時候,筆者建議采用第二種處理方式。添加了過濾條件之後,即可以保障DB2系統目錄視圖數據的安全,還方便了用戶的操作。
此時即使某個數據庫管理員的帳號與密碼被洩露,那麼其最終受影響的也只有這個數據庫管理員創建或者擁有查詢等權限的對象。而不會將其他用戶創建的對象或者這個用戶具有查詢等權限的對象信息洩露給其他人。其實這第二種方案只是第一次操作的時候比較復雜。
以後還有機會再次維護數據庫系統的話,只需要直接執行第一次保存下來的SQL語句即可。所以不少有經驗的數據庫管理員,還都是比較樂於使用第二種解決方案的。因為對於他們來說,可能第二種解決方案比第一種解決方案更加的簡單,使用起來更加的方便。
DB2查詢管理實用程序
帶您學習DB2數據倉庫中心
DB2數據倉庫產品簡介
DB2分頁的實現
DB2表空間的管理方式