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

Oracle 用戶權限體系完整指南:系統權限、對象權限、角色、密碼管理

     編輯:Oracle 教學

Oracle 用戶權限體系完整指南:系統權限、對象權限、角色、密碼管理

Oracle 安全模型分系統權限 (對數據庫結構操作) 與對象權限 (對具體對象操作)。本文系統講解用戶創建、權限授予/回收、角色管理、表空間配額、密碼修改、權限視圖查詢,構建完整權限治理知識圖譜。

一、 系統權限 — DBA 特權與開發者常用權限

1. 創建用戶

CREATE USER app_dev IDENTIFIED BY strong_password
  DEFAULT TABLESPACE users
  TEMPORARY TABLESPACE temp
  QUOTA UNLIMITED ON users;  -- 12c+ 可用 QUOTA UNLIMITED ON users

2. 核心系統權限授予

SELECT * FROM user_sys_privs;          -- 當前用戶系統權限
SELECT * FROM dba_sys_privs WHERE grantee = 'APP_DEV'; -- DBA 查看

二、 對象權限 — 精細到列級

1. 授予語法

REVOKE SELECT, INSERT ON schema.table FROM app_dev [CASCADE CONSTRAINTS];
-- CASCADE CONSTRAINTS: 因回收 REFERENCES 導致外鍵失效時自動刪除外鍵

3. 對象權限視圖

CREATE ROLE app_read_only;
GRANT SELECT ON schema.table1 TO app_read_only;
GRANT SELECT ON schema.table2 TO app_read_only;

CREATE ROLE app_developer;
GRANT CREATE TABLE, CREATE VIEW, CREATE PROCEDURE TO app_developer;

-- 角色授予用戶/角色
GRANT app_read_only TO user1, user2;
GRANT app_developer TO user3;

2. 角色視圖

CREATE ROLE secure_role IDENTIFIED BY password;
-- 或更安全: IDENTIFIED USING pkg_auth_ctx (PL/SQL 包驗證上下文)

四、 表空間配額 — 限制用戶存儲佔用

-- 用戶自行修改
ALTER USER app_dev IDENTIFIED BY new_password;

-- DBA 修改 (無需舊密碼)
ALTER USER app_dev IDENTIFIED BY new_password;

-- 密碼驗證函數 (複雜度策略)
ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION ora12c_verify_function;

六、 權限治理最佳實踐清單

  1. 最小權限原則:開發賬號僅授 RESOURCE + CREATE SESSION,生產只讀賬號僅授 SELECT_CATALOG_ROLE 或自定義只讀角色。
  2. 角色分層:APP_READ → APP_WRITE → APP_ADMIN,避免直接授系統權限給用戶。
  3. 定期審計:查詢 DBA_SYS_PRIVS, DBA_TAB_PRIVS, DBA_ROLE_PRIVS 產出權限矩陣報表。
  4. 移除默認 PUBLIC 權限:REVOKE EXECUTE ON UTL_FILE FROM PUBLIC; 等危險包權限。
  5. 密碼策略:啟用 Profile 密碼複雜度、過期時間、鎖定機制。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved