權限管理是資料庫安全的核心。本文系統整理 Oracle 權限體系,涵蓋系統權限、物件權限、角色管理與授權轉授機制,提供 DBA 實務操作參考。
-- 查詢所有使用者
SELECT * FROM dba_users;
-- 鎖定/解鎖帳號
ALTER USER test_select ACCOUNT LOCK;
ALTER USER test_select ACCOUNT UNLOCK;
-- 建立使用者
CREATE USER xujin IDENTIFIED BY xujin;
GRANT create tablespace TO xujin;
REVOKE create tablespace FROM xujin;
-- 查詢權限
GRANT select ON table1 TO xujin;
REVOKE select ON table1 FROM xujin;
-- 異動權限
GRANT insert, update, delete ON table1 TO xujin;
REVOKE all ON table1 FROM xujin;
-- 執行權限(程序/函數)
GRANT execute ON procedure1 TO xujin;
-- 授予並允許轉授
GRANT update ON table1 TO xujin WITH GRANT OPTION;
-- 回收時級聯移除下游授權
REVOKE update ON table1 FROM xujin CASCADE;
-- 建立角色
CREATE ROLE xujin1;
-- 角色授予物件權限
GRANT insert ON xezf.cfg_alarm TO xujin1;
-- 角色授予給使用者
GRANT xujin1 TO xujin;
-- 角色嵌套授予
CREATE ROLE xujin2;
GRANT xujin1 TO xujin2;
-- 設定使用者預設角色
ALTER USER xujin DEFAULT ROLE xujin1, xujin2;
-- 移除角色權限
REVOKE insert ON xezf.cfg_alarm FROM xujin1;
-- 刪除角色
DROP ROLE xujin1;
-- 使用者系統權限
SELECT * FROM dba_sys_privs WHERE grantee = 'XUJIN';
-- 使用者物件權限
SELECT table_name, privilege FROM dba_tab_privs WHERE grantee = 'XUJIN';
-- 當前 Session 有效系統權限
SELECT * FROM session_privs;
-- 角色系統權限
SELECT * FROM role_sys_privs WHERE role = 'XUJIN1';
-- 角色物件權限
SELECT table_name, privilege FROM role_tab_privs WHERE role = 'XUJIN1';
-- 角色嵌套關係
SELECT granted_role, admin_option FROM role_role_privs WHERE role = 'XUJIN2';
-- 使用者擁有角色
SELECT * FROM dba_role_privs WHERE grantee = 'XUJIN';
PROXY AUTHENTICATION 實作應用程式連線池身分傳遞