Oracle 安全體系核心為「使用者 → 角色 → 權限」三層架構。本文系統整理建立/刪除使用者、系統/物件權限、三大預設角色、自訂角色管理與最佳實務。
一、建立與管理使用者
建立使用者
CREATE USER user01 IDENTIFIED BY u01
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
QUOTA UNLIMITED ON users;
修改密碼
-- 方式一:ALTER USER(密碼明文顯示)
ALTER USER user01 IDENTIFIED BY usr01;
-- 方式二:PASSWORD 命令(互動式隱藏輸入,DBA 可改他人密碼)
PASSWORD user01
-- Old password: ***
-- New password: ***
-- Retype new password: ***
刪除使用者
DROP USER user01; -- 無物件才能刪除
DROP USER user01 CASCADE; -- 連同物件一併刪除
二、權限體系
| 類別 | 範例 | 說明 |
| 系統權限 | CREATE TABLE, CREATE SESSION, DROP ANY TABLE, GRANT ANY PRIVILEGE | 授權執行特定資料庫管理動作 |
| 物件權限 | SELECT, INSERT, UPDATE, DELETE, EXECUTE, REFERENCES ON schema.table | 授權操作特定物件 |
三、三大預設角色
| 角色 | 用途 | 核心權限 |
| CONNECT | 臨時/只讀使用者 | CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE SEQUENCE, CREATE SYNONYM, CREATE DATABASE LINK 等 |
| RESOURCE | 正式開發人員 | CONNECT 所有權限 + CREATE PROCEDURE, CREATE TRIGGER, CREATE INDEX, CREATE CLUSTER 等 |
| DBA | 資料庫管理員 | 所有系統權限、無限表空間配額、授權/撤銷任意權限 |
授權與撤銷角色
GRANT CONNECT, RESOURCE TO user01;
REVOKE CONNECT, RESOURCE FROM user01;
撤銷角色不會刪除使用者建立的物件,僅禁止後續存取。
四、自訂角色
建立角色
CREATE ROLE student;
授權給角色
GRANT SELECT ON class TO student;
GRANT INSERT, UPDATE ON student_scores TO student;
將角色授予使用者
GRANT student TO user01;
刪除角色
DROP ROLE student;
五、最佳實務建議
- 最小權限原則:僅授予完成工作所需的最小權限集,避免直接授 DBA。
- 角色分層:業務角色(如
APP_READ, APP_WRITE) → 功能角色(CREATE_TABLE) → 系統角色(RESOURCE),透過角色嵌套管理。
- 密碼策略:啟用 Profile 設定
PASSWORD_LIFE_TIME, PASSWORD_GRACE_TIME, FAILED_LOGIN_ATTEMPTS 等。
- 審計:關鍵物件啟用
AUDIT SELECT, INSERT, UPDATE, DELETE ON sensitive_table BY ACCESS。
- 定期清理:檢視
DBA_USERS、DBA_ROLE_PRIVS,移除離職人員、廢棄角色。