| 帳號 | 角色定位 | 認證方式 | 核心職責 | 安全建議 |
| SYS | 超級使用者 / 資料字典擁有者 | **僅能** AS SYSDBA / AS SYSOPER 登入 | 維護系統核心物件 (OBJ$, TAB$, COL$...)、執行核心腳本 | 嚴禁建立業務物件;密碼極高強度;啟用 O/S 認證輔助 |
| SYSTEM | 系統管理員 (DBA 權限) | NORMAL (密碼) 登入 | 日常管理:用戶/權限/儲存/監控/EM 操作 | 嚴禁建立業務物件;定期輪換密碼;審計所有操作 |
| SCOTT | 教學/測試範例帳號 | NORMAL (密碼 tiger) | 提供 EMP, DEPT, SALGRADE, BONUS 範例表 | **生產環境必須鎖定/刪除**;預設密碼極弱 |
二、其他常見系統帳號 (11g/12c)
| 帳號 | 用途 | 預設狀態 | 備註 |
| DBSNMP | Enterprise Manager 監控代理 | OPEN | 需 DBSNMP 角色 |
| OUTLN | Stored Outlines 儲存 | EXPIRED & LOCKED | 11g+ 少用 |
| ORDSYS / ORDPLUGINS | InterMedia 多媒體 | EXPIRED & LOCKED | 非使用多媒體可鎖定 |
| CTXSYS | Oracle Text 文字搜尋 | EXPIRED & LOCKED | 需 Text 選項授權 |
| MDSYS | Spatial 空間資料 | EXPIRED & LOCKED | 需 Spatial 選項授權 |
| LBACSYS | Label Security (OLS) | EXPIRED & LOCKED | 11g+ 企業版選項 |
| XDB | XML DB Repository | OPEN | 核心元件,勿鎖定 |
| ANONYMOUS | XML DB 匿名存取 | EXPIRED & LOCKED | 啟用 XML DB 時可能解鎖 |
| APEX_PUBLIC_USER / APEX_... | Application Express | EXPIRED & LOCKED | 未裝 APEX 可忽略 |
三、建立使用者與授權標準流程
-- 1. 建立使用者 (指定預設/暫存表空間、配額)
CREATE USER app_user IDENTIFIED BY "ComplexP@ssw0rd"
DEFAULT TABLESPACE app_data
TEMPORARY TABLESPACE temp
QUOTA UNLIMITED ON app_data
QUOTA 100M ON app_index
PASSWORD EXPIRE; -- 首次登入強制改密
-- 2. 授予系統權限 (慎用 ANY 權限)
GRANT CREATE SESSION, CREATE TABLE, CREATE SEQUENCE, CREATE VIEW, CREATE PROCEDURE TO app_user;
-- 3. 授予物件權限 (細粒度)
GRANT SELECT, INSERT, UPDATE, DELETE ON app_schema.core_table TO app_user;
-- 4. 角色化管理 (推薦)
CREATE ROLE app_readonly;
GRANT SELECT ON app_schema.core_table TO app_readonly;
GRANT app_readonly TO app_user;
-- 5. 設定資源限制 (Profile)
CREATE PROFILE app_profile LIMIT
SESSIONS_PER_USER 10
CPU_PER_SESSION UNLIMITED
CONNECT_TIME 480
IDLE_TIME 30
FAILED_LOGIN_ATTEMPTS 5
PASSWORD_LIFE_TIME 90
PASSWORD_REUSE_TIME 365
PASSWORD_REUSE_MAX 10
PASSWORD_VERIFY_FUNCTION ora12c_strong_verify_fun;
ALTER USER app_user PROFILE app_profile;
四、權限模型核心概念
- 系統權限:`CREATE SESSION`, `CREATE TABLE`, `DROP ANY TABLE`, `SELECT ANY DICTIONARY`... 共 200+ 種。
- 物件權限:`SELECT`, `INSERT`, `UPDATE`, `DELETE`, `EXECUTE`, `INDEX`, `REFERENCES`... 針對特定物件。
- 角色:權限集合,支援 `GRANT ROLE TO ROLE` (12c+ 支援多層)。預設角色:`CONNECT`, `RESOURCE`, `DBA` (12c+ `CONNECT` 僅含 `CREATE SESSION`)。
- PDB 本地/共用使用者** (12c+):`C##` 開頭為共用使用者,無前綴為本地使用者。
五、審計與安全加固
-- 所有使用者狀態
SELECT username, account_status, lock_date, expiry_date, default_tablespace, profile
FROM dba_users
ORDER BY username;
-- 使用者擁有的系統權限/角色
SELECT * FROM dba_sys_privs WHERE grantee = 'APP_USER';
SELECT * FROM dba_role_privs WHERE grantee = 'APP_USER';
-- 使用者物件權限
SELECT * FROM dba_tab_privs WHERE grantee = 'APP_USER';
核心原則:最小權限原則 — 僅授予業務必需權限;角色化管理 — 避免直接 GRANT 系統權限給使用者;審計一切敏感操作 — 事後可追溯。
- 上一篇文章: Oracle 基礎:表空間 核心概念、三大類型、建立管理與最佳實踐
- 下一篇文章: Oracle 基礎:資料型別完整指南 — 字元、數值、日期時間、LOB、ROWID 與選型建議
Copyright ©
程式碼之家 All Rights Reserved