基礎知識6——建立和管理角色

與刃爭鋒發表於2014-01-07
建立和管理角色

直接授予使用者許可權,管控安全當然可以,但是使用者較少你還能玩得轉,如果使用者多呢?需要的許可權種類多,涉及到的表多,咋整?操作幾萬次?那你還幹別的不了?

角色:一組系統許可權或物件許可權,可作為一個單元來授予或撤銷,可以在會話中臨時啟用或禁用已經授予的許可權.

角色不是模式物件,不屬於任何人,與使用者共享同一個名稱空間:建立的角色不能與已有使用者同名,也不能與已有角色同名.

CREATE ROLE rolename;

然後使用普通語法為角色授權,根據需要增加with admin或with grant option

預先定義的角色
oracle有至少50個預先定義的角色,應該熟悉的如下:

connect     --10g後僅有create session許可權.
resource    --可建立資料物件(如表)和過程物件(如PL/SQL過程),還包括unlimited tablespace許可權
DBA          --有大多數系統許可權,及多個物件許可權和角色,幾乎可以管理資料庫的所有方面,除了啟動和關閉
select_catalog_role     --有針對資料字典物件的2000多個物件許可權,但沒有系統許可權或針對使用者資料的許可權.
schedule_admin        --有用於管理排程服務的排程程式作業所需的系統許可權

還有個預定義的角色public,此角色始終授予每個使用者,如果授予public某些許可權,這些許可權將授予所有的使用者.

比如讓所有使用者有權查詢hr.regions表:

grant select on hr.regions to public;

顯示某使用者被授予了什麼角色:

select * from dba_role_privs
where grantee='SCOTT';

GRANTEE    GRANTED_ROLE    ADMIN_OPTION    DEFAULT_ROLE
------------------------------------------------------------------------------------------------------
SCOTT    RESOURCE    NO    YES
SCOTT    CONNECT    NO    YES

scott沒有此角色上的管理許可權,因此不能將其傳遞給其它人.






練習,建立角色並授予使用者

create role usr_role;

create role mgr_role;


為這些角色授予一些許可權,並將usr_role授予mgr_role

grant create session to usr_role;
grant select on sales.t1 to usr_role;
grant usr_role to mgr_role with admin option;
grant all on sales.t1 to mgr_role;

以SYSTEM身份將mgr_role授予webapp

grant mgr_role to webapp;

以使用者webapp登入,將usr_role授予accounts

grant usr_role to accounts;


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25025926/viewspace-1068118/,如需轉載,請註明出處,否則將追究法律責任。

相關文章