DB2 系統目錄視圖儲存資料庫所有物件定義、權限資訊及使用者授權細節。預設部署時,系統自動將這些視圖的 SELECT 權限授予 PUBLIC 群組,導致所有資料庫使用者均可查詢完整目錄資訊,包含:
此設計與 Oracle 資料字典的三層權限模型(USER/ALL/DBA)形成鮮明對比:Oracle 限制一般使用者僅能查看自有或授權物件,DBA 視圖需特殊權限。
| 環境類型 | 風險等級 | 說明 |
|---|---|---|
| 低機密資料、單一 DBA | 低 | 預設設定通常可接受 |
| 多 DBA 協作、職責分離 | 中 | DBA 間不應互相可見彼此管理物件 |
| 高商業價值、嚴格合規要求 | 高 | 目錄資訊可成為駭客偵察攻擊面的關鍵情報 |
SYSADM 或 DBADM 權限執行:REVOKE SELECT ON SYSCAT.TABLES FROM PUBLIC(針對所有目錄視圖逐一執行)SELECT 權限授予特定使用者/角色:GRANT SELECT ON SYSCAT.TABLES TO USER app_user優點:實作簡單、立即生效。
缺點:粒度粗略,無法實現「僅見自有物件」的細緻控制。
| 視圖層級 | 命名慣例 | 可見範圍 | 授權對象 |
|---|---|---|---|
| USER 層 | V_USER_* | 當前使用者建立的物件 | 一般開發/應用帳號 |
| ALL 層 | V_ALL_* | 當前使用者建立 + 擁有查詢等權限的物件 | 高級開發/支援人員 |
| DBA 層 | V_DBA_* | 所有物件及授權資訊 | 僅 DBA 群組 |
PUBLIC 對原生目錄視圖的 SELECT 權限。WHERE DEFINER = SESSION_USER 等條件)。進階效益:
目錄視圖部分統計欄位(如 COLSTATS、DISTCOUNT 等)可能包含業務敏感數值。建議:
LBAC)限制存取。系統目錄視圖往往被忽視,實則是資料庫安全防禦的「情報中樞」,妥善管控其可見性是企業級 DB2 部署的必修課。