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

Oracle 用戶權限體系:系統權限、物件權限與查詢驗證實戰

     編輯:Oracle 資料庫基礎

權限體系兩大類別

  • System Privileges (系統權限):跨 Schema 的管理能力 (建表、建用戶、備份等),80+ 細項,由 DBA 授予。
  • Object Privileges (物件權限):針對特定 Schema 物件 (表/視圖/序列/程序) 的操作權,由物件擁有者授予。

一、建立用戶與基礎授權標準流程

-- 1. 建立用戶 (需 DBA 權限)
CREATE USER db_user IDENTIFIED BY db_user_pw;

-- 2. 授予建立會話權限 (登入門檻)
GRANT CREATE SESSION TO db_user;

-- 3. 授予 RESOURCE 角色 (建表/序列/觸發器等開發權限)
GRANT RESOURCE TO db_user;

-- 4. 視業務需要授予特定系統權限
GRANT CREATE VIEW, CREATE PROCEDURE TO db_user;

二、物件權限授權範例

-- 用戶 A 授予用戶 B 查詢/修改自有表權限
GRANT SELECT, INSERT, UPDATE ON a.emp TO b;
GRANT ALL ON a.dept TO b WITH GRANT OPTION; -- 允許 B 轉授

-- 回收權限
REVOKE UPDATE ON a.emp FROM b;
REVOKE ALL ON a.dept FROM b;

三、用戶自查權限視圖 (無需 DBA 權限)

視圖用途關鍵欄位
USER_TAB_PRIVS我對他人物件的權限 / 他人對我物件的權限GRANTEE, OWNER, TABLE_NAME, PRIVILEGE, GRANTOR, HIERARCHY
USER_SYS_PRIVS我擁有的系統權限PRIVILEGE, ADMIN_OPTION
USER_ROLE_PRIVS我被授予的角色GRANTED_ROLE, ADMIN_OPTION, DEFAULT_ROLE
USER_COL_PRIVS欄位級權限TABLE_NAME, COLUMN_NAME, PRIVILEGE
-- 實戰查詢
SELECT * FROM USER_TAB_PRIVS;     -- 物件權限
SELECT * FROM USER_SYS_PRIVS;     -- 系統權限
SELECT * FROM USER_ROLE_PRIVS;    -- 角色

四、DBA 視角全局權限審計

-- 所有用戶系統權限
SELECT * FROM DBA_SYS_PRIVS;

-- 所有物件授權關係
SELECT * FROM DBA_TAB_PRIVS;

-- 角色授予鏈
SELECT * FROM DBA_ROLE_PRIVS;

五、最佳實踐原則

  1. 最小權限原則:僅授予業務必需權限,避免濫用 DBA/RESOURCE 角色。
  2. 角色封裝:將系統/物件權限打包為應用角色 (如 APP_READONLY, APP_DEVELOPER),授予角色而非散發權限。
  3. 定期審計:季度掃描 DBA_TAB_PRIVS 發現異常授權 (如 WITH GRANT OPTION 濫用、離職帳號殘留權限)。
  4. 密碼策略:配合 Profile 強制複雜度、過期、鎖定策略。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved