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

Oracle 基礎:使用者管理核心知識 — 內建帳號、權限模型、建立授權與審計實務

     編輯:Oracle 教學

Oracle 基礎:使用者管理核心知識

一、三大預設內建帳號

二、其他常見系統帳號 (11g/12c)

帳號角色定位認證方式核心職責安全建議
SYS超級使用者 / 資料字典擁有者**僅能** AS SYSDBA / AS SYSOPER 登入維護系統核心物件 (OBJ$, TAB$, COL$...)、執行核心腳本嚴禁建立業務物件;密碼極高強度;啟用 O/S 認證輔助
SYSTEM系統管理員 (DBA 權限)NORMAL (密碼) 登入日常管理:用戶/權限/儲存/監控/EM 操作嚴禁建立業務物件;定期輪換密碼;審計所有操作
SCOTT教學/測試範例帳號NORMAL (密碼 tiger)提供 EMP, DEPT, SALGRADE, BONUS 範例表**生產環境必須鎖定/刪除**;預設密碼極弱
帳號用途預設狀態備註
DBSNMPEnterprise Manager 監控代理OPEN需 DBSNMP 角色
OUTLNStored Outlines 儲存EXPIRED & LOCKED11g+ 少用
ORDSYS / ORDPLUGINSInterMedia 多媒體EXPIRED & LOCKED非使用多媒體可鎖定
CTXSYSOracle Text 文字搜尋EXPIRED & LOCKED需 Text 選項授權
MDSYSSpatial 空間資料EXPIRED & LOCKED需 Spatial 選項授權
LBACSYSLabel Security (OLS)EXPIRED & LOCKED11g+ 企業版選項
XDBXML DB RepositoryOPEN核心元件,勿鎖定
ANONYMOUSXML DB 匿名存取EXPIRED & LOCKED啟用 XML DB 時可能解鎖
APEX_PUBLIC_USER / APEX_...Application ExpressEXPIRED & 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 系統權限給使用者;審計一切敏感操作 — 事後可追溯。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved