Oracle數據庫權限管理
系統權限
系統權限是指被授權用戶是否可以連接到數據庫上及在數據庫中可以進行哪些系統操作。
系統權限是在數據庫中執行某種系統級別的操作,或者針對某一類的對象執行的某種操作的權利。
下面列舉4個常見的系統權限:
1) create session:連接到數據庫。
2) create table:創建表。
3) create view:創建視圖。
4) create sequence:創建序列。
對象權限
對象權限是指用戶對數據庫中具體對象所具有的權限。
對象權限是針對某個特定的模式對象執行操作的權利,只能針對模式對象來設置和管理對象權限。
Oracle數據庫用戶有兩種途徑獲得權限。
1.管理員直接向用戶授予權限。
2.管理員將權限授予角色,然後再將角色授予一個或多個用戶。(角色可以理解為一組權限的“集合”)
授予權限語法:
grant 權限|角色 to 角色名;
撤銷權限語法:
revoke 權限|角色 from 用戶名;
數據庫用戶安全設計原則:
1.數據庫用戶權限按照最小分配原則。
2.數據庫用戶分為管理、應用、維護、備份四類用戶。
3.不允許使用sys和system用戶創建數據庫應用對象。
4.禁止將dba權限賦予用戶。
Oracle系統預定義角色
1.connect:適用於需要連接上數據庫的用戶,特別是不需要創建表的用戶。
2.resource:適用於更為可靠和正式的數據庫用戶。可以創建表、觸發器、過程等。
3.dba:數據庫管理員角色,擁有管理數據庫的最高全向。一個具有dba角色的用戶可以撤銷任何其他用戶甚至其他dba權限,一般情況下,最好不要對用戶授予這個角色。
對象權限例子:
--授予用戶A_hr修改System模式下employee表(ename, sal)的權限
GRANT UPDATE(ename, sal) ON employee
或
GRANT ALL ON employee
TO A_hr
WITH GRANT OPTION;
--撤銷權限
REVOKE ALL ON employee FROM A_hr;
或
UPDATE system.employee SET sal=sal+100 WHERE empno=7788;
select * FROM system.employee;
ROLLBACK;
系統權限例子
--授予連接會話權限
GRANT CREATE SESSION TO A_hr;
--授予創建表權限
GRANT CREATE TABLE TO A_hr;
--權限合並
GRANT CREATE SESSION,CREATE TABLE TO A_hr;
--多個用戶
GRANT CREATE SESSION,CREATE TABLE TO A_hr,A_oe;
--將權限授予所有用戶
GRANT CREATE SESSION,CREATE TABLE TO PUBLIC;
--使被授予者進一步將權限或角色授予其他用戶或角色
GRANT CREATE TABLE TO A_hr WITH ADMIN OPTION;
--撤銷權限
REVOKE CREATE TABLE FROM A_hr;
--查詢權限
SELECT * FROM DBA_SYS_PRIVS WHERE grantee =‘A_HR‘;
Oracle數據庫權限管理