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

Oracle 使用者管理實務手冊:Profile、建立、授權、鎖定、審計

     編輯:Oracle 資料庫基礎

一、Profile 資源限制檔

CREATE PROFILE app_profile LIMIT
  FAILED_LOGIN_ATTEMPTS 5          -- 登入失敗鎖定次數
  PASSWORD_LOCK_TIME 1             -- 鎖定天數
  PASSWORD_LIFE_TIME 90            -- 密碼有效天數
  PASSWORD_REUSE_TIME 365          -- 密碼重用間隔天數
  PASSWORD_REUSE_MAX 10            -- 重用前需更換次數
  SESSIONS_PER_USER 50             -- 單用戶最大並發 Session
  CPU_PER_SESSION UNLIMITED        -- Session CPU 上限 (百分之一秒)
  CPU_PER_CALL 10000               -- 單呼叫 CPU 上限
  CONNECT_TIME 480                 -- 連線總分鐘數
  IDLE_TIME 30;                    -- 閒置分鐘數

二、建立角色與使用者

-- 建立角色
CREATE ROLE app_dba NOT IDENTIFIED;
GRANT DBA, EXP_FULL_DATABASE, IMP_FULL_DATABASE TO app_dba;

-- 建立使用者
CREATE USER app_user IDENTIFIED BY password
  DEFAULT TABLESPACE app_data
  TEMPORARY TABLESPACE app_temp
  PROFILE app_profile
  QUOTA UNLIMITED ON app_data;

-- 授權角色
GRANT app_dba TO app_user WITH ADMIN OPTION;
GRANT UNLIMITED TABLESPACE TO app_user WITH ADMIN OPTION;

-- 個別系統權限
GRANT SELECT ON sys.v_$mystat TO app_user;
GRANT SELECT ON sys.v_$session TO app_user;
GRANT SELECT ON sys.dba_jobs TO app_user;

-- 設定預設角色
ALTER USER app_user DEFAULT ROLE ALL;

三、修改使用者屬性

-- 修改密碼/表空間/Profile/Quota
ALTER USER app_user IDENTIFIED BY new_pass
  DEFAULT TABLESPACE new_data
  TEMPORARY TABLESPACE new_temp
  PROFILE new_profile
  QUOTA 100M ON new_data;

-- 鎖定/解鎖帳號
ALTER USER app_user ACCOUNT LOCK;
ALTER USER app_user ACCOUNT UNLOCK;

-- 強制密碼過期 (下次登入必改)
ALTER USER app_user PASSWORD EXPIRE;

四、刪除使用者

-- 無物件
DROP USER app_user;

-- 有物件 (含級聯刪除)
DROP USER app_user CASCADE;

⚠️ 當前連線中的使用者無法刪除。

五、監控與審計

-- 查看當前 Session
SELECT username, machine, sid, serial#
  FROM v$session
 WHERE username = 'APP_USER';

-- 強制中斷 Session
ALTER SYSTEM KILL SESSION 'sid,serial#';

-- 查看 Session 執行 SQL
SELECT s.username, sq.sql_text
  FROM v$session s, v$sql sq
 WHERE s.sql_address = sq.address
   AND s.username = 'APP_USER';

六、最佳實務建議

  1. 生產環境一律使用 Profile 控制資源與密碼策略。
  2. 應用帳號遵循最小權限原則,僅授 CONNECT, RESOURCE 及必要物件權限。
  3. 定期審計 DBA_USERS、DBA_ROLE_PRIVS、DBA_TAB_PRIVS。
  4. 關鍵帳號 (SYS/SYSTEM) 密碼定期輪換,啟用密碼複雜度驗證函數。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved