国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

講解Oracle數據庫提供的多種安全性措施

瀏覽:105日期:2023-11-28 12:35:04

Oracle的安全措施主要有三個方面,一是用戶標識和鑒定;二是授權和檢查機制;三是審計技術(是否使用審計技術可由用戶靈活選擇);除此之外,Oracle還允許用戶通過觸發器靈活定義自己的安全性措施。

一、用戶標識和鑒定

在Oracle中,最外層的安全性措施是讓用戶標識自己的名字,然后由系統進行核實。Oracle允許用戶重復標識三次,如果三次未通過,系統自動退出。

二、授權與檢查機制

Oracle的權限包括系統權限和數據庫對象的權限兩類,采用非集中的授權機制,即DBA負責授予與回收系統權限,每個用戶授予與回收自己創建的數據庫對象的權限。

Oracle允許重復授權,即可將某一權限多次授予同一用戶,系統不會出錯。Oracle也允許無效回收,即用戶沒有某種權限,但回收此權限的操作仍算成功。

1. 系統權限

Oracle提供了80多種系統權限,如創建會話、創建表、創建視圖、創建用戶等。DBA在創建一個用戶時需要將其中的一些權限授予該用戶。

Oracle支持角色的概念。所謂角色就是一組系統權限的集合,目的在于簡化權限管理。Oracle除允許DBA定義角色外,還提供了預定義的角色,如CONNECT,RESOURCE和DBA。

具有CONNECT角色的用戶可以登錄數據庫,執行數據查詢和操縱。即可以執行ALTER TABLE,CREATE VIEW,CREATE INDEX,DROP TABLE,DROP VIEW,DROP INDEX,GRANT,REVOKE,INSERT,SELECT,UPDATE,DELETE,AUDIT,NOAUDIT等操作。

RESOURCE角色可以創建表,即執行CREATE TABLE操作。創建表的用戶將擁有對該表的所有權限。

DBA角色可以執行某些授權命令,創建表,對任何表的數據進行操縱。它涵蓋了前兩種角色,此外還可以執行一些管理操作,DBA角色擁有最高級別的權限。

例如DBA建立一用戶U1后,欲將ALTER TABLE,CREATE VIEW,CREATE INDEX,DROP TABLE,DROP VIEW,DROP INDEX,GRANT,REVOKE,INSERT,SELECT,UPDATE,DELETE,AUDIT,NOAUDIT等系統權限授予U1,則可以只簡單地將CONNECT角色授予U1即可:

GRANT CONNECT TO U1;

這樣就可以省略十幾條GRANT語句。

2. 數據庫對象的權限

在Oracle中,可以授權的數據庫對象包括基本表、視圖、序列、同義詞、存儲過程、函數等,其中最重要的是基本表。

對于基本表Oracle支持三個級別的安全性:表級、行級和列級。

(1)表級安全性

表的創建者或者DBA可以把表級權限授予其他用戶,表級權限包括:

ALTER:修改表定義

DELETE:刪除表記錄

INDEX:在表上建索引

INSERT:向表中插入數據記錄

SELECT:查找表中記錄

UPDATE:修改表中的數據

ALL:上述所有權限

表級授權使用GRANT和REVOKE語句。

(2)行級安全性

Oracle行級安全性由視圖實現。用視圖定義表的水平子集,限定用戶在視圖上的操作,就為表的行級提供了保護。視圖上的授權與回收與表級完全相同。

例如,只允許用戶U2查看Student表中信息系學生的數據,則首先創建信息系學生的視圖S_IS,然后將該視圖的SELECT權限授予U2用戶。

(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的安全性授權和檢查以及審計技術中起著重要作用。

標簽: Oracle 數據庫
主站蜘蛛池模板: 克东县| 搜索| 霸州市| 封开县| 灵璧县| 庆云县| 山丹县| 日土县| 岑巩县| 青川县| 黑龙江省| 来凤县| 汾西县| 双峰县| 聂拉木县| 杭锦后旗| 嵊泗县| 宜昌市| 巫溪县| 富源县| 屏山县| 溆浦县| 桃江县| 茶陵县| 湖州市| 乌恰县| 治多县| 普宁市| 福建省| 灵璧县| 富蕴县| 桂阳县| 和静县| 凤阳县| 玉林市| 徐闻县| 丁青县| 原平市| 徐水县| 迁安市| 大化|