DB2 系統目錄視圖(System Catalog Views)儲存資料庫所有物件的定義、權限與使用者授權等敏感中繼資料。預設安裝時,DB2 將這些視圖的 SELECT 權限授予 PUBLIC 群組,導致任何使用者皆可查詢全庫物件資訊(如建表者、權限分佈),甚至不需擁有該物件的存取權。這與 Oracle 的 USER/ALL/DBA 三層字典視圖機制形成鮮明對比:Oracle 一般使用者僅能看到自己擁有或被授權的物件,極大降低資訊洩露風險。
PUBLIC 對所有系統目錄視圖的 SELECT 權限:REVOKE SELECT ON SYSCAT.TABLES FROM PUBLIC(依視圖逐一執行)GRANT SELECT ON SYSCAT.TABLES TO ROLE APP_DEVELOPER操作需具備 SYSADM 或 DBADM 權限。此法實作簡單,適合單一 DBA、資料敏感度中等的環境。
以原系統目錄視圖為基礎,建立三層應用視圖並授權:
WHERE DEFINER = SESSION_USER,僅顯示當前使用者建立的物件。WHERE DEFINER = SESSION_USER OR 有權限,顯示自有與被授權物件。優點:
✅ 繼續保留原視圖完整性,不影響系統工具
✅ 實現資料列級安全,杜越權查詢
✅ SQL 腳本化後可快速部署至新環境
缺點:初次建立較繁瑣,適合多 DBA 協作、高合規要求場景。
簡單環境用策略一;複雜多租戶、多 DBA 分工環境強烈建議投入策略二,長期維護成本更低且安全性更高。