一、介紹角色就是相關許可權的命令集合,使用角色的主要目的就是為了簡化許可權的管理。
假定有使用者a,b,c為了讓他們都擁有如下許可權
1. 連線資料庫
2. 在scott.emp表上select,insert,update
。如果採用直接授權操作,則需要進行12次授權。
因為要進行12次授權操作,所以比較麻煩喔!怎麼辦?
如果我們採用角色就可以簡化:
首先將creat session,
select
on scott.emp, insert
on scott.emp, update
onscott.emp 授予角色,然後將該角色授予a,b,c 使用者,這樣就可以三次授權搞定。
二、角色分為預定義和自定義角色兩類
三、預定義角色
預定義角色是指oracle所提供的角色,每種角色都用於執行一些特定的管理任務,下面我們介紹常用的預定義角色connect、resource、dba。
1)、connect角色
connect角色具有一般應用開發人員需要的大部分許可權,當建立了乙個使用者後,多數情況下,只要給使用者授予connect和resource角色就夠了,那麼connect角色具有哪些系統許可權呢?
create
cluster
create
database
link
create
session
alter
session
create
table
create
view
create
sequence
2)、resource角色
resource角色具有應用開發人員所需要的其它許可權,比如建立儲存過程,觸發器等。這裡需要注意的是resource角色隱含unlimited tablespace系統許可權。
resource角色包含以下系統許可權:
create
cluster
create
indextype
create
table
create
sequence
create
type
create
procedure
create
trigger
3)、dba角色
dba角色具有所有的系統許可權,及with admin option選項,預設的dba使用者為sys和system,它們可以將任何系統許可權授予其他使用者。但是要注意的是dba角色不具備sysdba和sysoper的特權(啟動和關閉資料庫)。
四、自定義角色
1、顧名思義就是自己定義的角色,根據自己的需要來定義。一般是dba來建立,如果用別的使用者來建立,則需要具有create role的系統許可權。在建立角色時可以指定驗證方式(不驗證,資料庫驗證等)。
1)、建立角色(不驗證)
如果角色是公用的角色,可以採用不驗證的方式建立角色。
create role 角色名 not
identified;
2)、建立角色(資料庫驗證)
採用這樣的方式時,角色名、口令存放在資料庫中。當啟用該角色時,必須提供口令。在建立這種角色時,需要為其提供口令。
create role 角色名 identified by
密碼;
2、角色授權
1)、給角色授權
給角色授予許可權和給使用者授權沒有太多區別,但是要注意,系統許可權的unlimited tablespace和物件許可權的with
grant
option選項是不能授予角色的。
sql> conn system/
oracle;
sql>
grant
create session to 角色名 with admin option
sql> conn scott/oracle@orcl
;sql
>
grant
select
on scott.emp to
角色名;
sql>
grant
insert, update, delete
on scott.emp to
角色名;
通過上面的步驟,就給角色授權了。
2)、分配角色給某個使用者
一般分配角色是由dba來完成的,如果要以其它使用者身份分配角色,則要求使用者必須具有grant
anyrole的系統許可權。
sql> conn system/
oracle;
sql>
grant 角色名 to blake with admin option
;因為我給了with admin option選項,所以,blake可以把system分配給它的角色分配給別的使用者。 3
、刪除角色
使用drop role,一般是dba來執行,如果其它使用者則要求該使用者具有drop
anyrole系統許可權。
sql> conn system/
oracle;
sql>
drop
role 角色名;
問題:如果角色被刪除,那麼被授予角色的使用者是否還具有之前角色裡的許可權?
答案:不具有了
4、顯示角色資訊
1)、顯示所有角色
sql>
select
*from
dba_roles;
2)、顯示角色具有的系統許可權
sql>
select privilege, admin_option from role_sys_privs where role=
'角色名';
3)、顯示角色具有的物件許可權
通過查詢資料字典檢視dba_tab_privs可以檢視角色具有的物件許可權或是列的許可權。
4)、顯示使用者具有的角色,及預設角色
當以使用者的身份連線到資料庫時,oracle 會自動的啟用預設的角色,通過查詢資料字典檢視dba_role_privs 可以顯示某個使用者具有的所有角色及當前預設的角色。
sql>
select granted_role, default_role from dba_role_privs where grantee =
『使用者名稱』;
五、精細訪問控制
精細訪問控制是指使用者可以使用函式,策略實現更加細微的安全訪問控制。如果使用精細訪問控制,則當在客戶端發出sql語句(
select,insert,update,delete
)時,oracle會自動在sql語句後追加謂詞(where子句),並執行新的sql語句,通過這樣的控制,可以使得不同的資料庫使用者在訪問相同表時,返回不同的資料資訊,如:
使用者 scott blake jones
策略 emp_access
資料庫表 emp
如上圖所示,通過策略emp_access,使用者scott,black,jones在執行相同的sql語句時,可以返回不同的結果。
例如:當執行select ename
from emp時,根據實際情況可以返回不同的結果。
十八 oracle 角色
一 介紹 角色就是相關許可權的命令集合,使用角色的主要目的就是為了簡化許可權的管理。假定有使用者a,b,c為了讓他們都擁有如下許可權 1.連線資料庫 2.在scott.emp表上select,insert,update。如果採用直接授權操作,則需要進行12次授權。因為要進行12次授權操作,所以比較麻...
十八 oracle 角色
一 介紹 角色就是相關許可權的命令集合,使用角色的主要目的就是為了簡化許可權的管理。假定有使用者a,b,c為了讓他們都擁有如下許可權 1.連線資料庫 2.在scott.emp表上select,insert,update。如果採用直接授權操作,則需要進行12次授權。因為要進行12次授權操作,所以比較麻...
Oracle角色詳解
一 概述 角色就是相關許可權的命令集合,使用角色的主要目的就是為了簡化許可權的管理。假定有使用者a,b,c為了讓他們都擁有許可權 1 連線資料庫 2 在scott.emp表上select,insert,update 如果採用直接授權操作,則需要進行12次授權。如果採用角色就可以簡化 首先將creat...