您好,登錄后才能下訂單哦!
創建和管理角色
角色是一組系統權限或對象權限,可以作為一個單元來授予或撤銷,可以在會話中臨時激活或禁用已經授予的權限。
1、創建角色并授予權限
CREATEROLE rolename;
案例:
SQL>createrole hr_junior;
SQL>grantcreate session to hr_junior;
SQL>grant select on hr.regions to hr_junior;
SQL>grantselect on hr.locations to hr_junior;
SQL>grantselect on hr.countries to hr_junior;
SQL>grantselect on hr.job_history to hr_junior;
SQL>grantselect on hr.departments to hr_junior;
SQL>grantselect on hr.jobs to hr_junior;
SQL>grantselect on hr.employees to hr_junior;
SQL>createrole hr_senior;
SQL>granthr_junior to hr_senior with admin option;
SQL>grantinsert, update, delete on hr.employees to hr_senior;
SQL>grantinsert, update, delete on hr.job_history to hr_senior;
SQL>createrole hr_manager;
SQL>granthr_senior to hr_manager with admin option;
SQL>grantall on hr.regions to hr_manager;
SQL>grantall on hr.locations to hr_manager;
SQL>grantall on hr.countries to hr_manager;
SQL>grantall on hr.departments to hr_manager;
SQL>grantall on hr.job_history to hr_manager;
SQL>grantall on hr.jobs to hr_manager;
SQL>grantall on hr.employees to hr_manager;
SQL>granthr_manager to scott;
SQL>granthr_junior to peenboo;
2、預定義的角色
在Oracle數據庫中,至少有50個預定義角色,每個DBA必須熟悉一下角色:
CONNECT (連接) --用于向后兼容,在11g中僅有CREATE SESSION權限。
RESOURCE 也是用于向后兼容,此角色可以創建數據庫對象(如表)和過程對象(如pl/sql過程)。該角色還包括UNLIMITED TABLESPACE權限。
DBA 擁有大多數系統權限,以及多個對象權限和角色,任何被授予DBA權限的用戶幾乎可以管理數據庫的所有方面(啟動和關閉除外)。
SELECT_CATALOG_ROLE 擁有針對數據字典對象的2000多個對象權限,但沒有系統權限或針對用戶的權限。這對新管理員有用,這些人必須監視數據庫并報告數據庫情況,但看不到用戶數據。
SCHEDUALER_ADMIN 擁有用于管理調度服務的調度程序作業所需的系統權限。
PUBLIC 此角色始終授予每個數據庫用戶賬戶。如果將某個權限授予PUBLIC,則該權限授予所有用戶。
SQL>GRANT select onhr.regions to public; --所有用戶有權查詢hr.regions
3、啟用角色
SQL>select* from dba_role_privs where grantee = 'PEENBOO';
--查看已為PEENBOO授予了什么角色
SQL>alter user peenboo default role none; --更改默認行為
--當peenboo登錄時,將不啟用任何角色
SQL>grantconnect to peenboo;
SQL>alteruser peenboo default role connect;
SQL>select* from dba_role_privs where grantee= 'PEENBOO';
在應用程序中,可以嵌入軟件命令來啟用 HR_JUNIOR 角色。在會話中啟用此角色的基本命令為:
SET ROLE rolename;
為了安全考慮,可以使用以下語法創建角色:
CREATEROLE rolename IDENTIFIED USING procedure_name;
--只能在運行 procedure_name 命名的PL/SQL過程來啟用此角色。此過程可以執行任意多次的檢查。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。