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

Oracle 資料庫多層次安全機制深度解析

     編輯:Oracle 資料庫基礎

核心安全架構三大支柱

Oracle 資料庫的安全體系建立在三大基石之上:用戶識別鑑別、授權與存取控制、稽核技術,並輔以觸發器實現自訂安全邏輯,形成纵深防禦體系。數據字典在授權檢查與稽核記錄中扮演核心角色,且獨立於作業系統安全機制運作。

一、用戶識別與鑑別

最外層防線:用戶必須宣告身分,系統驗證密碼。允許連續失敗三次,第三次失敗自動斷開連線,有效阻擋暴力破解。

二、授權與存取控制機制

採 非集中式授權模型:DBA 負責系統權限,物件擁有者負責自有物件權限。支援重複授權(不報錯)與無效回收(回收不存在權限亦視為成功),簡化管理腳本邏輯。

1. 系統權限:80+ 細粒度權限與角色簡化管理

  • CONNECT:建立會話、基礎查詢操作(SELECT/INSERT/UPDATE/DELETE)、建立視圖/索引/同義詞等。
  • RESOURCE:建立表、序列、觸發器等儲存物件,擁有者自動擁有該物件所有權限。
  • DBA:最高權限,涵蓋前兩者並具備管理操作(建立用戶、備份恢復、系統配置等)。

角色授權範例: GRANT CONNECT TO U1; 一次性授予十餘項系統權限,避免逐條 GRANT。

2. 物件權限:三級防護體系

表級權限

ALTER, DELETE, INDEX, INSERT, SELECT, UPDATE, ALL,透過 GRANT/REVOKE 控制。

行級安全性

透過 視圖 實現:建立水平子集視圖(如僅含資管系學生),授予視圖 SELECT 權限而非基礎表。

列級安全性

兩種實現路徑:

  • 視圖法:建立垂直子集視圖(排除敏感欄位)。
  • 直接授權:GRANT UPDATE(Sno, Cno) ON SC TO U2; 僅授予特定欄位更新權。回收時 REVOKE UPDATE ON SC FROM U2; 為整表回收,不支援單欄回收。

層級約束: 上層權限約束下層,擁有表級 UPDATE 即隱含所有欄位 UPDATE。採分散式控制,WITH GRANT OPTION 允許轉授,但禁止循環授權。所有權限資訊記錄於數據字典,每次操作前必經字典合法性檢查。

三、稽核技術:靈活可控的合規留痕

類型設定者監控範圍
用戶級稽核物件擁有者自有表/視圖的所有成功/失敗存取與 SQL 操作
系統級稽核DBA登入嘗試、GRANT/REVOKE、系統權限操作

指令範例:

-- 稽核 SC 表的結構變更與資料修改
AUDIT ALTER, UPDATE ON SC;
-- 取消 SC 表所有稽核
NOAUDIT ALL ON SC;

稽核設定存於 SYS.TABLES,稽核記錄存於 SYS.AUDIT_TRAIL,均屬數據字典。

四、自訂安全邏輯:觸發器實現業務級管控

範例:限制 Student 表僅能在工作日 08:00-17:00 修改:

CREATE OR REPLACE TRIGGER secure_student
BEFORE INSERT OR UPDATE OR DELETE ON student
BEGIN
  IF (TO_CHAR(SYSDATE, 'DY') IN ('SAT','SUN'))
     OR (TO_NUMBER(TO_CHAR(SYSDATE,'HH24')) NOT BETWEEN 8 AND 17) THEN
    RAISE_APPLICATION_ERROR(-20506,
      'You may only change data during normal business hours.');
  END IF;
END;

觸發器存於數據字典,每次 DML 自動觸發檢查。同理可細化稽核規則,實現更精細的操作粒度控制。

總結

Oracle 提供從實例登入、物件存取、操作稽核到業務邏輯管控的完整多層次安全體系,配合數據字典集中管理,滿足企業級合規與資安需求。

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