oracle資料庫是一種大型關係型的資料庫,我們知道當使用乙個資料庫時,僅僅能夠控制哪些人可以訪問資料庫,哪些人不能訪問資料庫是無法滿足資料庫訪問控制的。dba需要通過一種機制來限制使用者可以做什麼,不能做什麼,這在oracle中可以通過為使用者設定許可權來實現。許可權就是使用者可以執行某種操作的權利。而角色是為了方便dba管理許可權而引入的乙個概念,它實際上是乙個命名的許可權集合。
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
account.paytable 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的許可權。
----這裡的角色和口令是固定的,在應用系統中可以由應用管理人員自行設定則更為方便安全
oracle使用者許可權和角色
使用者許可權是最基本的資料庫安全控制。其作用就是控制使用者對資料的訪問,sql語句的執行。當oracle使用者建立的時候,可以通過授權來控制使用者對資料的連線,資料庫物件的操作等等。在oracle中,分為兩種許可權。1.系統許可權 system privileges 系統許可權用來執行某些特定的操作...
Oracle的使用者許可權和角色
使用者和許可權 lock unlock建立使用者時是否鎖定,預設為鎖定狀態。鎖定的使用者無法正常的登入進行資料庫操作。給普通使用者scott解鎖,同時把scott使用者的密碼進行修改 語法結構 alter user 使用者名稱 identified by 新密碼 account unlock alt...
Oracle資料庫中的特權和角色概念解析
1 特權 特權是執行一種特殊型別的sql語句或訪問另一使用者的物件的權力。有兩類特權 系統特權和物件特權。系統特權 是執行一處特殊動作或者在物件型別上執行一種特殊動作的權利。oracle有60多種不同系統特權,每一種系統允許使用者執行一種特殊的資料庫操作或一類資料庫操作.系統特權可授權給使用者或角色...