ORACLE數據庫中的權限和角色
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
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的權限。
----這裏的角色和口令是固定的,在應用系統中可以由應用管理人員自行設置則更爲方便安全
相關文章
-
外部表在Oracle數據庫中使用的限制
外部表是指不在數據庫中的表,如操作系統上的一個按一定格式分割的文本文件或者其他類型的表。這個外部表對於Oracle數據庫來說,就好像是一張視圖,在數據庫中可以像試圖一樣進行查詢等操作。這個試圖允許用戶在外部數據上 -
Oracle數據庫與FoxPro數據的轉換
我們大家都知道Oracle數據庫的數據格式和微機通用的實際應用格式有所不同,所以在實際操作中我們不能對Oracle的數據直接調用,Oracle數據庫所提供的相關前臺的開發工具Developer 2000雖然可以訪問Oracle的數據。並有數據 -
Oracle數據庫SELECT語句
學習oracle數據庫自然會用到查詢(SELECT)語句,下面yjbys小編爲大家列舉各種查詢語句,希望能幫助到各位!普通用戶連接conn scott/tiger超級管理員連接 conn sys/sys as sysdbaDisconnect 斷開連接把SQL存到文件 save c: -
Oracle數據庫內存監控和意義
ORACLE的數據庫所佔用的內存區域被稱爲SGA,它主要由三部分組成,第一部分是DATA BUFFER,第二部分是LOG BUFFER,第三部分是SHARED POOL。DATA BUFFER中存放的是常用的ORACLE數據塊,當ORACLE中的某個事務要對某些數據進行查詢 -
Oracle數據庫基礎知識:SELECT語句
SELECT語句是指用來查詢、添加、 和刪除數據庫中數據的語句, 和刪除數據庫中數據的語句 , 它們 是 SELECT 、 INSERT 、 UPDATE 、 DELETE等. 下面是Oracle數據庫基礎知識——SELECT語句,希望對大家有所幫助 -
Oracle數據庫插入日期型數據的方法
racle數據庫插入日期型數據,應該怎麼下手呢?下面小編爲大家整理了關於Oracle數據庫插入日期型數據的方法,希望能爲你提供幫助:往Oracle數據庫中插入日期型數據(to_date的用法)INSERT INTO FLOOR VALUES ( to_date ( ' -
如何在Oracle數據庫10g中跟蹤SQL
在具有許多活躍用戶的繁忙生產環境中,跟蹤SQL會話是費時且十分複雜的,因爲在任何使用連接池的多層系統中處理SQL語句可能要涉及多個進程,或者甚至是不同的實例。利用Oracle數據庫10g,Oralce通過一個新的內置軟件包DBMS_MO -
如何操作Oracle數據庫中的(+)連接
本文主要向你介紹的是Oracle數據庫中的(+)連接的`實際操作,本文是以相關使用代碼的描述來引出其實際的操作,你如果是Oracle數據庫中的(+)連接的瘋狂一族的話,就一起來看看吧! 1. 從表A.A1 (+) = 主表B.B1複製代碼SELE -
oracle中truncatetable後的數據如何恢復
夜晚,天上點點繁星,調皮的眨着眼睛。我和爸爸拿着煙花來到空地上,準備裝扮靜謐的夜空。我們一到目的地,就開心地喊着:放煙花啦!放煙花啦!爸爸把煙花擺開,用打火機點燃,‘砰’的一聲,一朵燦爛的煙花迫不及待的衝向天空 -
Oracle數據庫RMAN的自動備份腳本簡介
各位同學知道Oracle數據庫RMAN如何自動備份腳本嘛?下面小編爲大家整理了關於Oracle數據庫RMAN的'自動備份腳本文章,希望能爲你提供幫助: 1、數據庫設置爲歸檔方式 2、數據庫的備份腳本db_full_ :數據庫全備腳本db