DB2系統目錄視圖是DB2數據庫的重要組成部分,但是在安全上,DB2系統目錄視圖卻存在著一些隱患,下面就詳細為您介紹該問題。
在Oracle數據庫中,也有跟DB2系統目錄視圖類似的設計。如將相關的數據庫對象以及權限等信息等存儲在數據字典中。但是對於Oracle數據庫來說,對於這個數據字典相關的視圖做了相關的限制。如在Oracle數據庫中,將數據字典分為user、all、dba三類。一般用戶只能夠使用user或者all數據字典視圖。
也就是說,只能夠查詢到自己擁有的對象或者自己擁有特定權限的對象信息。對於他人建立的對象,或者自己沒有權查詢的對象信息,一般用戶是查詢不到的。只有像具有數據庫管理員等特權的用戶才可以查詢到全部數據庫對象的信息。這在很大程度上保障了數據字典視圖的安全性。
但是對於DB2數據庫的DB2系統目錄視圖,在這方面做的就不是很到位。如默認情況下,在部署DB2數據庫的時候,數據庫會自動創建系統目錄視圖。而在創建這個DB2系統目錄視圖的時候,系統會將這個目錄視圖的select查詢權限賦予給public組。將這個目錄視圖賦予給這個組,就以為這數據庫系統中的用戶都具有查詢這個DB2系統目錄視圖的權限。
即使這個對象不是這個用戶所創建的,或者用戶沒有這個對象的訪問權限,用戶也可以查詢到這個對象的相關信息,如誰創建了這個對象,誰擁有這個對象的哪些權限的信息。當數據庫中數據的保密級別或者商業價值不怎麼高的時候,這麼設計不怎麼會產生安全問題。
但是,用戶使用起來不方便。如數據庫設計的比較復雜,有多個管理員同時維護數據庫系統。此時每個數據庫管理員之需要查詢到自己所創建的或則具有訪問權限的相關信息,而不需要全部的對象信息。顯然憑現在系統目錄視圖的設計,不能夠做到這一點。
但是如果數據庫中的數據商業價值比較高,有很多人虎視眈眈的在打這些數據的注意,此時數據庫系統對於系統目錄視圖的默認權限設計,可能就不怎麼合適了。因為目錄視圖中存儲的所有對象信息(包括授權信息)對於所有用戶都是開放的。
這會為黑客或者其他不按好心的用戶竊取相關的資料提供便利。所以對於安全要求高的企業,在部署DB2數據庫的時候,有可能需要更改這些DB2系統目錄視圖的默認權限,以提高目錄視圖中信息的安全性。讓只有相關的人員才能夠看到目錄視圖中的數據庫對象以及權限等相關信息。