當前位置:學者齋 >

IT認證 >Oracle認證 >

ORACLE資料庫中的許可權和角色

ORACLE資料庫中的許可權和角色

Oracle資料庫是一種大型關係型的資料庫,我們知道當使用一個數據庫時,僅僅能夠控制哪些人可以訪問資料庫,哪些人不能訪問資料庫是無法滿足資料庫訪問控制的。DBA需要通過一種機制來限制使用者可以做什麼,不能做什麼,這在Oracle中可以通過為使用者設定許可權來實現。許可權就是使用者可以執行某種操作的權利。而角色是為了方便DBA管理許可權而引入的一個概念,它實際上是一個命名的許可權集合。

ORACLE資料庫中的許可權和角色

  1 許可權

Oracle資料庫有兩種途徑獲得許可權,它們分別為:

① DBA直接向用戶授予許可權。

② DBA將許可權授予角色(一個命名的包含多個許可權的集合),然後再將角色授予一個或多個使用者。

使用角色能夠更加方便和高效地對許可權進行管理,所以DBA應該習慣於使用角色向用戶進行授予許可權,而不是直接向用戶授予許可權。

Oracle中的許可權可以分為兩類:

•系統許可權

•物件許可權

1.1 系統許可權

系統許可權是在資料庫中執行某種操作,或者針對某一類的物件執行某種操作的權利。例如,在資料庫中建立表空間的權利,或者在任何模式中建立表的權利,這些都屬於系統許可權。在Oracle9i中一共提供了60多種許可權。

系統許可權的權利很大,通常情況下:

① 只有DBA才應當擁有alter database系統許可權,該許可權允許使用者對資料庫物理結構和可用性進行修改。

② 應用程式開發者一般應該擁有Create Table、Create View和Create Type等系統許可權,用於建立支援前端的資料庫模式物件。

③ 普通使用者一般只具有Create session系統許可權(可以通過Connection角色獲得),只有Create Session系統許可權的使用者才能連線到資料庫

④ 只有具有Grant Any PRivilege系統許可權使用者,或者獲取了具有With Admin Option選項的系統許可權的.使用者,才能夠成為其它使用者授予許可權。

1.2物件許可權

物件許可權是針對某個特定的模式物件執行操作的權利。只能針對模式物件來設定和管理物件許可權。

對於模式物件:表、檢視、序列、儲存過程、儲存函式、包都可以物件設定許可權。不同型別模式物件具有不同的物件許可權。比如,表、檢視等物件具有查詢(Select)、修改(Update)、刪除(Delete)等物件許可權,而儲存過程、儲存函式等物件則具有執行(Execute)等物件許可權。

但是並不是所有的模式物件都可以設定物件許可權。比如簇、索引、觸發器以及資料庫連結等模式就不具有物件許可權。這些模式物件的訪問控制是通過相應的系統許可權來實現的,比如,要對索引進行修改,必須擁有Alter Any Index系統許可權。

使用者自動擁有他的模式中所有物件的全部物件許可權,他可以將這些物件許可權授予其他的使用者或角色。比如,Test1使用者建立了一個表Table1,在沒有授權的情況下,使用者Test2不能查詢、修改、刪除這個表。如果Test1將ETP表的Select物件許可權授予了Test2,則該使用者就可以查詢Table1表了。如果在為其它使用者授予物件許可權時用了With Grant Option選項,被授予許可權的使用者還可以將這個許可權在授予其他使用者。

  2 角色

2.1角色的概念

角色就是多個相關許可權的命名集合。通過角色來進行對使用者授予許可權,可以大大簡化DBA的工作量。比如,處於統一部門中的30多個使用者都需要訪問資料庫中的一系列表,DBA可以將這些表的中合適的物件許可權授予一個角色,然後在把這個角色授予這些使用者,這樣進行操作要比為沒有使用者進行授權要便捷多了,而且要對這些使用者的許可權進行統一修改,只需要修改角色的許可權即可。

2.2角色的優點

通過角色為使用者授予許可權,而不是直接向各個使用者授權,具有以下優點:

•簡化許可權管理 DBA將使用者群分類,然後為每一類使用者建立角色,並將該角色授予這類使用者所需要的許可權,最後在將改角色授予該類中的各個使用者。這樣不僅簡化了授權操作,而且當這類使用者的許可權需求發生改變時,只需要把角色的許可權進行改動,而不必修改每一位使用者的許可權。

•動態許可權管理 角色可以被禁用或啟用。當角色被禁止使用時,擁有該角色的使用者不再擁有授予改角色的許可權了。這樣就可以對多個使用者的許可權進行動態控制了。

•靈活的程式設計能力 角色是儲存在資料字典中的,並且可以為角色設定口令。這樣就能夠在應用程式中對角色進行控制。比如禁用或者啟用等操作。

下面以Oracle9i為例,給出具體的實現使用者授權:

(1)設定各種角色,及其許可權

CREATE ROLE checkerrole DENTIFIEDBYxm361001;

CREATE ROLE defaultrole IDENTIFIEDBYdefaultrole;

GRANT SELECT,UPDATE ON

able TO checkerrole;

GRANT CONNECT TO defaultrole;

(2)建立使用者

CREATE USER xiaoli IDENTIFIEDBY xiaoli;

(3)授權

GRANT checkerrole TO xiaoli;

GRANT defaultrole TO xiaoli;

(4)設定使用者預設的角色

ALTER USER xiaoli DEFAULTROLE defaultrole;

(5)註冊過程

CONNECT xiaoli/xiaoli@oracle

此時使用者只有其預設角色的許可權。

(6)啟用角色

SET ROLE checkerrole IDENTIFIEDBY xm361001;

----操作成功後,xiaoli擁有checkerrole的許可權。

----這裡的角色和口令是固定的,在應用系統中可以由應用管理人員自行設定則更為方便安全

  • 文章版權屬於文章作者所有,轉載請註明 https://xuezhezhai.com/zh-tw/itrz/oracle/ee6443.html