首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

強化 DB2 系統目錄視圖安全性的兩大策略

     編輯:DB2 教學

系統目錄視圖的安全隱憂

DB2 系統目錄視圖(System Catalog Views)儲存資料庫所有物件的定義、權限與使用者授權等敏感中繼資料。預設安裝時,DB2 將這些視圖的 SELECT 權限授予 PUBLIC 群組,導致任何使用者皆可查詢全庫物件資訊(如建表者、權限分佈),甚至不需擁有該物件的存取權。這與 Oracle 的 USER/ALL/DBA 三層字典視圖機制形成鮮明對比:Oracle 一般使用者僅能看到自己擁有或被授權的物件,極大降低資訊洩露風險。

策略一:最小權限回收與精準授權(簡易版)

  1. 回收 PUBLIC 對所有系統目錄視圖的 SELECT 權限:
    REVOKE SELECT ON SYSCAT.TABLES FROM PUBLIC(依視圖逐一執行)
  2. 按需將特定視圖的查詢權限授予真正需要的使用者/角色:
    GRANT SELECT ON SYSCAT.TABLES TO ROLE APP_DEVELOPER

操作需具備 SYSADM 或 DBADM 權限。此法實作簡單,適合單一 DBA、資料敏感度中等的環境。

策略二:建立分層過濾視圖(進階版,參考 Oracle 模式)

以原系統目錄視圖為基礎,建立三層應用視圖並授權:

  • USER 視圖:WHERE DEFINER = SESSION_USER,僅顯示當前使用者建立的物件。
  • ALL 視圖:WHERE DEFINER = SESSION_USER OR 有權限,顯示自有與被授權物件。
  • DBA 視圖:無過濾條件,僅授予 DBA 角色。

優點:
✅ 繼續保留原視圖完整性,不影響系統工具
✅ 實現資料列級安全,杜越權查詢
✅ SQL 腳本化後可快速部署至新環境
缺點:初次建立較繁瑣,適合多 DBA 協作、高合規要求場景。

建議選擇

簡單環境用策略一;複雜多租戶、多 DBA 分工環境強烈建議投入策略二,長期維護成本更低且安全性更高。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved