首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle GRANT/REVOKE 權限管理完整指南

     編輯:Oracle 資料庫基礎

Oracle GRANT/REVOKE 權限管理完整指南

權限管理是資料庫安全的核心。本文系統整理 Oracle 權限體系,涵蓋系統權限、物件權限、角色管理與授權轉授機制,提供 DBA 實務操作參考。

核心權限分類

  • 系統權限:執行特定資料庫操作的權利(如 CREATE TABLE, ALTER SYSTEM)
  • 物件權限:對特定 Schema 物件的操作權利(如 SELECT, INSERT, EXECUTE)
  • 角色:權限的命名集合,便於批量授予/回收

常用授權指令速查

使用者帳號管理

-- 查詢所有使用者
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;

授權轉授機制 (WITH GRANT OPTION)

-- 授予並允許轉授
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';

最佳實務建議

  1. 採用「角色為基礎」的權限模型:建立應用角色 → 授予物件權限給角色 → 將角色授予使用者
  2. 避免直接授予 DBA/RESOURCE/CONNECT 等預設角色(12c+ 已棄用)
  3. 定期執行權限審計,移除過期/異動帳號權限
  4. 敏感物件(薪資、個資表)採用 VPD (Virtual Private Database) 或 Column-level Security
  5. 使用 PROXY AUTHENTICATION 實作應用程式連線池身分傳遞
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved