講解Oracle資料庫提供的多種安全性措施 (2)
(3)列級安全性
Oracle列級安全性可以由檢視實現,也可以直接在基本表上定義。
用檢視定義表的垂直子集就可以實現列級安全性,方法與上面類似。
直接在基本表上定義和回收列級許可權也是使用GRANT和REVOKE語句。目前Oracle的列級許可權只有UPDATE,回收列級UPDATE許可權時,Oracle不允許一列一列地回收,只能回收整個表的UPDATE許可權。例如,
GRANT UPDATE(Sno,Cno)ON SC TO U2;
把對SC表中Sno列和Cno列的UPDATE許可權授予U2使用者。
REVOKE UPDATE ON SC FROM U2;
回收了U2使用者對SC表中Sno列和Cno列的UPDATE許可權。
在Oracle中,表、行、列三級物件自上而下構成一個層次結構,其中上一級物件的許可權制約下一級物件的許可權。例如當一個使用者擁有了對某個表的UPDATE許可權,即相當於在表的所有列都擁有了UPDATE許可權。
Oracle對資料庫物件的許可權採用分散控制方式,允許具有WITH GRANT OPTION的使用者把相應許可權或其子集傳遞授予其他使用者,但不允許迴圈授權,即被授權者不能把許可權再授回給授權者或其祖先。
Oracle把所有許可權資訊記錄在資料字典中,當使用者進行資料庫操作時,Oracle首先根據資料字典中的許可權資訊,檢查操作的合法性。在Oracle中,安全性檢查是任何資料庫操作的第一步。
三、Oracle的審計技術
在Oracle中,審計分為使用者級審計和系統級審計。使用者級審計是任何Oracle使用者可設定的審計,主要是使用者針對自己建立的資料庫表或檢視進行審計,記錄所有使用者對這些表或檢視的一切成功和(或)不成功的訪問要求以及各種型別的SQL操作。
系統級審計只能由DBA設定,用以監測成功或失敗的登入要求、監測GRANT和REVOKE操作以及其他資料庫級許可權下的操作。
Oracle的審計功能很靈活,是否使用審計,對哪些表進行審計,對哪些操作進行審計等都可以由使用者選擇。為此,Oracle提供了AUDIT語句設定審計功能,NOAUDIT語句取消審計功能。設定審計時,可以詳細指定對哪些SQL操作進行審計。例如,
對修改SC表結構或資料的操作進行審計可使用如下語句:
AUDIE ALTER,UPDATE ON SC;
取消對SC表的一切審計可使用如下語句:
NOAUDIT ALL ON SC;
在Oracle中,審計設定以及審計內容均存放在資料字典中。其中審計設定記錄在資料字典表SYS.TABLES中,審計內容記錄在資料字典表SYS.AUDIT_TRAIL中。
四、使用者定義的安全性措施
除了系統級的安全性措施外,Oracle還允許使用者用資料庫觸發器定義特殊的更復雜的使用者級安全措施。例如,規定只能在工作時間內更新Student表,可以定義如下觸發器,其中sysdate為系統當前時間: 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 (SYSDATE, 'HH24') NOT BETWEEN 8 AND 17)
THEN
raise_application_error
(-20506,
'You may only change data during normal business hours.'
);
END IF;
END;
觸發器一經定義便存放在資料字典中。使用者每次對Student表執行INSERT,UPDATE或DELETE操作時都會自動觸發該觸發器,由系統檢查當時的系統時間,如果是週六或週日,或者不是8點至17點,系統會拒絕執行使用者的更新操作,並提示出錯資訊。
類似的,使用者還可以利用觸發器進一步細化審計規則,使審計操作的粒度更細。
綜上所述,Oracle提供了多種安全性措施,提供了多級安全性檢查,其安全性機制與作業系統的安全機制彼此獨立,資料字典在Oracle的安全性授權和檢查以及審計技術中起著重要作用。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1384/viewspace-264867/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 講解Oracle資料庫提供的多種安全性措施 (1)Oracle資料庫
- Oracle資料庫中表的四種連線方式講解Oracle資料庫
- Oracle資料庫中的多種SCN彙總Oracle資料庫
- 詳解使用Role來保護Oracle資料庫的安全性Oracle資料庫
- Oracle資料庫系統的安全性(轉)Oracle資料庫
- 資料庫Delete的多種用法資料庫delete
- 帶你快速瞭解Oracle資料庫提供的恢復機制Oracle資料庫
- 循序漸進講解Oracle資料庫的完整性概念Oracle資料庫
- 詳細講解Oracle資料庫管理員的工作職責Oracle資料庫
- 詳細講解Oracle資料庫中不同的恢復特性Oracle資料庫
- Oracle12c多租戶資料庫 - PDB資料庫的unplug及plug 2Oracle資料庫
- oracle 9i提供2種模式匯出表資料效能比較Oracle模式
- Oracle安全性管理採取的基本措施簡介Oracle
- Oracle 資料庫的眾多 “NAME”Oracle資料庫
- sqlplus 命令登入 Oracle資料庫的多種方法DXNASQLOracle資料庫
- 資料庫安全性資料庫
- 資料庫實驗五 資料庫的安全性資料庫
- SQL:資料庫的安全性SQL資料庫
- 讓Django支援多種資料庫Django資料庫
- MySQL 資料庫 ALTER命令講解MySql資料庫
- 講解Oracle資料庫冷備份恢復的具體步驟Oracle資料庫
- 瞭解oracle資料庫體系結構(2)Oracle資料庫
- Oracle資料庫的四種啟動方式Oracle資料庫
- 講解Linux資料庫安裝Linux資料庫
- 資料庫基礎知識講解資料庫
- 新建Oracle資料庫三種方法Oracle資料庫
- 轉載“啟動\關閉Oracle資料庫的多種方法”--來自百度#OracleOracle資料庫
- SYSAUX表空間滿對資料庫的影響以及解決措施UX資料庫
- 資料庫效能優化有哪些措施?資料庫優化
- 提高資料庫安全性的辦法資料庫
- SQL SERVE 的資料庫安全性研究SQL資料庫
- 支援多種資料庫型別的遷移工具資料庫型別
- 多種方式讀取 MySQL 資料庫配置MySql資料庫
- Spring Boot MyBatis配置多種資料庫Spring BootMyBatis資料庫
- 詳細講解DB2資料庫效能監控的具體步驟DB2資料庫
- 如何快速的瞭解某種資料庫資料庫
- 精講RestTemplate第2篇-多種底層HTTP客戶端類庫的切換RESTHTTP客戶端
- NoSQL資料庫的分散式演算法講解SQL資料庫分散式演算法